diff --git a/addons/account/__openerp__.py b/addons/account/__openerp__.py
index 08122f5af30..e01dbc70f07 100644
--- a/addons/account/__openerp__.py
+++ b/addons/account/__openerp__.py
@@ -104,6 +104,8 @@ module named account_voucher.
'account_invoice_view.xml',
'partner_view.xml',
'data/account_data.xml',
+ 'data/data_financial_report.xml',
+ 'data/data_account_type.xml',
'account_invoice_workflow.xml',
'project/project_view.xml',
'project/project_report.xml',
@@ -121,8 +123,6 @@ module named account_voucher.
'ir_sequence_view.xml',
'company_view.xml',
'board_account_view.xml',
- "wizard/account_report_profit_loss_view.xml",
- "wizard/account_report_balance_sheet_view.xml",
"edi/invoice_action_data.xml",
"account_bank_view.xml",
"account_pre_install.yml"
diff --git a/addons/account/account.py b/addons/account/account.py
index e1f27ff6624..8f5a776cd1e 100644
--- a/addons/account/account.py
+++ b/addons/account/account.py
@@ -130,8 +130,45 @@ account_payment_term_line()
class account_account_type(osv.osv):
_name = "account.account.type"
_description = "Account Type"
+
+ def _get_current_report_type(self, cr, uid, ids, name, arg, context=None):
+ obj_data = self.pool.get('ir.model.data')
+ obj_financial_report = self.pool.get('account.financial.report')
+ res = {}
+ financial_report_ref = {
+ 'asset': obj_financial_report.browse(cr, uid, obj_data.get_object_reference(cr, uid, 'account','account_financial_report_assets0')[1], context=context),
+ 'liability': obj_financial_report.browse(cr, uid, obj_data.get_object_reference(cr, uid, 'account','account_financial_report_liability0')[1], context=context),
+ 'income': obj_financial_report.browse(cr, uid, obj_data.get_object_reference(cr, uid, 'account','account_financial_report_income0')[1], context=context),
+ 'expense': obj_financial_report.browse(cr, uid, obj_data.get_object_reference(cr, uid, 'account','account_financial_report_expense0')[1], context=context),
+ }
+ for record in self.browse(cr, uid, ids, context=context):
+ res[record.id] = 'none'
+ for key, financial_report in financial_report_ref.items():
+ list_ids = [x.id for x in financial_report.account_type_ids]
+ if record.id in list_ids:
+ res[record.id] = key
+ return res
+
+ def _save_report_type(self, cr, uid, account_type_id, field_name, field_value, arg, context=None):
+ obj_data = self.pool.get('ir.model.data')
+ obj_financial_report = self.pool.get('account.financial.report')
+ #unlink if it exists somewhere in the financial reports related to BS or PL
+ financial_report_ref = {
+ 'asset': obj_financial_report.browse(cr, uid, obj_data.get_object_reference(cr, uid, 'account','account_financial_report_assets0')[1], context=context),
+ 'liability': obj_financial_report.browse(cr, uid, obj_data.get_object_reference(cr, uid, 'account','account_financial_report_liability0')[1], context=context),
+ 'income': obj_financial_report.browse(cr, uid, obj_data.get_object_reference(cr, uid, 'account','account_financial_report_income0')[1], context=context),
+ 'expense': obj_financial_report.browse(cr, uid, obj_data.get_object_reference(cr, uid, 'account','account_financial_report_expense0')[1], context=context),
+ }
+ for key, financial_report in financial_report_ref.items():
+ list_ids = [x.id for x in financial_report.account_type_ids]
+ if account_type_id in list_ids:
+ obj_financial_report.write(cr, uid, [financial_report.id], {'account_type_ids': [(3, account_type_id)]})
+ #write it in the good place
+ if field_value != 'none':
+ return obj_financial_report.write(cr, uid, [financial_report_ref[field_value].id], {'account_type_ids': [(4, account_type_id)]})
+
_columns = {
- 'name': fields.char('Account Type', size=64, required=True),
+ 'name': fields.char('Account Type', size=64, required=True, translate=True),
'code': fields.char('Code', size=32, required=True, select=True),
'close_method': fields.selection([('none', 'None'), ('balance', 'Balance'), ('detail', 'Detail'), ('unreconciled', 'Unreconciled')], 'Deferral Method', required=True, help="""Set here the method that will be used to generate the end of year journal entries for all the accounts of this type.
@@ -139,19 +176,16 @@ class account_account_type(osv.osv):
'Balance' will generally be used for cash accounts.
'Detail' will copy each existing journal item of the previous year, even the reconciled ones.
'Unreconciled' will copy only the journal items that were unreconciled on the first day of the new fiscal year."""),
- 'sign': fields.selection([(-1, 'Reverse balance sign'), (1, 'Preserve balance sign')], 'Sign on Reports', required=True, help='For accounts that are typically more debited than credited and that you would like to print as negative amounts in your reports, you should reverse the sign of the balance; e.g.: Expense account. The same applies for accounts that are typically more credited than debited and that you would like to print as positive amounts in your reports; e.g.: Income account.'),
- 'report_type':fields.selection([
- ('none','/'),
- ('income','Profit & Loss (Income Accounts)'),
- ('expense','Profit & Loss (Expense Accounts)'),
- ('asset','Balance Sheet (Asset Accounts)'),
- ('liability','Balance Sheet (Liability Accounts)')
- ],'P&L / BS Category', select=True, readonly=False, help="This field is used to generate legal reports: profit and loss, balance sheet.", required=True),
+ 'report_type': fields.function(_get_current_report_type, fnct_inv=_save_report_type, type='selection', string='P&L / BS Category',
+ selection= [('none','/'),
+ ('income', _('Profit & Loss (Income account)')),
+ ('expense', _('Profit & Loss (Expense account)')),
+ ('asset', _('Balance Sheet (Asset account)')),
+ ('liability', _('Balance Sheet (Liability account)'))], help="This field is used to generate legal reports: profit and loss, balance sheet.", required=True),
'note': fields.text('Description'),
}
_defaults = {
'close_method': 'none',
- 'sign': 1,
'report_type': 'none',
}
_order = "code"
@@ -422,6 +456,7 @@ class account_account(osv.osv):
'user_type': fields.many2one('account.account.type', 'Account Type', required=True,
help="Account Type is used for information purpose, to generate "
"country-specific legal reports, and set the rules to close a fiscal year and generate opening entries."),
+ 'financial_report_ids': fields.many2many('account.financial.report', 'account_account_financial_report', 'account_id', 'report_line_id', 'Financial Reports'),
'parent_id': fields.many2one('account.account', 'Parent', ondelete='cascade', domain=[('type','=','view')]),
'child_parent_ids': fields.one2many('account.account','parent_id','Children'),
'child_consol_ids': fields.many2many('account.account', 'account_account_consol_rel', 'child_id', 'parent_id', 'Consolidated Children'),
@@ -771,7 +806,9 @@ class account_journal(osv.osv):
def create(self, cr, uid, vals, context=None):
if not 'sequence_id' in vals or not vals['sequence_id']:
- vals.update({'sequence_id': self.create_sequence(cr, uid, vals, context)})
+ # if we have the right to create a journal, we should be able to
+ # create it's sequence.
+ vals.update({'sequence_id': self.create_sequence(cr, 1, vals, context)})
return super(account_journal, self).create(cr, uid, vals, context)
def name_get(self, cr, user, ids, context=None):
@@ -2422,6 +2459,7 @@ class account_account_template(osv.osv):
'user_type': fields.many2one('account.account.type', 'Account Type', required=True,
help="These types are defined according to your country. The type contains more information "\
"about the account and its specificities."),
+ 'financial_report_ids': fields.many2many('account.financial.report', 'account_template_financial_report', 'account_template_id', 'report_line_id', 'Financial Reports'),
'reconcile': fields.boolean('Allow Reconciliation', help="Check this option if you want the user to reconcile entries in this account."),
'shortcut': fields.char('Shortcut', size=12),
'note': fields.text('Note'),
@@ -2429,6 +2467,7 @@ class account_account_template(osv.osv):
'child_parent_ids':fields.one2many('account.account.template', 'parent_id', 'Children'),
'tax_ids': fields.many2many('account.tax.template', 'account_account_template_tax_rel', 'account_id', 'tax_id', 'Default Taxes'),
'nocreate': fields.boolean('Optional create', help="If checked, the new chart of accounts will not contain this by default."),
+ 'chart_template_id': fields.many2one('account.chart.template', 'Chart Template', help="This optional field allow you to link an account template to a specific chart template that may differ from the one its root parent belongs to. This allow you to define chart templates that extend another and complete it with few new accounts (You don't need to define the whole structure that is common to both several times)."),
}
_defaults = {
@@ -2465,6 +2504,60 @@ class account_account_template(osv.osv):
res.append((record['id'],name ))
return res
+ def generate_account(self, cr, uid, chart_template_id, tax_template_ref, acc_template_ref, code_digits, company_id, context=None):
+ """
+ This method for generating accounts from templates.
+
+ :param chart_template_id: id of the chart template chosen in the wizard
+ :param tax_template_ref: Taxes templates reference for write taxes_id in account_account.
+ :paramacc_template_ref: dictionary with the mappping between the account templates and the real accounts.
+ :param code_digits: number of digits got from wizard.multi.charts.accounts, this is use for account code.
+ :param company_id: company_id selected from wizard.multi.charts.accounts.
+ :returns: return acc_template_ref for reference purpose.
+ :rtype: dict
+ """
+ if context is None:
+ context = {}
+ obj_acc = self.pool.get('account.account')
+ company_name = self.pool.get('res.company').browse(cr, uid, company_id, context=context).name
+ template = self.pool.get('account.chart.template').browse(cr, uid, chart_template_id, context=context)
+ #deactivate the parent_store functionnality on account_account for rapidity purpose
+ ctx = context.copy()
+ ctx.update({'defer_parent_store_computation': True})
+ children_acc_template = self.search(cr, uid, ['|', ('chart_template_id','=', [chart_template_id]),'&',('parent_id','child_of', [template.account_root_id.id]),('chart_template_id','=', False), ('nocreate','!=',True)], order='id')
+ for account_template in self.browse(cr, uid, children_acc_template, context=context):
+ # skip the root of COA if it's not the main one
+ if (template.account_root_id.id == account_template.id) and template.parent_id:
+ continue
+ tax_ids = []
+ for tax in account_template.tax_ids:
+ tax_ids.append(tax_template_ref[tax.id])
+
+ code_main = account_template.code and len(account_template.code) or 0
+ code_acc = account_template.code or ''
+ if code_main > 0 and code_main <= code_digits and account_template.type != 'view':
+ code_acc = str(code_acc) + (str('0'*(code_digits-code_main)))
+ vals={
+ 'name': (template.account_root_id.id == account_template.id) and company_name or account_template.name,
+ 'currency_id': account_template.currency_id and account_template.currency_id.id or False,
+ 'code': code_acc,
+ 'type': account_template.type,
+ 'user_type': account_template.user_type and account_template.user_type.id or False,
+ 'reconcile': account_template.reconcile,
+ 'shortcut': account_template.shortcut,
+ 'note': account_template.note,
+ 'financial_report_ids': account_template.financial_report_ids and [(6,0,[x.id for x in account_template.financial_report_ids])] or False,
+ 'parent_id': account_template.parent_id and ((account_template.parent_id.id in acc_template_ref) and acc_template_ref[account_template.parent_id.id]) or False,
+ 'tax_ids': [(6,0,tax_ids)],
+ 'company_id': company_id,
+ }
+ new_account = obj_acc.create(cr, uid, vals, context=ctx)
+ acc_template_ref[account_template.id] = new_account
+
+ #reactivate the parent_store functionnality on account_account
+ obj_acc._parent_store_compute(cr)
+ return acc_template_ref
+
account_account_template()
class account_add_tmpl_wizard(osv.osv_memory):
@@ -2542,6 +2635,41 @@ class account_tax_code_template(osv.osv):
'notprintable': False,
}
+ def generate_tax_code(self, cr, uid, tax_code_root_id, company_id, context=None):
+ '''
+ This function generates the tax codes from the templates of tax code that are children of the given one passed
+ in argument. Then it returns a dictionary with the mappping between the templates and the real objects.
+
+ :param tax_code_root_id: id of the root of all the tax code templates to process
+ :param company_id: id of the company the wizard is running for
+ :returns: dictionary with the mappping between the templates and the real objects.
+ :rtype: dict
+ '''
+ obj_tax_code_template = self.pool.get('account.tax.code.template')
+ obj_tax_code = self.pool.get('account.tax.code')
+ tax_code_template_ref = {}
+ company = self.pool.get('res.company').browse(cr, uid, company_id, context=context)
+
+ #find all the children of the tax_code_root_id
+ children_tax_code_template = obj_tax_code_template.search(cr, uid, [('parent_id','child_of',[tax_code_root_id])], order='id')
+ for tax_code_template in obj_tax_code_template.browse(cr, uid, children_tax_code_template, context=context):
+ vals = {
+ 'name': (tax_code_root_id == tax_code_template.id) and company.name or tax_code_template.name,
+ 'code': tax_code_template.code,
+ 'info': tax_code_template.info,
+ 'parent_id': tax_code_template.parent_id and ((tax_code_template.parent_id.id in tax_code_template_ref) and tax_code_template_ref[tax_code_template.parent_id.id]) or False,
+ 'company_id': company_id,
+ 'sign': tax_code_template.sign,
+ }
+ #check if this tax code already exists
+ rec_list = obj_tax_code.search(cr, uid, [('name', '=', vals['name']),('code', '=', vals['code']),('company_id', '=', vals['company_id'])], context=context)
+ if not rec_list:
+ #if not yet, create it
+ new_tax_code = obj_tax_code.create(cr, uid, vals)
+ #recording the new tax code to do the mapping
+ tax_code_template_ref[tax_code_template.id] = new_tax_code
+ return tax_code_template_ref
+
def name_get(self, cr, uid, ids, context=None):
if not ids:
return []
@@ -2565,19 +2693,29 @@ class account_chart_template(osv.osv):
_columns={
'name': fields.char('Name', size=64, required=True),
- 'account_root_id': fields.many2one('account.account.template','Root Account',required=True,domain=[('parent_id','=',False)]),
- 'tax_code_root_id': fields.many2one('account.tax.code.template','Root Tax Code',required=True,domain=[('parent_id','=',False)]),
+ 'parent_id': fields.many2one('account.chart.template', 'Parent Chart Template'),
+ 'code_digits': fields.integer('# of Digits', required=True, help="No. of Digits to use for account code"),
+ 'visible': fields.boolean('Can be Visible?', help="Set this to False if you don't want this template to be used actively in the wizard that generate Chart of Accounts from templates, this is useful when you want to generate accounts of this template only when loading its child template."),
+ 'complete_tax_set': fields.boolean('Complete Set of Taxes', help='This boolean helps you to choose if you want to propose to the user to encode the sale and purchase rates or choose from list of taxes. This last choice assumes that the set of tax defined on this template is complete'),
+ 'account_root_id': fields.many2one('account.account.template', 'Root Account', domain=[('parent_id','=',False)]),
+ 'tax_code_root_id': fields.many2one('account.tax.code.template', 'Root Tax Code', domain=[('parent_id','=',False)]),
'tax_template_ids': fields.one2many('account.tax.template', 'chart_template_id', 'Tax Template List', help='List of all the taxes that have to be installed by the wizard'),
- 'bank_account_view_id': fields.many2one('account.account.template','Bank Account',required=True),
- 'property_account_receivable': fields.many2one('account.account.template','Receivable Account'),
- 'property_account_payable': fields.many2one('account.account.template','Payable Account'),
- 'property_account_expense_categ': fields.many2one('account.account.template','Expense Category Account'),
- 'property_account_income_categ': fields.many2one('account.account.template','Income Category Account'),
- 'property_account_expense': fields.many2one('account.account.template','Expense Account on Product Template'),
- 'property_account_income': fields.many2one('account.account.template','Income Account on Product Template'),
+ 'bank_account_view_id': fields.many2one('account.account.template', 'Bank Account'),
+ 'property_account_receivable': fields.many2one('account.account.template', 'Receivable Account'),
+ 'property_account_payable': fields.many2one('account.account.template', 'Payable Account'),
+ 'property_account_expense_categ': fields.many2one('account.account.template', 'Expense Category Account'),
+ 'property_account_income_categ': fields.many2one('account.account.template', 'Income Category Account'),
+ 'property_account_expense': fields.many2one('account.account.template', 'Expense Account on Product Template'),
+ 'property_account_income': fields.many2one('account.account.template', 'Income Account on Product Template'),
'property_reserve_and_surplus_account': fields.many2one('account.account.template', 'Reserve and Profit/Loss Account', domain=[('type', '=', 'payable')], help='This Account is used for transferring Profit/Loss(If It is Profit: Amount will be added, Loss: Amount will be deducted.), Which is calculated from Profilt & Loss Report'),
- 'property_account_income_opening': fields.many2one('account.account.template','Opening Entries Income Account'),
- 'property_account_expense_opening': fields.many2one('account.account.template','Opening Entries Expense Account'),
+ 'property_account_income_opening': fields.many2one('account.account.template', 'Opening Entries Income Account'),
+ 'property_account_expense_opening': fields.many2one('account.account.template', 'Opening Entries Expense Account'),
+ }
+
+ _defaults = {
+ 'visible': True,
+ 'code_digits': 6,
+ 'complete_tax_set': True,
}
account_chart_template()
@@ -2655,6 +2793,61 @@ class account_tax_template(osv.osv):
}
_order = 'sequence'
+ def _generate_tax(self, cr, uid, tax_templates, tax_code_template_ref, company_id, context=None):
+ """
+ This method generate taxes from templates.
+
+ :param tax_templates: list of browse record of the tax templates to process
+ :param tax_code_template_ref: Taxcode templates reference.
+ :param company_id: id of the company the wizard is running for
+ :returns:
+ {
+ 'tax_template_to_tax': mapping between tax template and the newly generated taxes corresponding,
+ 'account_dict': dictionary containing a to-do list with all the accounts to assign on new taxes
+ }
+ """
+ if context is None:
+ context = {}
+ res = {}
+ todo_dict = {}
+ tax_template_to_tax = {}
+ for tax in tax_templates:
+ vals_tax = {
+ 'name':tax.name,
+ 'sequence': tax.sequence,
+ 'amount': tax.amount,
+ 'type': tax.type,
+ 'applicable_type': tax.applicable_type,
+ 'domain': tax.domain,
+ 'parent_id': tax.parent_id and ((tax.parent_id.id in tax_template_to_tax) and tax_template_to_tax[tax.parent_id.id]) or False,
+ 'child_depend': tax.child_depend,
+ 'python_compute': tax.python_compute,
+ 'python_compute_inv': tax.python_compute_inv,
+ 'python_applicable': tax.python_applicable,
+ 'base_code_id': tax.base_code_id and ((tax.base_code_id.id in tax_code_template_ref) and tax_code_template_ref[tax.base_code_id.id]) or False,
+ 'tax_code_id': tax.tax_code_id and ((tax.tax_code_id.id in tax_code_template_ref) and tax_code_template_ref[tax.tax_code_id.id]) or False,
+ 'base_sign': tax.base_sign,
+ 'tax_sign': tax.tax_sign,
+ 'ref_base_code_id': tax.ref_base_code_id and ((tax.ref_base_code_id.id in tax_code_template_ref) and tax_code_template_ref[tax.ref_base_code_id.id]) or False,
+ 'ref_tax_code_id': tax.ref_tax_code_id and ((tax.ref_tax_code_id.id in tax_code_template_ref) and tax_code_template_ref[tax.ref_tax_code_id.id]) or False,
+ 'ref_base_sign': tax.ref_base_sign,
+ 'ref_tax_sign': tax.ref_tax_sign,
+ 'include_base_amount': tax.include_base_amount,
+ 'description': tax.description,
+ 'company_id': company_id,
+ 'type_tax_use': tax.type_tax_use,
+ 'price_include': tax.price_include
+ }
+ new_tax = self.pool.get('account.tax').create(cr, uid, vals_tax)
+ tax_template_to_tax[tax.id] = new_tax
+ #as the accounts have not been created yet, we have to wait before filling these fields
+ todo_dict[new_tax] = {
+ 'account_collected_id': tax.account_collected_id and tax.account_collected_id.id or False,
+ 'account_paid_id': tax.account_paid_id and tax.account_paid_id.id or False,
+ }
+ res.update({'tax_template_to_tax': tax_template_to_tax, 'account_dict': todo_dict})
+ return res
+
account_tax_template()
# Fiscal Position Templates
@@ -2671,6 +2864,38 @@ class account_fiscal_position_template(osv.osv):
'note': fields.text('Notes', translate=True),
}
+ def generate_fiscal_position(self, cr, uid, chart_temp_id, tax_template_ref, acc_template_ref, company_id, context=None):
+ """
+ This method generate Fiscal Position, Fiscal Position Accounts and Fiscal Position Taxes from templates.
+
+ :param chart_temp_id: Chart Template Id.
+ :param taxes_ids: Taxes templates reference for generating account.fiscal.position.tax.
+ :param acc_template_ref: Account templates reference for generating account.fiscal.position.account.
+ :param company_id: company_id selected from wizard.multi.charts.accounts.
+ :returns: True
+ """
+ if context is None:
+ context = {}
+ obj_tax_fp = self.pool.get('account.fiscal.position.tax')
+ obj_ac_fp = self.pool.get('account.fiscal.position.account')
+ obj_fiscal_position = self.pool.get('account.fiscal.position')
+ fp_ids = self.search(cr, uid, [('chart_template_id', '=', chart_temp_id)])
+ for position in self.browse(cr, uid, fp_ids, context=context):
+ new_fp = obj_fiscal_position.create(cr, uid, {'company_id': company_id, 'name': position.name})
+ for tax in position.tax_ids:
+ obj_tax_fp.create(cr, uid, {
+ 'tax_src_id': tax_template_ref[tax.tax_src_id.id],
+ 'tax_dest_id': tax.tax_dest_id and tax_template_ref[tax.tax_dest_id.id] or False,
+ 'position_id': new_fp
+ })
+ for acc in position.account_ids:
+ obj_ac_fp.create(cr, uid, {
+ 'account_src_id': acc_template_ref[acc.account_src_id.id],
+ 'account_dest_id': acc_template_ref[acc.account_dest_id.id],
+ 'position_id': new_fp
+ })
+ return True
+
account_fiscal_position_template()
class account_fiscal_position_tax_template(osv.osv):
@@ -2724,6 +2949,7 @@ class account_financial_report(osv.osv):
return res
def _get_balance(self, cr, uid, ids, name, args, context=None):
+ account_obj = self.pool.get('account.account')
res = {}
res_all = {}
for report in self.browse(cr, uid, ids, context=context):
@@ -2734,6 +2960,12 @@ class account_financial_report(osv.osv):
# it's the sum of balance of the linked accounts
for a in report.account_ids:
balance += a.balance
+ elif report.type == 'account_type':
+ # it's the sum of balance of the leaf accounts with such an account type
+ report_types = [x.id for x in report.account_type_ids]
+ account_ids = account_obj.search(cr, uid, [('user_type','in', report_types), ('type','!=','view')], context=context)
+ for a in account_obj.browse(cr, uid, account_ids, context=context):
+ balance += a.balance
elif report.type == 'account_report' and report.account_report_id:
# it's the amount of the linked report
res2 = self._get_balance(cr, uid, [report.account_report_id.id], 'balance', False, context=context)
@@ -2756,7 +2988,6 @@ class account_financial_report(osv.osv):
'parent_id': fields.many2one('account.financial.report', 'Parent'),
'children_ids': fields.one2many('account.financial.report', 'parent_id', 'Account Report'),
'sequence': fields.integer('Sequence'),
- 'note': fields.text('Notes'),
'balance': fields.function(_get_balance, 'Balance'),
'level': fields.function(_get_level, string='Level', store=True, type='integer'),
'type': fields.selection([
@@ -2766,13 +2997,20 @@ class account_financial_report(osv.osv):
('account_report','Report Value'),
],'Type'),
'account_ids': fields.many2many('account.account', 'account_account_financial_report', 'report_line_id', 'account_id', 'Accounts'),
- 'display_detail': fields.boolean('Display details', help='Display every account with its balance instead of the sum.'),
+ 'display_detail': fields.selection([
+ ('no_detail','No detail'),
+ ('detail_flat','Display children flat'),
+ ('detail_with_hierarchy','Display children with hierarchy')
+ ], 'Display details'),
'account_report_id': fields.many2one('account.financial.report', 'Report Value'),
'account_type_ids': fields.many2many('account.account.type', 'account_account_financial_report_type', 'report_id', 'account_type_id', 'Account Types'),
+ 'sign': fields.selection([(-1, 'Reverse balance sign'), (1, 'Preserve balance sign')], 'Sign on Reports', required=True, help='For accounts that are typically more debited than credited and that you would like to print as negative amounts in your reports, you should reverse the sign of the balance; e.g.: Expense account. The same applies for accounts that are typically more credited than debited and that you would like to print as positive amounts in your reports; e.g.: Income account.'),
}
_defaults = {
'type': 'sum',
+ 'display_detail': 'detail_flat',
+ 'sign': 1,
}
account_financial_report()
@@ -2805,66 +3043,64 @@ class wizard_multi_charts_accounts(osv.osv_memory):
'seq_journal':fields.boolean('Separated Journal Sequences', help="Check this box if you want to use a different sequence for each created journal. Otherwise, all will use the same sequence."),
"sale_tax": fields.many2one("account.tax.template", "Default Sale Tax"),
"purchase_tax": fields.many2one("account.tax.template", "Default Purchase Tax"),
+ 'sale_tax_rate': fields.float('Sales Tax(%)'),
+ 'purchase_tax_rate': fields.float('Purchase Tax(%)'),
+ 'complete_tax_set': fields.boolean('Complete Set of Taxes', help='This boolean helps you to choose if you want to propose to the user to encode the sales and purchase rates or use the usual m2o fields. This last choice assumes that the set of tax defined for the chosen template is complete'),
}
def onchange_chart_template_id(self, cr, uid, ids, chart_template_id=False, context=None):
res = {}
- res['value'] = {}
- res['value']["sale_tax"] = False
- res['value']["purchase_tax"] = False
+ tax_templ_obj = self.pool.get('account.tax.template')
+ res['value'] = {'complete_tax_set': False, 'sale_tax': False, 'purchase_tax': False}
if chart_template_id:
- # default tax is given by the lowest sequence. For same sequence we will take the latest created as it will be the case for tax created while installing the generic chart of accounts
- sale_tax_ids = self.pool.get('account.tax.template').search(cr, uid, [("chart_template_id"
- , "=", chart_template_id), ('type_tax_use', 'in', ('sale','all'))], order="sequence, id desc")
- purchase_tax_ids = self.pool.get('account.tax.template').search(cr, uid, [("chart_template_id"
- , "=", chart_template_id), ('type_tax_use', 'in', ('purchase','all'))], order="sequence, id desc")
+ data = self.pool.get('account.chart.template').browse(cr, uid, chart_template_id, context=context)
+ res['value'].update({'complete_tax_set': data.complete_tax_set})
+ if data.complete_tax_set:
+ # default tax is given by the lowest sequence. For same sequence we will take the latest created as it will be the case for tax created while isntalling the generic chart of account
+ sale_tax_ids = tax_templ_obj.search(cr, uid, [("chart_template_id"
+ , "=", chart_template_id), ('type_tax_use', 'in', ('sale','all'))], order="sequence, id desc")
+ purchase_tax_ids = tax_templ_obj.search(cr, uid, [("chart_template_id"
+ , "=", chart_template_id), ('type_tax_use', 'in', ('purchase','all'))], order="sequence, id desc")
+ res['value'].update({'sale_tax': sale_tax_ids and sale_tax_ids[0] or False, 'purchase_tax': purchase_tax_ids and purchase_tax_ids[0] or False})
- res['value']["sale_tax"] = sale_tax_ids and sale_tax_ids[0] or False
- res['value']["purchase_tax"] = purchase_tax_ids and purchase_tax_ids[0] or False
+ if data.code_digits:
+ res['value'].update({'code_digits': data.code_digits})
return res
- def _get_purchase_tax(self, cr, uid, context=None):
- ids = self.pool.get('account.chart.template').search(cr, uid, [], context=context)
+
+ def default_get(self, cr, uid, fields, context=None):
+ res = super(wizard_multi_charts_accounts, self).default_get(cr, uid, fields, context=context)
+ tax_templ_obj = self.pool.get('account.tax.template')
+
+ if 'bank_accounts_id' in fields:
+ res.update({'bank_accounts_id': [{'acc_name': _('Current'), 'account_type': 'bank'},
+ {'acc_name': _('Deposit'), 'account_type': 'bank'},
+ {'acc_name': _('Cash'), 'account_type': 'cash'}]})
+ if 'company_id' in fields:
+ res.update({'company_id': self.pool.get('res.users').browse(cr, uid, [uid], context=context)[0].company_id.id})
+ if 'seq_journal' in fields:
+ res.update({'seq_journal': True})
+
+ ids = self.pool.get('account.chart.template').search(cr, uid, [('visible', '=', True)], context=context)
if ids:
- chart_template_id = ids[0]
- purchase_tax_ids = self.pool.get('account.tax.template').search(cr, uid, [("chart_template_id"
- , "=", chart_template_id), ('type_tax_use', 'in', ('purchase','all'))], order="sequence")
- return purchase_tax_ids and purchase_tax_ids[0] or False
- return False
-
- def _get_sale_tax(self, cr, uid, context=None):
- ids = self.pool.get('account.chart.template').search(cr, uid, [], context=context)
- if ids:
- chart_template_id = ids[0]
- sale_tax_ids = self.pool.get('account.tax.template').search(cr, uid, [("chart_template_id"
- , "=", chart_template_id), ('type_tax_use', 'in', ('sale','all'))], order="sequence")
- return sale_tax_ids and sale_tax_ids[0] or False
- return False
-
- def _get_chart(self, cr, uid, context=None):
- ids = self.pool.get('account.chart.template').search(cr, uid, [], context=context)
- if ids:
- return ids[0]
- return False
-
- def _get_default_accounts(self, cr, uid, context=None):
- return [
- {'acc_name': _('Cash'),'account_type':'cash'}
- ]
-
- _defaults = {
- 'company_id': lambda self, cr, uid, c: self.pool.get('res.users').browse(cr, uid, [uid], c)[0].company_id.id,
- 'chart_template_id': _get_chart,
- 'bank_accounts_id': _get_default_accounts,
- 'sale_tax': _get_sale_tax,
- 'purchase_tax': _get_purchase_tax,
- 'code_digits': 6,
- 'seq_journal': True
- }
+ if 'chart_template_id' in fields:
+ res.update({'chart_template_id': ids[0]})
+ if 'sale_tax' in fields:
+ sale_tax_ids = tax_templ_obj.search(cr, uid, [("chart_template_id"
+ , "=", ids[0]), ('type_tax_use', 'in', ('sale','all'))], order="sequence")
+ res.update({'sale_tax': sale_tax_ids and sale_tax_ids[0] or False})
+ if 'purchase_tax' in fields:
+ purchase_tax_ids = tax_templ_obj.search(cr, uid, [("chart_template_id"
+ , "=", ids[0]), ('type_tax_use', 'in', ('purchase','all'))], order="sequence")
+ res.update({'purchase_tax': purchase_tax_ids and purchase_tax_ids[0] or False})
+ return res
def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False):
res = super(wizard_multi_charts_accounts, self).fields_view_get(cr, uid, view_id=view_id, view_type=view_type, context=context, toolbar=toolbar,submenu=False)
cmp_select = []
- company_ids = self.pool.get('res.company').search(cr, uid, [], context=context)
+ acc_template_obj = self.pool.get('account.chart.template')
+ company_obj = self.pool.get('res.company')
+
+ company_ids = company_obj.search(cr, uid, [], context=context)
#display in the widget selection of companies, only the companies that haven't been configured yet (but don't care about the demo chart of accounts)
cr.execute("SELECT company_id FROM account_account WHERE active = 't' AND account_account.parent_id IS NULL AND name != %s", ("Chart For Automated Tests",))
configured_cmp = [r[0] for r in cr.fetchall()]
@@ -2874,305 +3110,118 @@ class wizard_multi_charts_accounts(osv.osv_memory):
res['fields'][field]['domain'] = [('id','in',unconfigured_cmp)]
res['fields'][field]['selection'] = [('', '')]
if unconfigured_cmp:
- cmp_select = [(line.id, line.name) for line in self.pool.get('res.company').browse(cr, uid, unconfigured_cmp)]
+ cmp_select = [(line.id, line.name) for line in company_obj.browse(cr, uid, unconfigured_cmp)]
res['fields'][field]['selection'] = cmp_select
return res
- def execute(self, cr, uid, ids, context=None):
- obj_multi = self.browse(cr, uid, ids[0])
- obj_acc = self.pool.get('account.account')
- obj_acc_tax = self.pool.get('account.tax')
+ def check_created_journals(self, cr, uid, vals_journal, company_id, context=None):
+ """
+ This method used for checking journals already created or not. If not then create new journal.
+ """
obj_journal = self.pool.get('account.journal')
- obj_acc_template = self.pool.get('account.account.template')
- obj_fiscal_position_template = self.pool.get('account.fiscal.position.template')
- obj_fiscal_position = self.pool.get('account.fiscal.position')
+ rec_list = obj_journal.search(cr, uid, [('name','=', vals_journal['name']),('company_id', '=', company_id)], context=context)
+ if not rec_list:
+ obj_journal.create(cr, uid, vals_journal, context=context)
+ return True
+
+ def generate_journals(self, cr, uid, chart_template_id, acc_template_ref, company_id, context=None):
+ """
+ This method is used for creating journals.
+
+ :param chart_temp_id: Chart Template Id.
+ :param acc_template_ref: Account templates reference.
+ :param company_id: company_id selected from wizard.multi.charts.accounts.
+ :returns: True
+ """
+ journal_data = self._prepare_all_journals(cr, uid, chart_template_id, acc_template_ref, company_id, context=context)
+ for vals_journal in journal_data:
+ self.check_created_journals(cr, uid, vals_journal, company_id, context=context)
+ return True
+
+ def _prepare_all_journals(self, cr, uid, chart_template_id, acc_template_ref, company_id, context=None):
+ def _get_analytic_journal(journal_type):
+ # Get the analytic journal
+ analytic_journal_ids = []
+ if journal_type in ('sale', 'sale_refund'):
+ analytical_journal_ids = analytic_journal_obj.search(cr, uid, [('type','=','sale')], context=context)
+ elif journal_type in ('purchase', 'purchase_refund'):
+ analytical_journal_ids = analytic_journal_obj.search(cr, uid, [('type','=','purchase')], context=context)
+ elif journal_type == 'general':
+ analytical_journal_ids = analytic_journal_obj.search(cr, uid, [('type', '=', 'situation')], context=context)
+ return analytic_journal_ids and analytic_journal_ids[0] or False
+
+ def _get_default_account(journal_type, type='debit'):
+ # Get the default accounts
+ default_account = False
+ if journal_type in ('sale', 'sale_refund'):
+ default_account = acc_template_ref.get(template.property_account_income_categ.id)
+ elif journal_type in ('purchase', 'purchase_refund'):
+ default_account = acc_template_ref.get(template.property_account_expense_categ.id)
+ elif journal_type == 'situation':
+ if type == 'debit':
+ default_account = acc_template_ref.get(template.property_account_expense_opening.id)
+ else:
+ default_account = acc_template_ref.get(template.property_account_income_opening.id)
+ return default_account
+
+ def _get_view_id(journal_type):
+ # Get the journal views
+ if journal_type in ('general', 'situation'):
+ data = obj_data.get_object_reference(cr, uid, 'account', 'account_journal_view')
+ elif journal_type in ('sale_refund', 'purchase_refund'):
+ data = obj_data.get_object_reference(cr, uid, 'account', 'account_sp_refund_journal_view')
+ else:
+ data = obj_data.get_object_reference(cr, uid, 'account', 'account_sp_journal_view')
+ return data and data[1] or False
+
+ journal_names = {
+ 'sale': _('Sales Journal'),
+ 'purchase': _('Purchase Journal'),
+ 'sale_refund': _('Sales Refund Journal'),
+ 'purchase_refund': _('Purchase Refund Journal'),
+ 'general': _('Miscellaneous Journal'),
+ 'situation': _('Opening Entries Journal'),
+ }
+ journal_codes = {
+ 'sale': _('SAJ'),
+ 'purchase': _('EXJ'),
+ 'sale_refund': _('SCNJ'),
+ 'purchase_refund': _('ECNJ'),
+ 'general': _('MISC'),
+ 'situation': _('OPEJ'),
+ }
+
obj_data = self.pool.get('ir.model.data')
analytic_journal_obj = self.pool.get('account.analytic.journal')
- obj_tax_code = self.pool.get('account.tax.code')
- obj_tax_code_template = self.pool.get('account.tax.code.template')
- ir_values_obj = self.pool.get('ir.values')
- # Creating Account
- obj_acc_root = obj_multi.chart_template_id.account_root_id
- tax_code_root_id = obj_multi.chart_template_id.tax_code_root_id.id
- company_id = obj_multi.company_id.id
+ template = self.pool.get('account.chart.template').browse(cr, uid, chart_template_id, context=context)
- #new code
- acc_template_ref = {}
- tax_template_ref = {}
- tax_code_template_ref = {}
- todo_dict = {}
-
- #create all the tax code
- children_tax_code_template = obj_tax_code_template.search(cr, uid, [('parent_id','child_of',[tax_code_root_id])], order='id')
- children_tax_code_template.sort()
- for tax_code_template in obj_tax_code_template.browse(cr, uid, children_tax_code_template, context=context):
+ journal_data = []
+ for journal_type in ['sale', 'purchase', 'sale_refund', 'purchase_refund', 'general', 'situation']:
vals = {
- 'name': (tax_code_root_id == tax_code_template.id) and obj_multi.company_id.name or tax_code_template.name,
- 'code': tax_code_template.code,
- 'info': tax_code_template.info,
- 'parent_id': tax_code_template.parent_id and ((tax_code_template.parent_id.id in tax_code_template_ref) and tax_code_template_ref[tax_code_template.parent_id.id]) or False,
+ 'type': journal_type,
+ 'name': journal_names[journal_type],
+ 'code': journal_codes[journal_type],
'company_id': company_id,
- 'sign': tax_code_template.sign,
+ 'centralisation': journal_type == 'situation',
+ 'view_id': _get_view_id(journal_type),
+ 'analytic_journal_id': _get_analytic_journal(journal_type),
+ 'default_credit_account_id': _get_default_account(journal_type, 'credit'),
+ 'default_debit_account_id': _get_default_account(journal_type, 'debit'),
}
- new_tax_code = obj_tax_code.create(cr, uid, vals)
- #recording the new tax code to do the mapping
- tax_code_template_ref[tax_code_template.id] = new_tax_code
+ journal_data.append(vals)
+ return journal_data
- #create all the tax
- tax_template_to_tax = {}
- for tax in obj_multi.chart_template_id.tax_template_ids:
- #create it
- vals_tax = {
- 'name':tax.name,
- 'sequence': tax.sequence,
- 'amount':tax.amount,
- 'type':tax.type,
- 'applicable_type': tax.applicable_type,
- 'domain':tax.domain,
- 'parent_id': tax.parent_id and ((tax.parent_id.id in tax_template_ref) and tax_template_ref[tax.parent_id.id]) or False,
- 'child_depend': tax.child_depend,
- 'python_compute': tax.python_compute,
- 'python_compute_inv': tax.python_compute_inv,
- 'python_applicable': tax.python_applicable,
- 'base_code_id': tax.base_code_id and ((tax.base_code_id.id in tax_code_template_ref) and tax_code_template_ref[tax.base_code_id.id]) or False,
- 'tax_code_id': tax.tax_code_id and ((tax.tax_code_id.id in tax_code_template_ref) and tax_code_template_ref[tax.tax_code_id.id]) or False,
- 'base_sign': tax.base_sign,
- 'tax_sign': tax.tax_sign,
- 'ref_base_code_id': tax.ref_base_code_id and ((tax.ref_base_code_id.id in tax_code_template_ref) and tax_code_template_ref[tax.ref_base_code_id.id]) or False,
- 'ref_tax_code_id': tax.ref_tax_code_id and ((tax.ref_tax_code_id.id in tax_code_template_ref) and tax_code_template_ref[tax.ref_tax_code_id.id]) or False,
- 'ref_base_sign': tax.ref_base_sign,
- 'ref_tax_sign': tax.ref_tax_sign,
- 'include_base_amount': tax.include_base_amount,
- 'description':tax.description,
- 'company_id': company_id,
- 'type_tax_use': tax.type_tax_use,
- 'price_include': tax.price_include
- }
- new_tax = obj_acc_tax.create(cr, uid, vals_tax)
- tax_template_to_tax[tax.id] = new_tax
- #as the accounts have not been created yet, we have to wait before filling these fields
- todo_dict[new_tax] = {
- 'account_collected_id': tax.account_collected_id and tax.account_collected_id.id or False,
- 'account_paid_id': tax.account_paid_id and tax.account_paid_id.id or False,
- }
- tax_template_ref[tax.id] = new_tax
- #deactivate the parent_store functionnality on account_account for rapidity purpose
- ctx = context and context.copy() or {}
- ctx['defer_parent_store_computation'] = True
+ def generate_properties(self, cr, uid, chart_template_id, acc_template_ref, company_id, context=None):
+ """
+ This method used for creating properties.
- children_acc_template = obj_acc_template.search(cr, uid, [('parent_id','child_of',[obj_acc_root.id]),('nocreate','!=',True)])
- children_acc_template.sort()
- for account_template in obj_acc_template.browse(cr, uid, children_acc_template, context=context):
- tax_ids = []
- for tax in account_template.tax_ids:
- tax_ids.append(tax_template_ref[tax.id])
- #create the account_account
-
- dig = obj_multi.code_digits
- code_main = account_template.code and len(account_template.code) or 0
- code_acc = account_template.code or ''
- if code_main>0 and code_main<=dig and account_template.type != 'view':
- code_acc=str(code_acc) + (str('0'*(dig-code_main)))
- vals={
- 'name': (obj_acc_root.id == account_template.id) and obj_multi.company_id.name or account_template.name,
- 'currency_id': account_template.currency_id and account_template.currency_id.id or False,
- 'code': code_acc,
- 'type': account_template.type,
- 'user_type': account_template.user_type and account_template.user_type.id or False,
- 'reconcile': account_template.reconcile,
- 'shortcut': account_template.shortcut,
- 'note': account_template.note,
- 'parent_id': account_template.parent_id and ((account_template.parent_id.id in acc_template_ref) and acc_template_ref[account_template.parent_id.id]) or False,
- 'tax_ids': [(6,0,tax_ids)],
- 'company_id': company_id,
- }
- new_account = obj_acc.create(cr, uid, vals, context=ctx)
- acc_template_ref[account_template.id] = new_account
-
-
- #reactivate the parent_store functionnality on account_account
- obj_acc._parent_store_compute(cr)
-
- for key,value in todo_dict.items():
- if value['account_collected_id'] or value['account_paid_id']:
- obj_acc_tax.write(cr, uid, [key], {
- 'account_collected_id': acc_template_ref.get(value['account_collected_id'], False),
- 'account_paid_id': acc_template_ref.get(value['account_paid_id'], False),
- })
-
- # Creating Journals
- data_id = obj_data.search(cr, uid, [('model','=','account.journal.view'), ('name','=','account_sp_journal_view')])
- data = obj_data.browse(cr, uid, data_id[0], context=context)
- view_id = data.res_id
-
- #Sales Journal
- analytical_sale_ids = analytic_journal_obj.search(cr,uid,[('type','=','sale')])
- analytical_journal_sale = analytical_sale_ids and analytical_sale_ids[0] or False
-
- vals_journal = {
- 'name': _('Sales Journal'),
- 'type': 'sale',
- 'code': _('SAJ'),
- 'view_id': view_id,
- 'company_id': company_id,
- 'analytic_journal_id': analytical_journal_sale,
- }
-
- if obj_multi.chart_template_id.property_account_receivable:
- vals_journal['default_credit_account_id'] = acc_template_ref[obj_multi.chart_template_id.property_account_income_categ.id]
- vals_journal['default_debit_account_id'] = acc_template_ref[obj_multi.chart_template_id.property_account_income_categ.id]
-
- obj_journal.create(cr,uid,vals_journal)
-
- # Purchase Journal
- analytical_purchase_ids = analytic_journal_obj.search(cr,uid,[('type','=','purchase')])
- analytical_journal_purchase = analytical_purchase_ids and analytical_purchase_ids[0] or False
-
- vals_journal = {
- 'name': _('Purchase Journal'),
- 'type': 'purchase',
- 'code': _('EXJ'),
- 'view_id': view_id,
- 'company_id': company_id,
- 'analytic_journal_id': analytical_journal_purchase,
- }
-
- if obj_multi.chart_template_id.property_account_payable:
- vals_journal['default_credit_account_id'] = acc_template_ref[obj_multi.chart_template_id.property_account_expense_categ.id]
- vals_journal['default_debit_account_id'] = acc_template_ref[obj_multi.chart_template_id.property_account_expense_categ.id]
- obj_journal.create(cr,uid,vals_journal)
-
- # Creating Journals Sales Refund and Purchase Refund
- data_id = obj_data.search(cr, uid, [('model', '=', 'account.journal.view'), ('name', '=', 'account_sp_refund_journal_view')], context=context)
- data = obj_data.browse(cr, uid, data_id[0], context=context)
- view_id = data.res_id
-
- #Sales Refund Journal
- vals_journal = {
- 'name': _('Sales Refund Journal'),
- 'type': 'sale_refund',
- 'code': _('SCNJ'),
- 'view_id': view_id,
- 'analytic_journal_id': analytical_journal_sale,
- 'company_id': company_id
- }
-
- if obj_multi.chart_template_id.property_account_receivable:
- vals_journal['default_credit_account_id'] = acc_template_ref[obj_multi.chart_template_id.property_account_income_categ.id]
- vals_journal['default_debit_account_id'] = acc_template_ref[obj_multi.chart_template_id.property_account_income_categ.id]
-
- obj_journal.create(cr, uid, vals_journal, context=context)
-
- # Purchase Refund Journal
- vals_journal = {
- 'name': _('Purchase Refund Journal'),
- 'type': 'purchase_refund',
- 'code': _('ECNJ'),
- 'view_id': view_id,
- 'analytic_journal_id': analytical_journal_purchase,
- 'company_id': company_id
- }
-
- if obj_multi.chart_template_id.property_account_payable:
- vals_journal['default_credit_account_id'] = acc_template_ref[obj_multi.chart_template_id.property_account_expense_categ.id]
- vals_journal['default_debit_account_id'] = acc_template_ref[obj_multi.chart_template_id.property_account_expense_categ.id]
-
- obj_journal.create(cr, uid, vals_journal, context=context)
-
- # Miscellaneous Journal
- data_id = obj_data.search(cr, uid, [('model','=','account.journal.view'), ('name','=','account_journal_view')])
- data = obj_data.browse(cr, uid, data_id[0], context=context)
- view_id = data.res_id
-
- analytical_miscellaneous_ids = analytic_journal_obj.search(cr, uid, [('type', '=', 'situation')], context=context)
- analytical_journal_miscellaneous = analytical_miscellaneous_ids and analytical_miscellaneous_ids[0] or False
-
- vals_journal = {
- 'name': _('Miscellaneous Journal'),
- 'type': 'general',
- 'code': _('MISC'),
- 'view_id': view_id,
- 'analytic_journal_id': analytical_journal_miscellaneous,
- 'company_id': company_id
- }
-
- obj_journal.create(cr, uid, vals_journal, context=context)
-
- # Opening Entries Journal
- if obj_multi.chart_template_id.property_account_income_opening and obj_multi.chart_template_id.property_account_expense_opening:
- vals_journal = {
- 'name': _('Opening Entries Journal'),
- 'type': 'situation',
- 'code': _('OPEJ'),
- 'view_id': view_id,
- 'company_id': company_id,
- 'centralisation': True,
- 'default_credit_account_id': acc_template_ref[obj_multi.chart_template_id.property_account_income_opening.id],
- 'default_debit_account_id': acc_template_ref[obj_multi.chart_template_id.property_account_expense_opening.id]
- }
- obj_journal.create(cr, uid, vals_journal, context=context)
-
- # Bank Journals
- data_id = obj_data.search(cr, uid, [('model','=','account.journal.view'), ('name','=','account_journal_bank_view')])
- data = obj_data.browse(cr, uid, data_id[0], context=context)
- view_id_cash = data.res_id
-
- data_id = obj_data.search(cr, uid, [('model','=','account.journal.view'), ('name','=','account_journal_bank_view_multi')])
- data = obj_data.browse(cr, uid, data_id[0], context=context)
- view_id_cur = data.res_id
- ref_acc_bank = obj_multi.chart_template_id.bank_account_view_id
-
- current_num = 1
- valid = True
- for line in obj_multi.bank_accounts_id:
- #create the account_account for this bank journal
- tmp = line.acc_name
- dig = obj_multi.code_digits
- if not ref_acc_bank.code:
- raise osv.except_osv(_('Configuration Error !'), _('The bank account defined on the selected chart of accounts hasn\'t a code.'))
- while True:
- new_code = str(ref_acc_bank.code.ljust(dig-len(str(current_num)), '0')) + str(current_num)
- ids = obj_acc.search(cr, uid, [('code', '=', new_code), ('company_id', '=', company_id)])
- if not ids:
- break
- else:
- current_num += 1
- vals = {
- 'name': tmp,
- 'currency_id': line.currency_id and line.currency_id.id or False,
- 'code': new_code,
- 'type': 'liquidity',
- 'user_type': account_template.user_type and account_template.user_type.id or False,
- 'reconcile': True,
- 'parent_id': acc_template_ref[ref_acc_bank.id] or False,
- 'company_id': company_id,
- }
- acc_cash_id = obj_acc.create(cr,uid,vals)
-
- #create the bank journal
- vals_journal = {
- 'name': vals['name'],
- 'code': _('BNK') + str(current_num),
- 'type': line.account_type == 'cash' and 'cash' or 'bank',
- 'company_id': company_id,
- 'analytic_journal_id': False,
- 'currency': False,
- }
- if line.currency_id:
- vals_journal['view_id'] = view_id_cur
- vals_journal['currency'] = line.currency_id.id
- else:
- vals_journal['view_id'] = view_id_cash
- vals_journal['default_credit_account_id'] = acc_cash_id
- vals_journal['default_debit_account_id'] = acc_cash_id
- obj_journal.create(cr, uid, vals_journal)
- current_num += 1
- valid = True
-
- #create the properties
+ :param chart_template_id: id of the current chart template for which we need to create properties
+ :param acc_template_ref: Mapping between ids of account templates and real accounts created from them
+ :param company_id: company_id selected from wizard.multi.charts.accounts.
+ :returns: True
+ """
property_obj = self.pool.get('ir.property')
- fields_obj = self.pool.get('ir.model.fields')
-
+ field_obj = self.pool.get('ir.model.fields')
todo_list = [
('property_account_receivable','res.partner','account.account'),
('property_account_payable','res.partner','account.account'),
@@ -3182,61 +3231,322 @@ class wizard_multi_charts_accounts(osv.osv_memory):
('property_account_income','product.template','account.account'),
('property_reserve_and_surplus_account','res.company','account.account')
]
+ template = self.pool.get('account.chart.template').browse(cr, uid, chart_template_id, context=context)
for record in todo_list:
- r = []
- r = property_obj.search(cr, uid, [('name','=', record[0] ),('company_id','=',company_id)])
- account = getattr(obj_multi.chart_template_id, record[0])
- field = fields_obj.search(cr, uid, [('name','=',record[0]),('model','=',record[1]),('relation','=',record[2])])
- vals = {
- 'name': record[0],
- 'company_id': company_id,
- 'fields_id': field[0],
- 'value': account and 'account.account,' + str(acc_template_ref[account.id]) or False,
+ account = getattr(template, record[0])
+ value = account and 'account.account,' + str(acc_template_ref[account.id]) or False
+ if value:
+ field = field_obj.search(cr, uid, [('name', '=', record[0]),('model', '=', record[1]),('relation', '=', record[2])], context=context)
+ vals = {
+ 'name': record[0],
+ 'company_id': company_id,
+ 'fields_id': field[0],
+ 'value': value,
+ }
+ property_ids = property_obj.search(cr, uid, [('name','=', record[0]),('company_id', '=', company_id)], context=context)
+ if property_ids:
+ #the property exist: modify it
+ property_obj.write(cr, uid, property_ids, vals, context=context)
+ else:
+ #create the property
+ property_obj.create(cr, uid, vals, context=context)
+ return True
+
+ def _install_template(self, cr, uid, template_id, company_id, code_digits=None, obj_wizard=None, acc_ref={}, taxes_ref={}, tax_code_ref={}, context=None):
+ '''
+ This function recursively loads the template objects and create the real objects from them.
+
+ :param template_id: id of the chart template to load
+ :param company_id: id of the company the wizard is running for
+ :param code_digits: integer that depicts the number of digits the accounts code should have in the COA
+ :param obj_wizard: the current wizard for generating the COA from the templates
+ :param acc_ref: Mapping between ids of account templates and real accounts created from them
+ :param taxes_ref: Mapping between ids of tax templates and real taxes created from them
+ :param tax_code_ref: Mapping between ids of tax code templates and real tax codes created from them
+ :returns: return a tuple with a dictionary containing
+ * the mapping between the account template ids and the ids of the real accounts that have been generated
+ from them, as first item,
+ * a similar dictionary for mapping the tax templates and taxes, as second item,
+ * a last identical containing the mapping of tax code templates and tax codes
+ :rtype: tuple(dict, dict, dict)
+ '''
+ template = self.pool.get('account.chart.template').browse(cr, uid, template_id, context=context)
+ if template.parent_id:
+ tmp1, tmp2, tmp3 = self._install_template(cr, uid, template.parent_id.id, company_id, code_digits=code_digits, acc_ref=acc_ref, taxes_ref=taxes_ref, tax_code_ref=tax_code_ref, context=context)
+ acc_ref.update(tmp1)
+ taxes_ref.update(tmp2)
+ tax_code_ref.update(tmp3)
+ tmp1, tmp2, tmp3 = self._load_template(cr, uid, template_id, company_id, code_digits=code_digits, obj_wizard=obj_wizard, account_ref=acc_ref, taxes_ref=taxes_ref, tax_code_ref=tax_code_ref, context=context)
+ acc_ref.update(tmp1)
+ taxes_ref.update(tmp2)
+ tax_code_ref.update(tmp3)
+ return acc_ref, taxes_ref, tax_code_ref
+
+ def _load_template(self, cr, uid, template_id, company_id, code_digits=None, obj_wizard=None, account_ref={}, taxes_ref={}, tax_code_ref={}, context=None):
+ '''
+ This function generates all the objects from the templates
+
+ :param template_id: id of the chart template to load
+ :param company_id: id of the company the wizard is running for
+ :param code_digits: integer that depicts the number of digits the accounts code should have in the COA
+ :param obj_wizard: the current wizard for generating the COA from the templates
+ :param acc_ref: Mapping between ids of account templates and real accounts created from them
+ :param taxes_ref: Mapping between ids of tax templates and real taxes created from them
+ :param tax_code_ref: Mapping between ids of tax code templates and real tax codes created from them
+ :returns: return a tuple with a dictionary containing
+ * the mapping between the account template ids and the ids of the real accounts that have been generated
+ from them, as first item,
+ * a similar dictionary for mapping the tax templates and taxes, as second item,
+ * a last identical containing the mapping of tax code templates and tax codes
+ :rtype: tuple(dict, dict, dict)
+ '''
+ template = self.pool.get('account.chart.template').browse(cr, uid, template_id, context=context)
+ obj_tax_code_template = self.pool.get('account.tax.code.template')
+ obj_acc_tax = self.pool.get('account.tax')
+ obj_tax_temp = self.pool.get('account.tax.template')
+ obj_acc_template = self.pool.get('account.account.template')
+ obj_fiscal_position_template = self.pool.get('account.fiscal.position.template')
+
+ # create all the tax code.
+ tax_code_ref.update(obj_tax_code_template.generate_tax_code(cr, uid, template.tax_code_root_id.id, company_id, context=context))
+
+ # Generate taxes from templates.
+ tax_templates = [x for x in template.tax_template_ids]
+ generated_tax_res = obj_tax_temp._generate_tax(cr, uid, tax_templates, tax_code_ref, company_id, context=context)
+ taxes_ref.update(generated_tax_res['tax_template_to_tax'])
+
+ # Generating Accounts from templates.
+ account_template_ref = obj_acc_template.generate_account(cr, uid, template_id, taxes_ref, account_ref, code_digits, company_id, context=context)
+ account_ref.update(account_template_ref)
+
+ # writing account values on tax after creation of accounts
+ for key,value in generated_tax_res['account_dict'].items():
+ if value['account_collected_id'] or value['account_paid_id']:
+ obj_acc_tax.write(cr, uid, [key], {
+ 'account_collected_id': account_ref.get(value['account_collected_id'], False),
+ 'account_paid_id': account_ref.get(value['account_paid_id'], False),
+ })
+
+ # Create Journals
+ self.generate_journals(cr, uid, template_id, account_ref, company_id, context=context)
+
+ # generate properties function
+ self.generate_properties(cr, uid, template_id, account_ref, company_id, context=context)
+
+ # Generate Fiscal Position , Fiscal Position Accounts and Fiscal Position Taxes from templates
+ obj_fiscal_position_template.generate_fiscal_position(cr, uid, template_id, taxes_ref, account_ref, company_id, context=context)
+
+ return account_ref, taxes_ref, tax_code_ref
+
+ def _create_tax_templates_from_rates(self, cr, uid, obj_wizard, company_id, context=None):
+ '''
+ This function checks if the chosen chart template is configured as containing a full set of taxes, and if
+ it's not the case, it creates the templates for account.tax.code and for account.account.tax objects accordingly
+ to the provided sale/purchase rates. Then it saves the new tax templates as default taxes to use for this chart
+ template.
+
+ :param obj_wizard: browse record of wizard to generate COA from templates
+ :param company_id: id of the company for wich the wizard is running
+ :return: True
+ '''
+ obj_tax_code_template = self.pool.get('account.tax.code.template')
+ obj_tax_temp = self.pool.get('account.tax.template')
+ chart_template = obj_wizard.chart_template_id
+ vals = {}
+ # create tax templates and tax code templates from purchase_tax_rate and sale_tax_rate fields
+ if not chart_template.complete_tax_set:
+ tax_data = {
+ 'sale': obj_wizard.sale_tax_rate,
+ 'purchase': obj_wizard.purchase_tax_rate,
}
- if r:
- #the property exist: modify it
- property_obj.write(cr, uid, r, vals)
- else:
- #create the property
- property_obj.create(cr, uid, vals)
+ for tax_type, value in tax_data.items():
+ # don't consider cases where entered value in rates are lower than 0
+ if value >= 0.0:
+ #create the tax code templates for base and tax
+ base_code_vals = {
+ 'name': (tax_type == 'sale' and _('Taxable Sales at %s') or _('Taxable Purchases at %s')) % value,
+ 'code': (tax_type == 'sale' and _('BASE-S-%s') or _('BASE-P-%s')) %value,
+ 'parent_id': chart_template.tax_code_root_id.id,
+ 'company_id': company_id,
+ }
+ new_base_code_id = obj_tax_code_template.create(cr, uid, base_code_vals, context=context)
+ tax_code_vals = {
+ 'name': (tax_type == 'sale' and _('Tax Received at %s') or _('Tax Paid at %s')) % value,
+ 'code': (tax_type == 'sale' and _('TAX-S-%s') or _('TAX-P-%s')) %value,
+ 'parent_id': chart_template.tax_code_root_id.id,
+ 'company_id': company_id,
+ }
+ new_tax_code_id = obj_tax_code_template.create(cr, uid, tax_code_vals, context=context)
+ #create the tax
+ tax_template_id = obj_tax_temp.create(cr, uid, {
+ 'name': _('Tax %s%%') % value,
+ 'amount': value/100,
+ 'base_code_id': new_base_code_id,
+ 'tax_code_id': new_tax_code_id,
+ 'ref_base_code_id': new_base_code_id,
+ 'ref_tax_code_id': new_tax_code_id,
+ 'type_tax_use': tax_type,
+ 'type': 'percent',
+ 'sequence': 0,
+ 'chart_template_id': chart_template.id or False,
+ }, context=context)
+ #record this new tax_template as default for this chart template
+ field_name = tax_type == 'sale' and 'sale_tax' or 'purchase_tax'
+ vals[field_name] = tax_template_id
+ self.write(cr, uid, obj_wizard.id, vals, context=context)
+ return True
- fp_ids = obj_fiscal_position_template.search(cr, uid, [('chart_template_id', '=', obj_multi.chart_template_id.id)])
+ def execute(self, cr, uid, ids, context=None):
+ '''
+ This function is called at the confirmation of the wizard to generate the COA from the templates. It will read
+ all the provided information to create the accounts, the banks, the journals, the taxes, the tax codes, the
+ accounting properties... accordingly for the chosen company.
+ '''
+ ir_values_obj = self.pool.get('ir.values')
+ obj_wizard = self.browse(cr, uid, ids[0])
+ company_id = obj_wizard.company_id.id
+ # If the floats for sale/purchase rates have been filled, create templates from them
+ self._create_tax_templates_from_rates(cr, uid, obj_wizard, company_id, context=context)
- if fp_ids:
- obj_tax_fp = self.pool.get('account.fiscal.position.tax')
- obj_ac_fp = self.pool.get('account.fiscal.position.account')
+ # Install all the templates objects and generate the real objects
+ acc_template_ref, taxes_ref, tax_code_ref = self._install_template(cr, uid, obj_wizard.chart_template_id.id, company_id, code_digits=obj_wizard.code_digits, obj_wizard=obj_wizard, context=context)
- for position in obj_fiscal_position_template.browse(cr, uid, fp_ids, context=context):
+ # write values of default taxes for product
+ if obj_wizard.sale_tax and taxes_ref:
+ ir_values_obj.set(cr, uid, key='default', key2=False, name="taxes_id", company=company_id,
+ models =[('product.product',False)], value=[taxes_ref[obj_wizard.sale_tax.id]])
+ if obj_wizard.purchase_tax and taxes_ref:
+ ir_values_obj.set(cr, uid, key='default', key2=False, name="supplier_taxes_id", company=company_id,
+ models =[('product.product',False)], value=[taxes_ref[obj_wizard.purchase_tax.id]])
- vals_fp = {
- 'company_id': company_id,
- 'name': position.name,
+ # Create Bank journals
+ self._create_bank_journals_from_o2m(cr, uid, obj_wizard, company_id, acc_template_ref, context=context)
+ action = {
+ 'type': 'ir.actions.act_window',
+ 'view_type': 'form',
+ 'view_mode': 'form',
+ 'res_model': 'board.board',
+ 'view_id': self.pool.get('ir.model.data').get_object_reference(cr, uid, 'account', 'board_account_form')[1],
+ 'menu_id': self.pool.get('ir.model.data').get_object_reference(cr, uid, 'account', 'menu_finance')[1]
+ }
+ return action
+
+ def _prepare_bank_journal(self, cr, uid, line, current_num, default_account_id, company_id, context=None):
+ '''
+ This function prepares the value to use for the creation of a bank journal created through the wizard of
+ generating COA from templates.
+
+ :param line: dictionary containing the values encoded by the user related to his bank account
+ :param current_num: integer corresponding to a counter of the already created bank journals through this wizard.
+ :param default_account_id: id of the default debit.credit account created before for this journal.
+ :param company_id: id of the company for which the wizard is running
+ :return: mapping of field names and values
+ :rtype: dict
+ '''
+ obj_data = self.pool.get('ir.model.data')
+ # Get the id of journal views
+ tmp = obj_data.get_object_reference(cr, uid, 'account', 'account_journal_bank_view_multi')
+ view_id_cur = tmp and tmp[1] or False
+ tmp = obj_data.get_object_reference(cr, uid, 'account', 'account_journal_bank_view')
+ view_id_cash = tmp and tmp[1] or False
+ vals = {
+ 'name': line['acc_name'],
+ 'code': _('BNK') + str(current_num),
+ 'type': line['account_type'] == 'cash' and 'cash' or 'bank',
+ 'company_id': company_id,
+ 'analytic_journal_id': False,
+ 'currency': False,
+ 'default_credit_account_id': default_account_id,
+ 'default_debit_account_id': default_account_id,
+ }
+ if line['currency_id']:
+ vals['view_id'] = view_id_cur
+ vals['currency'] = line['currency_id']
+ else:
+ vals['view_id'] = view_id_cash
+ return vals
+
+ def _prepare_bank_account(self, cr, uid, line, new_code, acc_template_ref, ref_acc_bank, company_id, context=None):
+ '''
+ This function prepares the value to use for the creation of the default debit and credit accounts of a
+ bank journal created through the wizard of generating COA from templates.
+
+ :param line: dictionary containing the values encoded by the user related to his bank account
+ :param new_code: integer corresponding to the next available number to use as account code
+ :param acc_template_ref: the dictionary containing the mapping between the ids of account templates and the ids
+ of the accounts that have been generated from them.
+ :param ref_acc_bank: browse record of the account template set as root of all bank accounts for the chosen
+ template
+ :param company_id: id of the company for which the wizard is running
+ :return: mapping of field names and values
+ :rtype: dict
+ '''
+ obj_data = self.pool.get('ir.model.data')
+
+ # Get the id of the user types fr-or cash and bank
+ tmp = obj_data.get_object_reference(cr, uid, 'account', 'data_account_type_cash')
+ cash_type = tmp and tmp[1] or False
+ tmp = obj_data.get_object_reference(cr, uid, 'account', 'data_account_type_bank')
+ bank_type = tmp and tmp[1] or False
+ return {
+ 'name': line['acc_name'],
+ 'currency_id': line['currency_id'],
+ 'code': new_code,
+ 'type': 'liquidity',
+ 'user_type': line['account_type'] == 'cash' and cash_type or bank_type,
+ 'parent_id': acc_template_ref[ref_acc_bank.id] or False,
+ 'company_id': company_id,
+ }
+
+ def _create_bank_journals_from_o2m(self, cr, uid, obj_wizard, company_id, acc_template_ref, context=None):
+ '''
+ This function creates bank journals and its accounts for each line encoded in the field bank_accounts_id of the
+ wizard.
+
+ :param obj_wizard: the current wizard that generates the COA from the templates.
+ :param company_id: the id of the company for which the wizard is running.
+ :param acc_template_ref: the dictionary containing the mapping between the ids of account templates and the ids
+ of the accounts that have been generated from them.
+ :return: True
+ '''
+ obj_acc = self.pool.get('account.account')
+ obj_journal = self.pool.get('account.journal')
+ code_digits = obj_wizard.code_digits
+
+ # Build a list with all the data to process
+ journal_data = []
+ if obj_wizard.bank_accounts_id:
+ for acc in obj_wizard.bank_accounts_id:
+ vals = {
+ 'acc_name': acc.acc_name,
+ 'account_type': acc.account_type,
+ 'currency_id': acc.currency_id.id,
}
- new_fp = obj_fiscal_position.create(cr, uid, vals_fp)
+ journal_data.append(vals)
+ ref_acc_bank = obj_wizard.chart_template_id.bank_account_view_id
+ if journal_data and not ref_acc_bank.code:
+ raise osv.except_osv(_('Configuration Error !'), _('The bank account defined on the selected chart of accounts hasn\'t a code.'))
- for tax in position.tax_ids:
- vals_tax = {
- 'tax_src_id': tax_template_ref[tax.tax_src_id.id],
- 'tax_dest_id': tax.tax_dest_id and tax_template_ref[tax.tax_dest_id.id] or False,
- 'position_id': new_fp,
- }
- obj_tax_fp.create(cr, uid, vals_tax)
+ current_num = 1
+ for line in journal_data:
+ # Seek the next available number for the account code
+ while True:
+ new_code = str(ref_acc_bank.code.ljust(code_digits-len(str(current_num)), '0')) + str(current_num)
+ ids = obj_acc.search(cr, uid, [('code', '=', new_code), ('company_id', '=', company_id)])
+ if not ids:
+ break
+ else:
+ current_num += 1
+ # Create the default debit/credit accounts for this bank journal
+ vals = self._prepare_bank_account(cr, uid, line, new_code, acc_template_ref, ref_acc_bank, company_id, context=context)
+ default_account_id = obj_acc.create(cr, uid, vals, context=context)
- for acc in position.account_ids:
- vals_acc = {
- 'account_src_id': acc_template_ref[acc.account_src_id.id],
- 'account_dest_id': acc_template_ref[acc.account_dest_id.id],
- 'position_id': new_fp,
- }
- obj_ac_fp.create(cr, uid, vals_acc)
-
- if obj_multi.sale_tax:
- ir_values_obj.set(cr, uid, key='default', key2=False, name="taxes_id", company=obj_multi.company_id.id,
- models =[('product.product',False)], value=[tax_template_to_tax[obj_multi.sale_tax.id]])
- if obj_multi.purchase_tax:
- ir_values_obj.set(cr, uid, key='default', key2=False, name="supplier_taxes_id", company=obj_multi.company_id.id,
- models =[('product.product',False)], value=[tax_template_to_tax[obj_multi.purchase_tax.id]])
+ #create the bank journal
+ vals_journal = self._prepare_bank_journal(cr, uid, line, current_num, default_account_id, company_id, context=context)
+ obj_journal.create(cr, uid, vals_journal)
+ current_num += 1
+ return True
wizard_multi_charts_accounts()
diff --git a/addons/account/account_bank_statement.py b/addons/account/account_bank_statement.py
index c34cb91fb0b..11e474bf16f 100644
--- a/addons/account/account_bank_statement.py
+++ b/addons/account/account_bank_statement.py
@@ -34,8 +34,6 @@ class account_bank_statement(osv.osv):
for line in vals['line_ids']:
seq += 1
line[2]['sequence'] = seq
- new_line_ids += tuple(line)
- vals['line_ids'] = new_line_ids
return super(account_bank_statement, self).create(cr, uid, vals, context=context)
def write(self, cr, uid, ids, vals, context=None):
diff --git a/addons/account/account_installer.xml b/addons/account/account_installer.xml
index e249f8fa872..430d65e0bf9 100644
--- a/addons/account/account_installer.xml
+++ b/addons/account/account_installer.xml
@@ -25,7 +25,7 @@
-
+
@@ -34,10 +34,6 @@
-
-
-
-
diff --git a/addons/account/account_invoice.py b/addons/account/account_invoice.py
index 39cc471c2f6..6fcc211bd84 100644
--- a/addons/account/account_invoice.py
+++ b/addons/account/account_invoice.py
@@ -261,7 +261,7 @@ class account_invoice(osv.osv):
'partner_bank_id': fields.many2one('res.partner.bank', 'Bank Account',
help='Bank Account Number, Company bank account if Invoice is customer or supplier refund, otherwise Partner bank account number.', readonly=True, states={'draft':[('readonly',False)]}),
'move_lines':fields.function(_get_lines, type='many2many', relation='account.move.line', string='Entry Lines'),
- 'residual': fields.function(_amount_residual, digits_compute=dp.get_precision('Account'), string='Residual',
+ 'residual': fields.function(_amount_residual, digits_compute=dp.get_precision('Account'), string='To Pay',
store={
'account.invoice': (lambda self, cr, uid, ids, c={}: ids, ['invoice_line','move_id'], 50),
'account.invoice.tax': (_get_invoice_tax, None, 50),
@@ -610,15 +610,15 @@ class account_invoice(osv.osv):
res[r[0]].append( r[1] )
return res
- def copy(self, cr, uid, id, default={}, context=None):
- if context is None:
- context = {}
+ def copy(self, cr, uid, id, default=None, context=None):
+ default = default or {}
default.update({
'state':'draft',
'number':False,
'move_id':False,
'move_name':False,
'internal_number': False,
+ 'period_id': False,
})
if 'date_invoice' not in default:
default.update({
@@ -1642,12 +1642,7 @@ class res_partner(osv.osv):
}
def copy(self, cr, uid, id, default=None, context=None):
- if default is None:
- default = {}
-
- if context is None:
- context = {}
-
+ default = default or {}
default.update({'invoice_ids' : []})
return super(res_partner, self).copy(cr, uid, id, default, context)
diff --git a/addons/account/account_invoice_view.xml b/addons/account/account_invoice_view.xml
index 4cc1a63db61..55d27e2e842 100644
--- a/addons/account/account_invoice_view.xml
+++ b/addons/account/account_invoice_view.xml
@@ -120,7 +120,7 @@
-
+
@@ -269,15 +269,13 @@
-
-
-
+
+
+
+
-
-
-
@@ -362,13 +360,13 @@
-
+
-
+
-
-
diff --git a/addons/account/account_move_line.py b/addons/account/account_move_line.py
index 55e154eed6d..e54024a6dcb 100644
--- a/addons/account/account_move_line.py
+++ b/addons/account/account_move_line.py
@@ -581,14 +581,14 @@ class account_move_line(osv.osv):
lines = self.browse(cr, uid, ids, context=context)
for l in lines:
if l.account_id.type == 'view':
- return False
+ raise osv.except_osv(_('Error :'), _('You can not create move line on view account %s %s') % (l.account_id.code, l.account_id.name))
return True
def _check_no_closed(self, cr, uid, ids, context=None):
lines = self.browse(cr, uid, ids, context=context)
for l in lines:
if l.account_id.type == 'closed':
- return False
+ raise osv.except_osv(_('Error :'), _('You can not create move line on closed account %s %s') % (l.account_id.code, l.account_id.name))
return True
def _check_company_id(self, cr, uid, ids, context=None):
@@ -1249,6 +1249,8 @@ class account_move_line(osv.osv):
if len(period_candidate_ids) != 1:
raise osv.except_osv(_('Encoding error'), _('No period found or period given is ambigous.'))
context['period_id'] = period_candidate_ids[0][0]
+ if not context.get('journal_id', False) and context.get('search_default_journal_id', False):
+ context['journal_id'] = context.get('search_default_journal_id')
self._update_journal_check(cr, uid, context['journal_id'], context['period_id'], context)
move_id = vals.get('move_id', False)
journal = journal_obj.browse(cr, uid, context['journal_id'], context=context)
diff --git a/addons/account/account_view.xml b/addons/account/account_view.xml
index 0d664d45d32..9ae59f62456 100644
--- a/addons/account/account_view.xml
+++ b/addons/account/account_view.xml
@@ -303,6 +303,9 @@
+
+
+
@@ -326,6 +329,7 @@
@@ -786,7 +790,6 @@
-
@@ -1753,18 +1756,18 @@
@@ -2184,9 +2188,13 @@
diff --git a/addons/account/board_account_view.xml b/addons/account/board_account_view.xml
index 5108a62cf3e..ffd2811cba7 100644
--- a/addons/account/board_account_view.xml
+++ b/addons/account/board_account_view.xml
@@ -41,12 +41,11 @@
-
+
-
diff --git a/addons/account/configurable_account_chart.xml b/addons/account/configurable_account_chart.xml
index 0ac7a51405d..7e1de5b5f7e 100644
--- a/addons/account/configurable_account_chart.xml
+++ b/addons/account/configurable_account_chart.xml
@@ -1,26 +1,6 @@
-
+
-
- Receivable
- receivable
- income
- unreconciled
-
-
-
- Payable
- payable
- expense
- unreconciled
-
-
-
- View
- view
- none
-
-
Income Viewview
@@ -41,78 +21,32 @@
liabilityliability
-
-
- Income
- income
- income
- none
-
-
-
- Expense
- expense
- expense
- none
-
-
Taxtax
- expenseunreconciled
+ expense
-
-
- Cash
- cash
- asset
- balance
-
-
-
- Liability
- liability
- liability
- balance
-
-
-
- Asset
- asset
- asset
- balance
-
-
Equityequity
+ balanceliability
- balance
-
-
- Bank
- bank
- asset
- balance
-
-
+ Checkcheck
- assetbalance
+ asset
-
-
0Configurable Account Chartview
-
+
@@ -122,7 +56,7 @@
Balance Sheetview
-
+
@@ -162,7 +96,7 @@
Purchased Stocksother
-
+
@@ -171,7 +105,7 @@
receivable
-
+
@@ -179,7 +113,7 @@
Tax Paidother
-
+
@@ -195,7 +129,7 @@
Opening Income Accountother
-
+
@@ -212,7 +146,7 @@
payable
-
+
@@ -220,7 +154,7 @@
Tax Receivedother
-
+
@@ -229,7 +163,7 @@
other
-
+
@@ -237,7 +171,7 @@
Opening Expense Accountother
-
+
@@ -247,7 +181,7 @@
Profit and Lossview
-
+
@@ -263,7 +197,7 @@
Product Salesother
-
+
@@ -279,7 +213,7 @@
Cost of Goods Soldother
-
+
@@ -295,7 +229,7 @@
Expensesother
-
+
@@ -303,7 +237,7 @@
Salary Expensesother
-
+
diff --git a/addons/account/data/data_account_type.xml b/addons/account/data/data_account_type.xml
new file mode 100644
index 00000000000..590357ef080
--- /dev/null
+++ b/addons/account/data/data_account_type.xml
@@ -0,0 +1,55 @@
+
+
+
+
+ View
+ view
+ none
+
+
+ Receivable
+ receivable
+ unreconciled
+
+
+ Payable
+ payable
+ unreconciled
+
+
+ Bank
+ bank
+ balance
+
+
+ Cash
+ cash
+ balance
+
+
+ Asset
+ asset
+ balance
+ asset
+
+
+ Liability
+ liability
+ balance
+ liability
+
+
+ Income
+ income
+ none
+ income
+
+
+ Expense
+ expense
+ none
+ expense
+
+
+
+
diff --git a/addons/account/data/data_financial_report.xml b/addons/account/data/data_financial_report.xml
new file mode 100644
index 00000000000..18624f94749
--- /dev/null
+++ b/addons/account/data/data_financial_report.xml
@@ -0,0 +1,43 @@
+
+
+
+
+
+ Balance Sheet
+ sum
+
+
+ Assets
+
+ detail_with_hierarchy
+ account_type
+
+
+ Liability
+
+ detail_with_hierarchy
+ account_type
+
+
+
+ Profit and Loss
+ sum
+
+
+ Income
+
+ detail_with_hierarchy
+ account_type
+
+
+ Expense
+
+ detail_with_hierarchy
+ account_type
+
+
+
+
+
diff --git a/addons/account/demo/account_minimal.xml b/addons/account/demo/account_minimal.xml
index 50b597c8e49..baa94450f02 100644
--- a/addons/account/demo/account_minimal.xml
+++ b/addons/account/demo/account_minimal.xml
@@ -5,58 +5,11 @@
Account Type
-->
-
- View
- view
- none
-
-
- Asset
- asset
- asset
- balance
-
-
- Receivable
- receivable
- asset
- unreconciled
-
-
- Liability
- liability
- liability
- balance
-
-
- Payable
- payable
- liability
- unreconciled
-
-
- Income
- income
- income
- none
-
-
- Expense
- expense
- expense
- none
- Equityequity
+ balanceliability
- balance
-
-
- Cash
- cash
- asset
- balance
@@ -78,14 +31,14 @@
Balance Sheet - (test)view
-
+ Assets - (test)X10view
-
+
@@ -95,7 +48,7 @@
Fixed Assets - (test)view
-
+
@@ -103,7 +56,7 @@
Fixed Asset Account - (test)other
-
+
@@ -111,7 +64,7 @@
Net Current Assets - (test)view
-
+
@@ -119,7 +72,7 @@
Current Assets - (test)view
-
+
@@ -127,7 +80,7 @@
Purchased Stocks - (test)other
-
+
@@ -136,7 +89,7 @@
receivable
-
+
@@ -144,7 +97,7 @@
Output VAT - (test)other
-
+
@@ -152,7 +105,7 @@
Bank Current Account - (test)liquidity
-
+
@@ -160,7 +113,7 @@
Cash - (test)liquidity
-
+
@@ -168,14 +121,14 @@
Opening Income - (test)other
-
+ Liabilities - (test)X11view
-
+
@@ -185,7 +138,7 @@
Current Liabilities - (test)view
-
+
@@ -194,7 +147,7 @@
payable
-
+
@@ -202,7 +155,7 @@
Input VAT - (test)other
-
+
@@ -210,7 +163,7 @@
Reserve and Profit/Loss - (test)other
-
+
@@ -218,7 +171,7 @@
Opening Expense - (test)other
-
+
@@ -228,14 +181,14 @@
Profit and Loss - (test)view
-
+ Income - (test)X20view
-
+
@@ -244,7 +197,7 @@
Foreign Exchange Gain - (test)X201other
-
+
@@ -254,7 +207,7 @@
Revenue - (test)view
-
+
@@ -262,14 +215,14 @@
Product Sales - (test)other
-
+ Expense - (test)X21view
-
+
@@ -280,7 +233,7 @@
Cost of Sales - (test)view
-
+
@@ -288,7 +241,7 @@
Cost of Goods Sold - (test)other
-
+
@@ -296,7 +249,7 @@
Overheads - (test)view
-
+
@@ -304,14 +257,14 @@
Expenses - (test)other
-
+ Foreign Exchange Loss - (test)X2111other
-
+
@@ -321,7 +274,7 @@
Salary Expenses - (test)other
-
+
diff --git a/addons/account/i18n/ar.po b/addons/account/i18n/ar.po
index 35a130927be..bbd4189dc8a 100644
--- a/addons/account/i18n/ar.po
+++ b/addons/account/i18n/ar.po
@@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2011-01-11 11:14+0000\n"
-"PO-Revision-Date: 2011-12-08 00:21+0000\n"
+"PO-Revision-Date: 2011-12-08 16:20+0000\n"
"Last-Translator: kifcaliph \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-12-08 05:35+0000\n"
-"X-Generator: Launchpad (build 14443)\n"
+"X-Launchpad-Export-Date: 2011-12-09 04:45+0000\n"
+"X-Generator: Launchpad (build 14450)\n"
#. module: account
#: model:process.transition,name:account.process_transition_supplierreconcilepaid0
@@ -1514,7 +1514,7 @@ msgstr ""
#: view:account.bank.statement:0
#: field:account.bank.statement,line_ids:0
msgid "Statement lines"
-msgstr ""
+msgstr "سطور القائمة"
#. module: account
#: model:ir.actions.act_window,help:account.action_bank_statement_tree
@@ -1568,7 +1568,7 @@ msgstr "مسلسل السنة المالية"
#. module: account
#: field:wizard.multi.charts.accounts,seq_journal:0
msgid "Separated Journal Sequences"
-msgstr ""
+msgstr "مسلسلات اليومية منفصلة"
#. module: account
#: field:account.bank.statement,user_id:0
@@ -1601,7 +1601,7 @@ msgstr "الفواتير"
#. module: account
#: field:account.chart.template,tax_code_root_id:0
msgid "Root Tax Code"
-msgstr ""
+msgstr "رمز الضريبة الرئيسي"
#. module: account
#: field:account.partner.ledger,initial_balance:0
@@ -1612,12 +1612,12 @@ msgstr "ضم الأرصدة المبدئية"
#. module: account
#: field:account.tax.code,sum:0
msgid "Year Sum"
-msgstr ""
+msgstr "جمع السنة"
#. module: account
#: model:ir.actions.report.xml,name:account.report_account_voucher_new
msgid "Print Voucher"
-msgstr ""
+msgstr "طباعة الوثيقة"
#. module: account
#: view:account.change.currency:0
@@ -1658,12 +1658,12 @@ msgstr "إذا كان الحقل"
#. module: account
#: view:res.partner:0
msgid "Supplier Debit"
-msgstr ""
+msgstr "مورد مدين"
#. module: account
#: help:account.model.line,quantity:0
msgid "The optional quantity on entries"
-msgstr ""
+msgstr "الكمية الإختيارية علي القيود"
#. module: account
#: model:ir.actions.act_window,name:account.act_account_partner_account_move_all
@@ -1679,7 +1679,7 @@ msgstr "يجب إعطاء حساب لقيود الإعدام !"
#. module: account
#: model:ir.model,name:account.model_account_common_journal_report
msgid "Account Common Journal Report"
-msgstr ""
+msgstr "تقرير حساب اليومية المشترك"
#. module: account
#: selection:account.partner.balance,display_partner:0
@@ -1720,12 +1720,12 @@ msgstr "هذه الفترات يمكن أن تتداخل."
#. module: account
#: model:process.node,name:account.process_node_draftstatement0
msgid "Draft statement"
-msgstr ""
+msgstr "قائمة مؤقتة"
#. module: account
#: view:account.tax:0
msgid "Tax Declaration: Credit Notes"
-msgstr ""
+msgstr "الإعلان الضريبي: الأوراق الدائنة"
#. module: account
#: code:addons/account/account.py:499
@@ -1760,7 +1760,7 @@ msgstr "حساب الإحتياطي و الأرباح و الخسائر"
#. module: account
#: sql_constraint:account.move.line:0
msgid "Wrong credit or debit value in accounting entry !"
-msgstr ""
+msgstr "قيمة دائنة أو مدينة خاطئة في القيد المحاسبي !"
#. module: account
#: view:account.invoice.report:0
@@ -1798,7 +1798,7 @@ msgstr "قيد يومية"
#. module: account
#: view:account.tax:0
msgid "Tax Declaration: Invoices"
-msgstr ""
+msgstr "الإعلان الضريبي: الفواتير"
#. module: account
#: field:account.cashbox.line,subtotal:0
@@ -2676,7 +2676,7 @@ msgstr ""
#. module: account
#: field:account.invoice.tax,base_amount:0
msgid "Base Code Amount"
-msgstr ""
+msgstr "مبلغ الرمز الرئيسي"
#. module: account
#: field:wizard.multi.charts.accounts,sale_tax:0
@@ -2760,7 +2760,7 @@ msgstr ""
#. module: account
#: help:account.journal,user_id:0
msgid "The user responsible for this journal"
-msgstr ""
+msgstr "الشخص المسؤول لهذه اليومية"
#. module: account
#: view:account.period:0
@@ -2805,12 +2805,12 @@ msgstr ""
#. module: account
#: help:wizard.multi.charts.accounts,code_digits:0
msgid "No. of Digits to use for account code"
-msgstr ""
+msgstr "أعداد الوحدة لرمز الحساب"
#. module: account
#: field:account.payment.term.line,name:0
msgid "Line Name"
-msgstr ""
+msgstr "اسم الخط"
#. module: account
#: view:account.fiscalyear:0
@@ -2882,7 +2882,7 @@ msgstr "دين العميل"
#. module: account
#: model:ir.model,name:account.model_account_tax_code_template
msgid "Tax Code Template"
-msgstr ""
+msgstr "قالب رمز الضريبة"
#. module: account
#: view:account.subscription:0
@@ -2902,7 +2902,7 @@ msgstr ""
#. module: account
#: view:account.tax.template:0
msgid "Tax Declaration"
-msgstr ""
+msgstr "الإعلان الضريبي"
#. module: account
#: help:account.account,currency_id:0
@@ -2932,7 +2932,7 @@ msgstr "إنشاء شجرة حسابات من قالب"
#. module: account
#: model:ir.model,name:account.model_account_unreconcile_reconcile
msgid "Account Unreconcile Reconcile"
-msgstr ""
+msgstr "حساب التسوية / إلغاءها"
#. module: account
#: help:account.account.type,close_method:0
@@ -3023,7 +3023,7 @@ msgstr "شراء"
#: model:ir.actions.act_window,name:account.action_account_installer
#: view:wizard.multi.charts.accounts:0
msgid "Accounting Application Configuration"
-msgstr ""
+msgstr "إعداد برنامج المحاسبة"
#. module: account
#: model:ir.actions.act_window,name:account.open_board_account
@@ -3151,7 +3151,7 @@ msgstr "تحويلات"
#. module: account
#: view:account.payment.term.line:0
msgid " value amount: n.a"
-msgstr ""
+msgstr " قيمة المبلغ: غير متاحة"
#. module: account
#: view:account.chart:0
@@ -3240,7 +3240,7 @@ msgstr "إنشاء حساب"
#. module: account
#: model:ir.model,name:account.model_report_account_type_sales
msgid "Report of the Sales by Account Type"
-msgstr ""
+msgstr "تقرير المبيعات حسب نوع الحساب"
#. module: account
#: selection:account.account.type,close_method:0
@@ -4830,7 +4830,7 @@ msgstr "إحصائيات القيود التحليلية"
#: model:ir.actions.act_window,name:account.action_account_tax_code_template_form
#: model:ir.ui.menu,name:account.menu_action_account_tax_code_template_form
msgid "Tax Code Templates"
-msgstr ""
+msgstr "قوالب رمز الضريبة"
#. module: account
#: model:ir.model,name:account.model_account_installer
@@ -6434,7 +6434,7 @@ msgstr ""
#. module: account
#: model:process.transition,note:account.process_transition_invoicemanually0
msgid "A statement with manual entries becomes a draft statement."
-msgstr ""
+msgstr "القائمة ذات القيود اليدوية تصبح مؤقتة."
#. module: account
#: view:account.aged.trial.balance:0
@@ -7936,7 +7936,7 @@ msgstr "عملة"
#: help:account.bank.statement.line,sequence:0
msgid ""
"Gives the sequence order when displaying a list of bank statement lines."
-msgstr ""
+msgstr "يعطيك ترتيب المسلسل حين يعرض قائمة لسطور كشف حساب البنك"
#. module: account
#: model:process.transition,note:account.process_transition_validentries0
@@ -9414,7 +9414,7 @@ msgstr "بيانات الحساب"
#. module: account
#: view:account.tax.code.template:0
msgid "Account Tax Code Template"
-msgstr ""
+msgstr "قالب حساب رمز الضريبة"
#. module: account
#: model:process.node,name:account.process_node_manually0
diff --git a/addons/account/i18n/hr.po b/addons/account/i18n/hr.po
index 9ff165ef150..5f6c47d7d0b 100644
--- a/addons/account/i18n/hr.po
+++ b/addons/account/i18n/hr.po
@@ -7,19 +7,19 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2011-01-11 11:14+0000\n"
-"PO-Revision-Date: 2011-11-07 12:52+0000\n"
+"PO-Revision-Date: 2011-12-08 15:12+0000\n"
"Last-Translator: Goran Kliska \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-08 05:45+0000\n"
-"X-Generator: Launchpad (build 14231)\n"
+"X-Launchpad-Export-Date: 2011-12-09 04:45+0000\n"
+"X-Generator: Launchpad (build 14450)\n"
#. module: account
#: model:process.transition,name:account.process_transition_supplierreconcilepaid0
msgid "System payment"
-msgstr "Poredak plaćanja"
+msgstr "System payment"
#. module: account
#: view:account.journal:0
@@ -39,12 +39,13 @@ msgid ""
"You cannot remove/deactivate an account which is set as a property to any "
"Partner."
msgstr ""
-"Ne možete obrisati/deaktivirati konto koji se koristi kao obilježje partnera."
+"Konto se koristi kao obilježje partnera, te se ne može brisati ili "
+"deaktivirati."
#. module: account
#: view:account.move.reconcile:0
msgid "Journal Entry Reconcile"
-msgstr "Zatvaranje stavke dnevnika"
+msgstr "Zatvaranje stavke dnevnika(IOS)"
#. module: account
#: field:account.installer.modules,account_voucher:0
@@ -69,7 +70,7 @@ msgstr "Ostatak"
#: code:addons/account/invoice.py:785
#, python-format
msgid "Please define sequence on invoice journal"
-msgstr "Definirajte brojač na dnevniku računa"
+msgstr "Definirajte brojčanu seriju na dnevniku računa"
#. module: account
#: constraint:account.period:0
@@ -126,6 +127,8 @@ msgid ""
"If you unreconciliate transactions, you must also verify all the actions "
"that are linked to those transactions because they will not be disabled"
msgstr ""
+"Ako otvarate stavke, morate provjeriti/provesti i sve ostale vezane akcije i "
+"stanja."
#. module: account
#: report:account.tax.code.entries:0
@@ -152,7 +155,7 @@ msgstr "Izvor"
#: view:account.move.line.reconcile:0
#: view:account.move.line.reconcile.writeoff:0
msgid "Reconcile"
-msgstr "Zatvaranje"
+msgstr "Zatvaranje IOS-a"
#. module: account
#: field:account.bank.statement.line,ref:0
@@ -216,8 +219,8 @@ msgid ""
"invoice) to create analytic entries, OpenERP will look for a matching "
"journal of the same type."
msgstr ""
-"Tip analitičkog dnevnika. Kada je potrebno kreirati analitičke stavke "
-"koristit će se dnevnik odgovarajućeg tipa."
+"Tip analitičkog dnevnika. Kod kreiranja analitičkih knjiženja koristi se "
+"ovdje definirani analitički dnevnik odgovarajućeg tipa."
#. module: account
#: model:ir.actions.act_window,name:account.action_account_tax_template_form
@@ -269,12 +272,12 @@ msgstr "Račun '%s' je djelomično plaćen: %s%s od %s%s (%s%s preostalo)"
#. module: account
#: model:process.transition,note:account.process_transition_supplierentriesreconcile0
msgid "Accounting entries are an input of the reconciliation."
-msgstr ""
+msgstr "Accounting entries are an input of the reconciliation."
#. module: account
#: model:ir.ui.menu,name:account.menu_finance_management_belgian_reports
msgid "Belgian Reports"
-msgstr ""
+msgstr "Belgian Reports"
#. module: account
#: code:addons/account/account_move_line.py:1176
@@ -307,7 +310,7 @@ msgstr "Dozvoli otpis"
#. module: account
#: view:account.analytic.chart:0
msgid "Select the Period for Analysis"
-msgstr "Odaberite period analize"
+msgstr "Odaberite razdoblje analize"
#. module: account
#: view:account.move.line:0
@@ -318,7 +321,7 @@ msgstr "St."
#: code:addons/account/invoice.py:529
#, python-format
msgid "Invoice line account company does not match with invoice company."
-msgstr "Konto na retku računa ne pripada tvrtci sa zaglavlja računa."
+msgstr "Konto na stavci računa ne pripada organizaciji sa zaglavlja računa."
#. module: account
#: field:account.journal.column,field:0
@@ -330,7 +333,8 @@ msgstr "Naziv polja"
msgid ""
"Installs localized accounting charts to match as closely as possible the "
"accounting needs of your company based on your country."
-msgstr "Instalira lokalizirani kontni plan prema potrebama vaše kompanije."
+msgstr ""
+"Instalira lokalizirani kontni plan prema potrebama vaše organizacije."
#. module: account
#: code:addons/account/wizard/account_move_journal.py:63
@@ -341,17 +345,21 @@ msgid ""
"You can create one in the menu: \n"
"Configuration/Financial Accounting/Accounts/Journals."
msgstr ""
+"Can't find any account journal of %s type for this company.\n"
+"\n"
+"You can create one in the menu: \n"
+"Configuration/Financial Accounting/Accounts/Journals."
#. module: account
#: model:ir.model,name:account.model_account_unreconcile
msgid "Account Unreconcile"
-msgstr ""
+msgstr "Account Unreconcile"
#. module: account
#: view:product.product:0
#: view:product.template:0
msgid "Purchase Properties"
-msgstr "Nabava"
+msgstr "Svojstva nabave"
#. module: account
#: view:account.installer:0
@@ -375,11 +383,14 @@ msgid ""
"OpenERP. Journal items are created by OpenERP if you use Bank Statements, "
"Cash Registers, or Customer/Supplier payments."
msgstr ""
+"This view is used by accountants in order to record entries massively in "
+"OpenERP. Journal items are created by OpenERP if you use Bank Statements, "
+"Cash Registers, or Customer/Supplier payments."
#. module: account
#: model:ir.model,name:account.model_account_tax_template
msgid "account.tax.template"
-msgstr "account.tax.template"
+msgstr "račun.porez.predložak"
#. module: account
#: model:ir.model,name:account.model_account_bank_accounts_wizard
@@ -395,7 +406,7 @@ msgstr "Datum kreiranja"
#. module: account
#: selection:account.journal,type:0
msgid "Purchase Refund"
-msgstr "Povrat nabave"
+msgstr "Odobrenja nabave"
#. module: account
#: selection:account.journal,type:0
@@ -418,6 +429,8 @@ msgid ""
"This field contains the informatin related to the numbering of the journal "
"entries of this journal."
msgstr ""
+"Brojčana serija koja će se koristiti za odbrojavanje dokumenata ovog "
+"dnevnika."
#. module: account
#: field:account.journal,default_debit_account_id:0
@@ -437,7 +450,7 @@ msgstr "Pozitivan"
#. module: account
#: view:account.move.line.unreconcile.select:0
msgid "Open For Unreconciliation"
-msgstr "Otvoreno za otvaranje"
+msgstr "Otvori za otvaranje IOS-a"
#. module: account
#: field:account.fiscal.position.template,chart_template_id:0
@@ -449,7 +462,7 @@ msgstr "Predložak kontnog plana"
#. module: account
#: help:account.model.line,amount_currency:0
msgid "The amount expressed in an optional other currency."
-msgstr "Iznos je predstavljen opciono u drugoj valuti"
+msgstr "Iznos u drugoj valuti"
#. module: account
#: help:account.journal.period,state:0
@@ -458,6 +471,9 @@ msgid ""
"it comes to 'Printed' state. When all transactions are done, it comes in "
"'Done' state."
msgstr ""
+"When journal period is created. The state is 'Draft'. If a report is printed "
+"it comes to 'Printed' state. When all transactions are done, it comes in "
+"'Done' state."
#. module: account
#: model:ir.actions.act_window,help:account.action_account_tax_chart
@@ -467,6 +483,10 @@ msgid ""
"amount of each area of the tax declaration for your country. It’s presented "
"in a hierarchical structure, which can be modified to fit your needs."
msgstr ""
+"Stablo poreza prikazuje strukturu poreznih grupa sa vrijednostima osnovica i "
+"poreza. Jedno stablo sadrži strukturu osnovica i poreza za prijavu PDV-a, a "
+"druga možete prilagođavati vašim potrebama i prikazivati druge poreze, "
+"trošarine ili npr. ugovorene provizije prodavačima."
#. module: account
#: view:account.analytic.line:0
@@ -503,7 +523,7 @@ msgstr "Dnevnik"
#. module: account
#: model:ir.model,name:account.model_account_invoice_confirm
msgid "Confirm the selected invoices"
-msgstr "Potvrda odabranih računa"
+msgstr "Potvrdi odabrane račune"
#. module: account
#: field:account.addtmpl.wizard,cparent_id:0
@@ -542,12 +562,12 @@ msgstr "Porezi nabave"
#. module: account
#: model:ir.model,name:account.model_account_invoice_refund
msgid "Invoice Refund"
-msgstr "Povrat računa"
+msgstr "Računi odobrenja"
#. module: account
#: report:account.overdue:0
msgid "Li."
-msgstr ""
+msgstr "Li."
#. module: account
#: field:account.automatic.reconcile,unreconciled:0
@@ -616,7 +636,7 @@ msgstr " 30 Dana "
#. module: account
#: field:ir.sequence,fiscal_ids:0
msgid "Sequences"
-msgstr "Sekvence"
+msgstr "Brojčane serije"
#. module: account
#: view:account.fiscal.position.template:0
@@ -626,17 +646,17 @@ msgstr "Mapiranje poreza"
#. module: account
#: report:account.central.journal:0
msgid "Centralized Journal"
-msgstr ""
+msgstr "Centralized Journal"
#. module: account
#: sql_constraint:account.sequence.fiscalyear:0
msgid "Main Sequence must be different from current !"
-msgstr ""
+msgstr "Glavna serija mora biti različita od trenutne !"
#. module: account
#: field:account.invoice.tax,tax_amount:0
msgid "Tax Code Amount"
-msgstr "Iznos poreza"
+msgstr "Iznos porezne grupe"
#. module: account
#: code:addons/account/account.py:2779
@@ -648,18 +668,18 @@ msgstr "IRA"
#. module: account
#: help:account.bank.statement,balance_end_real:0
msgid "closing balance entered by the cashbox verifier"
-msgstr ""
+msgstr "closing balance entered by the cashbox verifier"
#. module: account
#: view:account.period:0
#: view:account.period.close:0
msgid "Close Period"
-msgstr "Zatvori period"
+msgstr "Zatvori razdoblje"
#. module: account
#: model:ir.model,name:account.model_account_common_partner_report
msgid "Account Common Partner Report"
-msgstr ""
+msgstr "Račun Zajednički Partner Izvješće"
#. module: account
#: field:account.fiscalyear.close,period_id:0
@@ -676,7 +696,7 @@ msgstr "Period dnevnika"
#: code:addons/account/account_move_line.py:776
#, python-format
msgid "To reconcile the entries company should be the same for all entries"
-msgstr "Sve stavke zatvaranja moraju biti iz iste trvtke"
+msgstr "Sve stavke zatvaranja moraju biti iz iste organizacije"
#. module: account
#: view:account.account:0
@@ -713,7 +733,7 @@ msgstr "Čekovi"
#. module: account
#: field:account.partner.reconcile.process,today_reconciled:0
msgid "Partners Reconciled Today"
-msgstr "Danas zatvoreni partneri"
+msgstr "Danas zatvoreni partneri (IOS-i)"
#. module: account
#: selection:account.payment.term.line,value:0
@@ -737,7 +757,7 @@ msgstr "Analitičke stavke"
#: code:addons/account/wizard/account_change_currency.py:39
#, python-format
msgid "You can only change currency for Draft Invoice !"
-msgstr ""
+msgstr "Valuta se može mijenjati samo na računima u stanju 'Nacrt'!"
#. module: account
#: view:account.analytic.journal:0
@@ -751,7 +771,7 @@ msgstr ""
#: field:account.move.reconcile,type:0
#: field:report.invoice.created,type:0
msgid "Type"
-msgstr "Tip"
+msgstr "Vrsta"
#. module: account
#: model:ir.model,name:account.model_account_subscription_line
@@ -761,7 +781,7 @@ msgstr "Retci knjiženja pretplate"
#. module: account
#: help:account.invoice,reference:0
msgid "The partner reference of this invoice."
-msgstr "Vezna oznaka partnera za ovaj račun(poziv na broj)."
+msgstr "Poziv na broj."
#. module: account
#: view:account.move.line.unreconcile.select:0
@@ -769,7 +789,7 @@ msgstr "Vezna oznaka partnera za ovaj račun(poziv na broj)."
#: view:account.unreconcile.reconcile:0
#: model:ir.model,name:account.model_account_move_line_unreconcile_select
msgid "Unreconciliation"
-msgstr "Poništavanje zatvaranja"
+msgstr "Poništavanje zatvaranja IOS-a"
#. module: account
#: model:ir.model,name:account.model_account_analytic_Journal_report
@@ -789,7 +809,7 @@ msgstr "Izračun valute plaćanja"
#. module: account
#: report:account.analytic.account.quantity_cost_ledger:0
msgid "J.C./Move name"
-msgstr ""
+msgstr "J.C./Move name"
#. module: account
#: selection:account.entries.report,month:0
@@ -809,7 +829,7 @@ msgstr "dana"
#: help:account.account.template,nocreate:0
msgid ""
"If checked, the new chart of accounts will not contain this by default."
-msgstr ""
+msgstr "Ako je označeno, novi računski plan neće sadržavati ove po defaultu."
#. module: account
#: code:addons/account/wizard/account_invoice_refund.py:102
@@ -908,12 +928,12 @@ msgstr "Prošireni filtri..."
#. module: account
#: model:ir.ui.menu,name:account.menu_account_central_journal
msgid "Centralizing Journal"
-msgstr ""
+msgstr "Centralizirani dnevnik"
#. module: account
#: selection:account.journal,type:0
msgid "Sale Refund"
-msgstr "Povrat prodaje"
+msgstr "Odobrenje kupcu"
#. module: account
#: model:process.node,note:account.process_node_accountingstatemententries0
@@ -936,7 +956,7 @@ msgstr "Porez ili osnovica poreza ovisno o poreznoj grupi."
#. module: account
#: view:account.analytic.line:0
msgid "Purchases"
-msgstr "Nabave"
+msgstr "Nabava"
#. module: account
#: field:account.model,lines_id:0
@@ -1001,7 +1021,7 @@ msgstr "Tjedan"
#: field:account.pl.report,display_type:0
#: field:account.report.general.ledger,landscape:0
msgid "Landscape Mode"
-msgstr "Prosireni način"
+msgstr "Položeno (Landscape)"
#. module: account
#: view:board.board:0
@@ -1020,6 +1040,8 @@ msgid ""
"These types are defined according to your country. The type contains more "
"information about the account and its specificities."
msgstr ""
+"These types are defined according to your country. The type contains more "
+"information about the account and its specificities."
#. module: account
#: view:account.tax:0
@@ -1079,7 +1101,7 @@ msgstr "Potvrdi izvod"
#: field:account.fiscal.position.tax,tax_dest_id:0
#: field:account.fiscal.position.tax.template,tax_dest_id:0
msgid "Replacement Tax"
-msgstr "Promenljiv porez"
+msgstr "Zamjenski porez"
#. module: account
#: selection:account.move.line,centralisation:0
@@ -1094,11 +1116,15 @@ msgid ""
"purchase orders or receipts. This way, you can control the invoice from your "
"supplier according to what you purchased or received."
msgstr ""
+"With Supplier Invoices you can enter and manage invoices issued by your "
+"suppliers. OpenERP can also generate draft invoices automatically from "
+"purchase orders or receipts. This way, you can control the invoice from your "
+"supplier according to what you purchased or received."
#. module: account
#: view:account.invoice.cancel:0
msgid "Cancel Invoices"
-msgstr ""
+msgstr "Otkaži račune"
#. module: account
#: view:account.unreconcile.reconcile:0
@@ -1111,7 +1137,7 @@ msgstr "Transakcije poništavanja zatvaranja"
#: field:account.tax.template,tax_code_id:0
#: model:ir.model,name:account.model_account_tax_code
msgid "Tax Code"
-msgstr "Šifra poreza"
+msgstr "Porezna grupa"
#. module: account
#: field:account.account,currency_mode:0
@@ -1126,7 +1152,7 @@ msgstr "Temeljnica"
#. module: account
#: field:account.move.line.reconcile,trans_nbr:0
msgid "# of Transaction"
-msgstr "Broj transakcija"
+msgstr "# transakcija"
#. module: account
#: report:account.general.ledger:0
@@ -1147,7 +1173,7 @@ msgstr "Ne možete mjenjati/brisati dnevnike sa stavkama za ovo razdoblje!"
#: help:account.invoice,origin:0
#: help:account.invoice.line,origin:0
msgid "Reference of the document that produced this invoice."
-msgstr "Vezna oznaka dokumenta koji je stvorio ovaj račun."
+msgstr "Oznaka izvornog dokumenta koji je kreirao ovaj račun."
#. module: account
#: view:account.analytic.line:0
@@ -1185,7 +1211,7 @@ msgstr "Konto"
#. module: account
#: field:account.tax,include_base_amount:0
msgid "Included in base amount"
-msgstr "Uključeno u iznos osnovice"
+msgstr "Uključeno u osnovicu"
#. module: account
#: view:account.entries.report:0
@@ -1257,7 +1283,7 @@ msgstr "Početni saldo"
#. module: account
#: view:account.invoice:0
msgid "Reset to Draft"
-msgstr "Vrati u pripremu"
+msgstr "Vrati u nacrt"
#. module: account
#: view:wizard.multi.charts.accounts:0
@@ -1309,7 +1335,7 @@ msgstr "Glavni dnevnik"
#: code:addons/account/account_move_line.py:1271
#, python-format
msgid "You can not use this general account in this journal !"
-msgstr "Ne možete koristiti odabrani opći konto u ovon dnevniku!"
+msgstr "Ne možete koristiti odabrani opći konto u ovom dnevniku!"
#. module: account
#: selection:account.balance.report,display_account:0
@@ -1339,7 +1365,7 @@ msgstr "Traži poreze"
#. module: account
#: model:ir.model,name:account.model_account_analytic_cost_ledger
msgid "Account Analytic Cost Ledger"
-msgstr ""
+msgstr "Account Analytic Cost Ledger"
#. module: account
#: view:account.model:0
@@ -1359,7 +1385,7 @@ msgstr "Maksimalni iznos otpisa"
#. module: account
#: view:account.invoice:0
msgid "Compute Taxes"
-msgstr "Izračunaj poreze"
+msgstr "Iz_računaj poreze"
#. module: account
#: field:wizard.multi.charts.accounts,code_digits:0
@@ -1369,7 +1395,7 @@ msgstr "Broj znamenki"
#. module: account
#: field:account.journal,entry_posted:0
msgid "Skip 'Draft' State for Manual Entries"
-msgstr "Preskoči stanje 'Priprema' za ručni upis"
+msgstr "Preskoči stanje 'Nacrt' za ručni upis"
#. module: account
#: view:account.invoice.report:0
@@ -1385,6 +1411,9 @@ msgid ""
"entry per accounting document: invoice, refund, supplier payment, bank "
"statements, etc."
msgstr ""
+"Temeljnica sadrži više knjigovodstvenih stavaka od kojih je svaka dugovna "
+"ili potražna transakcija. OpenERP automatski kreira jednu temeljnicu za "
+"jedan knjigovodstveni dokument: račun, plaćanje, izvod, itd."
#. module: account
#: view:account.entries.report:0
@@ -1406,7 +1435,7 @@ msgstr "Povrat dobavljaču"
#: view:account.payment.term.line:0
msgid ""
"Example: at 14 net days 2 percents, remaining amount at 30 days end of month."
-msgstr ""
+msgstr "Primjer: za 14 dana 2%, ostatak za 30 dana ili do kraja mjeseca."
#. module: account
#: code:addons/account/invoice.py:815
@@ -1416,6 +1445,8 @@ msgid ""
"The payment term defined gives a computed amount greater than the total "
"invoiced amount."
msgstr ""
+"Račun nije kreiran !\n"
+"Uvjeti plaćanja daju iznos veći od ukupnog iznosa računa."
#. module: account
#: field:account.installer.modules,account_anglo_saxon:0
@@ -1477,7 +1508,7 @@ msgstr "Grupe"
#: field:account.invoice,amount_untaxed:0
#: field:report.invoice.created,amount_untaxed:0
msgid "Untaxed"
-msgstr "Bez poreza"
+msgstr "Osnovica"
#. module: account
#: view:account.partner.reconcile.process:0
@@ -1494,6 +1525,8 @@ msgstr "Traži izvode banke"
msgid ""
"Wrong credit or debit value in model (Credit + Debit Must Be greater \"0\")!"
msgstr ""
+"Pogrešno kreditna ili debitna vrijednost u modelu (Kreditna + debitna mora "
+"biti veći \"0 \")!"
#. module: account
#: view:account.chart.template:0
@@ -1505,7 +1538,7 @@ msgstr "Konto obveza"
#: field:account.tax,account_paid_id:0
#: field:account.tax.template,account_paid_id:0
msgid "Refund Tax Account"
-msgstr "Konto povrata poreza"
+msgstr "Konto poreza za odobrenja"
#. module: account
#: view:account.bank.statement:0
@@ -1523,6 +1556,12 @@ msgid ""
"the Payment column of a line, you can press F1 to open the reconciliation "
"form."
msgstr ""
+"A bank statement is a summary of all financial transactions occurring over a "
+"given period of time on a deposit account, a credit card or any other type "
+"of financial account. The starting balance will be proposed automatically "
+"and the closing balance is to be found on your statement. When you are in "
+"the Payment column of a line, you can press F1 to open the reconciliation "
+"form."
#. module: account
#: report:account.analytic.account.cost_ledger:0
@@ -1565,7 +1604,7 @@ msgstr "Brojač fiskalne godine"
#. module: account
#: field:wizard.multi.charts.accounts,seq_journal:0
msgid "Separated Journal Sequences"
-msgstr "Odvojene sekvence dnevnika"
+msgstr "Odvojeni brojači dnevnika"
#. module: account
#: field:account.bank.statement,user_id:0
@@ -1589,6 +1628,8 @@ msgid ""
"Cancel Invoice: Creates the refund invoice, validate and reconcile it to "
"cancel the current invoice."
msgstr ""
+"Storniraj račun: Kreira storno računa, potvrđuje ga i zatvara sa ovim "
+"računom."
#. module: account
#: model:ir.ui.menu,name:account.periodical_processing_invoicing
@@ -1598,7 +1639,7 @@ msgstr "Fakturiranje"
#. module: account
#: field:account.chart.template,tax_code_root_id:0
msgid "Root Tax Code"
-msgstr "Šifra korijenskog poreza"
+msgstr "Korijenska porezna grupa"
#. module: account
#: field:account.partner.ledger,initial_balance:0
@@ -1619,7 +1660,7 @@ msgstr "Ispiši potvrdu"
#. module: account
#: view:account.change.currency:0
msgid "This wizard will change the currency of the invoice"
-msgstr "Čarobnjak za promjenu valute računa"
+msgstr "Asistent za promjenu valute računa"
#. module: account
#: model:ir.actions.act_window,help:account.action_account_chart
@@ -1628,6 +1669,8 @@ msgid ""
"Have a complete tree view of all journal items per account code by clicking "
"on an account."
msgstr ""
+"Prikaži kontni plan poduzeća za fiskalnu godinu sa filterom razdoblja. "
+"Mogućnost podpregleda stavaka temeljnice po broju konta, kliknuti na konto."
#. module: account
#: constraint:account.fiscalyear:0
@@ -1638,7 +1681,7 @@ msgstr "Greška! Fiskalne godine se ne smiju preklapati"
#: code:addons/account/account_move_line.py:808
#, python-format
msgid "The account is not defined to be reconciled !"
-msgstr ""
+msgstr "Nije zadano zatvaranje IOS-a na ovom kontu !"
#. module: account
#: field:account.cashbox.line,pieces:0
@@ -1651,6 +1694,8 @@ msgid ""
"If the active field is set to False, it will allow you to hide the journal "
"period without removing it."
msgstr ""
+"If the active field is set to False, it will allow you to hide the journal "
+"period without removing it."
#. module: account
#: view:res.partner:0
@@ -1660,7 +1705,7 @@ msgstr "Dugovanje dobavljaču"
#. module: account
#: help:account.model.line,quantity:0
msgid "The optional quantity on entries"
-msgstr ""
+msgstr "The optional quantity on entries"
#. module: account
#: model:ir.actions.act_window,name:account.act_account_partner_account_move_all
@@ -1676,7 +1721,7 @@ msgstr "Morate navesti konto za stavku otpisa!"
#. module: account
#: model:ir.model,name:account.model_account_common_journal_report
msgid "Account Common Journal Report"
-msgstr ""
+msgstr "Izvješče konta opće temeljnice"
#. module: account
#: selection:account.partner.balance,display_partner:0
@@ -1722,13 +1767,13 @@ msgstr "Izvod u pripremi"
#. module: account
#: view:account.tax:0
msgid "Tax Declaration: Credit Notes"
-msgstr ""
+msgstr "Porezna prijava: Odobrenja"
#. module: account
#: code:addons/account/account.py:499
#, python-format
msgid "You cannot deactivate an account that contains account moves."
-msgstr ""
+msgstr "Ne možete deaktivirati račun koji sadrži stavke prometa."
#. module: account
#: field:account.move.line.reconcile,credit:0
@@ -1738,7 +1783,7 @@ msgstr "Potražni iznos"
#. module: account
#: constraint:account.move.line:0
msgid "You can not create move line on closed account."
-msgstr ""
+msgstr "Ne možete kreirati stavke prometa za zatvoreni račun."
#. module: account
#: code:addons/account/account.py:519
@@ -1747,6 +1792,8 @@ msgid ""
"You cannot change the type of account from 'Closed' to any other type which "
"contains account entries!"
msgstr ""
+"You cannot change the type of account from 'Closed' to any other type which "
+"contains account entries!"
#. module: account
#: view:res.company:0
@@ -1756,14 +1803,14 @@ msgstr "Konto dobiti/gubitka i rezerve"
#. module: account
#: sql_constraint:account.move.line:0
msgid "Wrong credit or debit value in accounting entry !"
-msgstr ""
+msgstr "Pogrešno kreditna ili debitnom vrijednost unešene stavke!"
#. module: account
#: view:account.invoice.report:0
#: model:ir.actions.act_window,name:account.action_account_invoice_report_all
#: model:ir.ui.menu,name:account.menu_action_account_invoice_report_all
msgid "Invoices Analysis"
-msgstr "analiza računa"
+msgstr "Analiza računa"
#. module: account
#: model:ir.model,name:account.model_account_period_close
@@ -1783,7 +1830,7 @@ msgstr "Stavke"
#. module: account
#: report:account.tax.code.entries:0
msgid "A/c Code"
-msgstr ""
+msgstr "A/c Code"
#. module: account
#: field:account.invoice,move_id:0
@@ -1794,7 +1841,7 @@ msgstr "Temeljnica"
#. module: account
#: view:account.tax:0
msgid "Tax Declaration: Invoices"
-msgstr "Porezna prijava"
+msgstr "Porezne grupe računa"
#. module: account
#: field:account.cashbox.line,subtotal:0
@@ -1809,7 +1856,7 @@ msgstr "Analiza blagajne"
#. module: account
#: constraint:res.company:0
msgid "Error! You can not create recursive companies."
-msgstr "Greška! Ne možete stvoriti rekurzivne tvrtke."
+msgstr "Pogreška! Ne možete kreirati rekurzivne organizacije."
#. module: account
#: view:account.analytic.account:0
@@ -1858,7 +1905,7 @@ msgstr "Završni saldo na temelju početnog stanja i transakcija"
#: model:process.node,note:account.process_node_reconciliation0
#: model:process.node,note:account.process_node_supplierreconciliation0
msgid "Comparison between accounting and payment entries"
-msgstr "Usporedba Cesti Cesti između knjiženja i plaćanja"
+msgstr "Usporedba stavki knjiženja i plaćanja"
#. module: account
#: view:account.tax:0
@@ -1882,6 +1929,8 @@ msgid ""
"It adds the currency column if the currency is different then the company "
"currency"
msgstr ""
+"It adds the currency column if the currency is different then the company "
+"currency"
#. module: account
#: help:account.journal,allow_date:0
@@ -1911,7 +1960,7 @@ msgstr "Otkazan"
#: view:account.invoice:0
#: view:report.invoice.created:0
msgid "Untaxed Amount"
-msgstr "Iznos bez poreza"
+msgstr "Osnovica"
#. module: account
#: help:account.tax,active:0
@@ -1927,13 +1976,16 @@ msgid ""
"be with same name as statement name. This allows the statement entries to "
"have the same references than the statement itself"
msgstr ""
+"if you give the Name other then /, its created Accounting Entries Move will "
+"be with same name as statement name. This allows the statement entries to "
+"have the same references than the statement itself"
#. module: account
#: model:ir.actions.act_window,name:account.action_account_unreconcile
#: model:ir.actions.act_window,name:account.action_account_unreconcile_reconcile
#: model:ir.actions.act_window,name:account.action_account_unreconcile_select
msgid "Unreconcile Entries"
-msgstr "Poništi zatvaranje stavki"
+msgstr "Otvori stavke"
#. module: account
#: field:account.move.reconcile,line_partial_ids:0
@@ -1949,7 +2001,7 @@ msgstr "Fiskalna godina"
#: view:account.journal.select:0
#: view:project.account.analytic.line:0
msgid "Open Entries"
-msgstr "Otvori stavke"
+msgstr "Prikaži stavke"
#. module: account
#: field:account.automatic.reconcile,account_ids:0
@@ -1996,6 +2048,8 @@ msgid ""
"Invalid period ! Some periods overlap or the date period is not in the scope "
"of the fiscal year. "
msgstr ""
+"Neispravano razdoblje! Neki od razdoblja se preklapaju ili datum razdoblja "
+"nije u okviru fiskalne godine. "
#. module: account
#: selection:account.invoice,state:0
@@ -2018,8 +2072,8 @@ msgid ""
"There is no default default debit account defined \n"
"on journal \"%s\""
msgstr ""
-"Nije definiran zadani dugovni konto \n"
-"za dnevnikl \"%s\""
+"Nije definiran uobičajeni dugovni konto \n"
+"za dnevnik \"%s\""
#. module: account
#: help:account.account,type:0
@@ -2032,10 +2086,15 @@ msgid ""
"partners accounts (for debit/credit computations), closed for depreciated "
"accounts."
msgstr ""
+"This type is used to differentiate types with special effects in OpenERP: "
+"view can not have entries, consolidation are accounts that can have children "
+"accounts for multi-company consolidations, payable/receivable are for "
+"partners accounts (for debit/credit computations), closed for depreciated "
+"accounts."
#. module: account
#: view:account.chart.template:0
-msgid "Search Chart of Accounts Templates"
+msgid "Search Chart of Account Templates"
msgstr "Traži predloške kontnog plana"
#. module: account
@@ -2045,6 +2104,9 @@ msgid ""
"certified Chart of Accounts exists for your specified country, a generic one "
"can be installed and will be selected by default."
msgstr ""
+"The default Chart of Accounts is matching your country selection. If no "
+"certified Chart of Accounts exists for your specified country, a generic one "
+"can be installed and will be selected by default."
#. module: account
#: view:account.account.type:0
@@ -2070,7 +2132,7 @@ msgstr "Opis"
#: code:addons/account/installer.py:498
#, python-format
msgid "ECNJ"
-msgstr ""
+msgstr "ECNJ"
#. module: account
#: view:account.subscription:0
@@ -2089,7 +2151,7 @@ msgstr "Konto prihoda"
#: code:addons/account/invoice.py:352
#, python-format
msgid "There is no Accounting Journal of type Sale/Purchase defined!"
-msgstr ""
+msgstr "Nije definiran dnevnik tipa Prodaja/Nabava!"
#. module: account
#: view:product.category:0
@@ -2102,7 +2164,7 @@ msgstr "Računovodstveni podaci"
#: report:account.general.ledger:0
#: report:account.general.ledger_landscape:0
msgid "Entries Sorted By"
-msgstr "Stavke poredane po"
+msgstr "Entries Sorted By"
#. module: account
#: field:account.change.currency,currency_id:0
@@ -2112,7 +2174,7 @@ msgstr "Promjeni u"
#. module: account
#: view:account.entries.report:0
msgid "# of Products Qty "
-msgstr ""
+msgstr "# količine proizvoda "
#. module: account
#: model:ir.model,name:account.model_product_template
@@ -2166,12 +2228,12 @@ msgstr "Ostavite prazno za sve otvorene fiskalne godine"
#. module: account
#: model:ir.model,name:account.model_account_move
msgid "Account Entry"
-msgstr "Stavka knjiženja"
+msgstr "Temeljnica"
#. module: account
#: field:account.sequence.fiscalyear,sequence_main_id:0
msgid "Main Sequence"
-msgstr "Glavna sekvenca"
+msgstr "Glavna br. serija"
#. module: account
#: field:account.invoice,payment_term:0
@@ -2220,7 +2282,7 @@ msgstr "Otvoreno"
#: model:process.node,note:account.process_node_draftinvoices0
#: model:process.node,note:account.process_node_supplierdraftinvoices0
msgid "Draft state of an invoice"
-msgstr "Stanje računa 'U pripremi'"
+msgstr "Stanje računa 'Nacrt'"
#. module: account
#: help:account.account,reconcile:0
@@ -2238,7 +2300,7 @@ msgstr "Zatvaranje salda konti"
#: field:account.tax,tax_code_id:0
#: view:account.tax.code:0
msgid "Account Tax Code"
-msgstr "Šifra PDV obrasca"
+msgstr "Porezna grupa za porez"
#. module: account
#: code:addons/account/invoice.py:545
@@ -2249,12 +2311,16 @@ msgid ""
"You can create one in the menu: \n"
"Configuration\\Financial Accounting\\Accounts\\Journals."
msgstr ""
+"Can't find any account journal of %s type for this company.\n"
+"\n"
+"You can create one in the menu: \n"
+"Configuration\\Financial Accounting\\Accounts\\Journals."
#. module: account
#: field:account.invoice.tax,base_code_id:0
#: field:account.tax.template,base_code_id:0
msgid "Base Code"
-msgstr "Osnovna Šifra"
+msgstr "Grupa osnovice"
#. module: account
#: help:account.invoice.tax,sequence:0
@@ -2267,7 +2333,7 @@ msgstr "Određuje poredak u popisu poreza na računu."
#: field:account.tax.template,base_sign:0
#: field:account.tax.template,ref_base_sign:0
msgid "Base Code Sign"
-msgstr "Predznak šifre osnovice"
+msgstr "Koef. osnovice"
#. module: account
#: view:account.vat.declaration:0
@@ -2279,6 +2345,12 @@ msgid ""
"useful because it enables you to preview at any time the tax that you owe at "
"the start and end of the month or quarter."
msgstr ""
+"This menu prints a VAT declaration based on invoices or payments. Select one "
+"or several periods of the fiscal year. The information required for a tax "
+"declaration is automatically generated by OpenERP from invoices (or "
+"payments, in some countries). This data is updated in real time. That’s very "
+"useful because it enables you to preview at any time the tax that you owe at "
+"the start and end of the month or quarter."
#. module: account
#: selection:account.move.line,centralisation:0
@@ -2289,7 +2361,7 @@ msgstr "Centralizacija Dugovanja"
#: view:account.invoice.confirm:0
#: model:ir.actions.act_window,name:account.action_account_invoice_confirm
msgid "Confirm Draft Invoices"
-msgstr "Porvrdite pripremljene račune"
+msgstr "Potvrdi nacrte račune"
#. module: account
#: field:account.entries.report,day:0
@@ -2356,18 +2428,21 @@ msgstr "Opis knjiženja"
msgid ""
"The fiscal position will determine taxes and the accounts used for the "
"partner."
-msgstr "Fiskalna pozicija određuje poreze i konta za partnera."
+msgstr ""
+"Fiskalna pozicija određuje/mjenja poreze i konta za partnera kad se "
+"razlikuju od zadanih poreza i konta proizvoda."
#. module: account
#: view:account.print.journal:0
msgid ""
"This report gives you an overview of the situation of a specific journal"
msgstr ""
+"This report gives you an overview of the situation of a specific journal"
#. module: account
#: constraint:product.category:0
msgid "Error ! You can not create recursive categories."
-msgstr "Greška! Ne možete stvoriti rekurzivne kategorije."
+msgstr "Greška ! Ne možete stvoriti rekurzivne grupe."
#. module: account
#: report:account.invoice:0
@@ -2423,6 +2498,8 @@ msgid ""
"You cannot modify company of this journal as its related record exist in "
"Entry Lines"
msgstr ""
+"You cannot modify company of this journal as its related record exist in "
+"Entry Lines"
#. module: account
#: report:account.journal.period.print:0
@@ -2469,7 +2546,7 @@ msgstr "Odaberite ili poreznu grupu poreza ili poreznu grupu osnovice."
#. module: account
#: model:ir.ui.menu,name:account.menu_automatic_reconcile
msgid "Automatic Reconciliation"
-msgstr "Automatsko zatvaranje"
+msgstr "Automatsko zatvaranje IOS-a"
#. module: account
#: field:account.invoice,reconciled:0
@@ -2480,7 +2557,7 @@ msgstr "Plaćeno/Usklađeno"
#: field:account.tax,ref_base_code_id:0
#: field:account.tax.template,ref_base_code_id:0
msgid "Refund Base Code"
-msgstr "Šifra osnovice povrata"
+msgstr "Porezna grupa za osnovicu"
#. module: account
#: model:ir.actions.act_window,name:account.action_bank_statement_periodic_tree
@@ -2514,13 +2591,15 @@ msgid ""
"Automatically generate entries based on what has been entered in the system "
"before a specific date."
msgstr ""
+"Automatically generate entries based on what has been entered in the system "
+"before a specific date."
#. module: account
#: view:account.aged.trial.balance:0
#: model:ir.actions.act_window,name:account.action_account_aged_balance_view
#: model:ir.ui.menu,name:account.menu_aged_trial_balance
msgid "Aged Partner Balance"
-msgstr "Struktura potraživanja/obveza partnera"
+msgstr "Struktura IOS-a partnera"
#. module: account
#: model:process.transition,name:account.process_transition_entriesreconcile0
@@ -2542,12 +2621,17 @@ msgid ""
"Note that journal entries that are automatically created by the system are "
"always skipping that state."
msgstr ""
+"Check this box if you don't want new journal entries to pass through the "
+"'draft' state and instead goes directly to the 'posted state' without any "
+"manual validation. \n"
+"Note that journal entries that are automatically created by the system are "
+"always skipping that state."
#. module: account
#: model:ir.actions.server,name:account.ir_actions_server_action_wizard_multi_chart
#: model:ir.ui.menu,name:account.menu_act_ir_actions_bleble
msgid "New Company Financial Setting"
-msgstr ""
+msgstr "Financijske postavke nove organizacije"
#. module: account
#: model:ir.actions.act_window,name:account.action_report_account_sales_tree_all
@@ -2559,7 +2643,7 @@ msgstr "Prodaje po kontu"
#. module: account
#: view:account.use.model:0
msgid "This wizard will create recurring accounting entries"
-msgstr ""
+msgstr "Asistent za kreiranje ponavljajućih temeljnica"
#. module: account
#: code:addons/account/account.py:1181
@@ -2582,7 +2666,7 @@ msgstr "Morate definirati analitički dnevnik na dnevniku '%s' !"
#: model:ir.actions.act_window,name:account.action_tax_code_list
#: model:ir.ui.menu,name:account.menu_action_tax_code_list
msgid "Tax codes"
-msgstr "Šifre poreza"
+msgstr "Porezne grupe"
#. module: account
#: model:ir.ui.menu,name:account.menu_account_customer
@@ -2617,7 +2701,7 @@ msgstr ""
#. module: account
#: model:process.transition,note:account.process_transition_paymentreconcile0
msgid "Payment entries are the second input of the reconciliation."
-msgstr ""
+msgstr "Payment entries are the second input of the reconciliation."
#. module: account
#: report:account.move.voucher:0
@@ -2644,6 +2728,8 @@ msgid ""
"The optional quantity expressed by this line, eg: number of product sold. "
"The quantity is not a legal requirement but is very useful for some reports."
msgstr ""
+"The optional quantity expressed by this line, eg: number of product sold. "
+"The quantity is not a legal requirement but is very useful for some reports."
#. module: account
#: view:account.payment.term.line:0
@@ -2660,28 +2746,29 @@ msgstr "Obavezno"
#: field:product.category,property_account_expense_categ:0
#: field:product.template,property_account_expense:0
msgid "Expense Account"
-msgstr "Konto rashoda"
+msgstr "Konto troška"
#. module: account
#: help:account.invoice,period_id:0
msgid "Keep empty to use the period of the validation(invoice) date."
-msgstr "Ostavite prazno"
+msgstr "Prazno za datum potvrde."
#. module: account
#: help:account.bank.statement,account_id:0
msgid ""
"used in statement reconciliation domain, but shouldn't be used elswhere."
msgstr ""
+"used in statement reconciliation domain, but shouldn't be used elswhere."
#. module: account
#: field:account.invoice.tax,base_amount:0
msgid "Base Code Amount"
-msgstr "Iznos osnvice"
+msgstr "Iznos osnovice"
#. module: account
#: field:wizard.multi.charts.accounts,sale_tax:0
msgid "Default Sale Tax"
-msgstr "Zadani porez prodaje"
+msgstr "Uobičajeni porezi prodaje"
#. module: account
#: help:account.model.line,date_maturity:0
@@ -2690,6 +2777,8 @@ msgid ""
"between the creation date or the creation date of the entries plus the "
"partner payment terms."
msgstr ""
+"Datum dospijeća generiranih stavaka modelal. Možete birati između datuma "
+"izrade ili datum izrade/unosa plus uvjeta plaćanja partnera."
#. module: account
#: model:ir.ui.menu,name:account.menu_finance_accounting
@@ -2725,6 +2814,8 @@ msgid ""
"It adds initial balance row on report which display previous sum amount of "
"debit/credit/balance"
msgstr ""
+"It adds initial balance row on report which display previous sum amount of "
+"debit/credit/balance"
#. module: account
#: view:account.analytic.line:0
@@ -2785,7 +2876,7 @@ msgstr "Uk. transakcije"
#. module: account
#: view:res.partner:0
msgid "Bank account"
-msgstr "Konto banke"
+msgstr "Bankovni račun"
#. module: account
#: field:account.chart.template,tax_template_ids:0
@@ -2801,6 +2892,11 @@ msgid ""
"software system you may have to use the rate at date. Incoming transactions "
"always use the rate at date."
msgstr ""
+"This will select how the current currency rate for outgoing transactions is "
+"computed. In most countries the legal method is \"average\" but only a few "
+"software systems are able to manage this. So if you import from another "
+"software system you may have to use the rate at date. Incoming transactions "
+"always use the rate at date."
#. module: account
#: help:wizard.multi.charts.accounts,code_digits:0
@@ -2810,7 +2906,7 @@ msgstr "Broj znamenki za upotrebu u šifri konta"
#. module: account
#: field:account.payment.term.line,name:0
msgid "Line Name"
-msgstr "Naziv redka"
+msgstr "Naziv stavke"
#. module: account
#: view:account.fiscalyear:0
@@ -2877,7 +2973,7 @@ msgstr "Elektronska datoteka"
#. module: account
#: view:res.partner:0
msgid "Customer Credit"
-msgstr "Potraživanja kupca"
+msgstr "Potraživanja od kupca"
#. module: account
#: model:ir.model,name:account.model_account_tax_code_template
@@ -2897,7 +2993,7 @@ msgstr "Saldo konti partnera"
#. module: account
#: help:account.journal.column,sequence:0
msgid "Gives the sequence order to journal column."
-msgstr ""
+msgstr "Gives the sequence order to journal column."
#. module: account
#: view:account.tax.template:0
@@ -2909,7 +3005,7 @@ msgstr "Prijava poreza"
#: help:account.account.template,currency_id:0
#: help:account.bank.accounts.wizard,currency_id:0
msgid "Forces all moves for this account to have this secondary currency."
-msgstr ""
+msgstr "Forces all moves for this account to have this secondary currency."
#. module: account
#: model:ir.actions.act_window,help:account.action_validate_account_move_line
@@ -2917,6 +3013,8 @@ msgid ""
"This wizard will validate all journal entries of a particular journal and "
"period. Once journal entries are validated, you can not update them anymore."
msgstr ""
+"Ovaj asistent će knjižiti sve neknjižene stavke odabranog dnevnika za "
+"odabrani period."
#. module: account
#: model:ir.actions.act_window,name:account.action_account_chart_template_form
@@ -2932,7 +3030,7 @@ msgstr "Generiraj kontni plan iz predloška"
#. module: account
#: model:ir.model,name:account.model_account_unreconcile_reconcile
msgid "Account Unreconcile Reconcile"
-msgstr ""
+msgstr "Račun Neusklađen Usklađen"
#. module: account
#: help:account.account.type,close_method:0
@@ -2947,6 +3045,13 @@ msgid ""
" 'Unreconciled' will copy only the journal items that were unreconciled on "
"the first day of the new fiscal year."
msgstr ""
+"Postavite metodu knjiženja kod zatvaranja konta na kraju godine.\n"
+"Sva konta ovog tipa će se zatvarati prema odabranoj metodi.\n"
+"\n"
+" 'Ništa' - neće generirati stavke.\n"
+" 'Saldo' - koristi se uglavnom za konta banke i blagajne.\n"
+" 'Stavke' - sve stavke se prenose u novu godinu(i zatvorene).\n"
+" 'Otvorene stavke' - prenose se otvorene stavke (konta kupaca i dobavljača)."
#. module: account
#: view:account.tax:0
@@ -3023,7 +3128,7 @@ msgstr "Nabava"
#: model:ir.actions.act_window,name:account.action_account_installer
#: view:wizard.multi.charts.accounts:0
msgid "Accounting Application Configuration"
-msgstr ""
+msgstr "Accounting Application Configuration"
#. module: account
#: model:ir.actions.act_window,name:account.open_board_account
@@ -3065,6 +3170,8 @@ msgid ""
"The amount expressed in the related account currency if not equal to the "
"company one."
msgstr ""
+"The amount expressed in the related account currency if not equal to the "
+"company one."
#. module: account
#: report:account.move.voucher:0
@@ -3111,12 +3218,12 @@ msgstr "Traži dnevnik"
#. module: account
#: model:ir.actions.act_window,name:account.action_invoice_tree_pending_invoice
msgid "Pending Invoice"
-msgstr ""
+msgstr "Pending Invoice"
#. module: account
#: selection:account.subscription,period_type:0
msgid "year"
-msgstr "godina"
+msgstr "year"
#. module: account
#: report:account.move.voucher:0
@@ -3129,6 +3236,8 @@ msgid ""
"All selected journal entries will be validated and posted. It means you "
"won't be able to modify their accounting fields anymore."
msgstr ""
+"Sve odabrane stavke dnevnika će biti potvrđena i objavljena. To znači da "
+"nećete moći modificirati svoje računovodstvene polja više."
#. module: account
#: code:addons/account/invoice.py:370
@@ -3149,7 +3258,7 @@ msgstr "Prijenosi"
#. module: account
#: view:account.payment.term.line:0
msgid " value amount: n.a"
-msgstr ""
+msgstr " vrijednost iznos: n.a"
#. module: account
#: view:account.chart:0
@@ -3181,7 +3290,7 @@ msgstr "Naziv pozicije PDV obrasca"
#: report:account.invoice:0
#: model:process.node,name:account.process_node_draftinvoices0
msgid "Draft Invoice"
-msgstr "Neodobreni računi"
+msgstr "Nacrt računa"
#. module: account
#: code:addons/account/wizard/account_invoice_state.py:68
@@ -3190,6 +3299,8 @@ msgid ""
"Selected Invoice(s) cannot be cancelled as they are already in 'Cancelled' "
"or 'Done' state!"
msgstr ""
+"Odabrani račun(i) se ne mogu otkazati jer su u stanju 'Otkazan' ili "
+"'Izvršen'!"
#. module: account
#: code:addons/account/account.py:522
@@ -3198,6 +3309,8 @@ msgid ""
"You cannot change the type of account from '%s' to '%s' type as it contains "
"account entries!"
msgstr ""
+"You cannot change the type of account from '%s' to '%s' type as it contains "
+"account entries!"
#. module: account
#: report:account.general.ledger:0
@@ -3213,13 +3326,13 @@ msgstr "Podaci računa"
#. module: account
#: field:account.invoice.report,state:0
msgid "Invoice State"
-msgstr "Stanje fakture"
+msgstr "Stanje računa"
#. module: account
#: view:account.invoice.report:0
#: field:account.invoice.report,categ_id:0
msgid "Category of Product"
-msgstr "Kategorija proizvoda"
+msgstr "Grupa proizvoda"
#. module: account
#: view:account.move:0
@@ -3238,7 +3351,7 @@ msgstr "Kreiraj konto"
#. module: account
#: model:ir.model,name:account.model_report_account_type_sales
msgid "Report of the Sales by Account Type"
-msgstr ""
+msgstr "Izvještaj o prodaji po vrsti konta"
#. module: account
#: selection:account.account.type,close_method:0
@@ -3248,7 +3361,7 @@ msgstr "Detalji"
#. module: account
#: field:account.installer,bank_accounts_id:0
msgid "Your Bank and Cash Accounts"
-msgstr ""
+msgstr "Your Bank and Cash Accounts"
#. module: account
#: report:account.invoice:0
@@ -3271,12 +3384,12 @@ msgstr "PDV :"
#: report:pl.account:0
#: report:pl.account.horizontal:0
msgid "Chart of Accounts"
-msgstr "Kontni plan"
+msgstr "Chart of Accounts"
#. module: account
#: view:account.tax.chart:0
msgid "(If you do not select period it will take all open periods)"
-msgstr ""
+msgstr "(prazno - sva otvorena razdoblja)"
#. module: account
#: field:account.journal,centralisation:0
@@ -3286,7 +3399,7 @@ msgstr "Centralizirana stavka zatvaranja"
#. module: account
#: model:ir.model,name:account.model_account_partner_reconcile_process
msgid "Reconcilation Process partner by partner"
-msgstr ""
+msgstr "Reconcilation Process partner by partner"
#. module: account
#: selection:account.automatic.reconcile,power:0
@@ -3343,13 +3456,14 @@ msgstr "Datum"
#: view:account.unreconcile:0
#: view:account.unreconcile.reconcile:0
msgid "Unreconcile"
-msgstr "Poništi zatvaranje"
+msgstr "Otvori stavke"
#. module: account
#: code:addons/account/wizard/account_fiscalyear_close.py:79
#, python-format
msgid "The journal must have default credit and debit account"
-msgstr "Dnevnik mora imati zadani potražni i dugovni konto."
+msgstr ""
+"Dnevnik mora imati zadani dugovni i potražni konto radi protu knjiženja."
#. module: account
#: view:account.chart.template:0
@@ -3364,6 +3478,9 @@ msgid ""
"based on partner payment term!\n"
"Please define partner on it!"
msgstr ""
+"Maturity date of entry line generated by model line '%s' of model '%s' is "
+"based on partner payment term!\n"
+"Please define partner on it!"
#. module: account
#: code:addons/account/account_move_line.py:810
@@ -3378,6 +3495,8 @@ msgid ""
"You cannot validate a Journal Entry unless all journal items are in same "
"chart of accounts !"
msgstr ""
+"Nije dozvoljeno potvrđivanje temeljnice na kojoj stavke pripadaju različitim "
+"kontnim planovima!"
#. module: account
#: view:account.tax:0
@@ -3432,7 +3551,7 @@ msgstr ""
#: view:account.tax:0
#: view:account.tax.template:0
msgid "Applicable Code (if type=code)"
-msgstr "Primjenjeni kod (ako je tip=Python kod)"
+msgstr "Primjenjeni kod (ako je Python kod)"
#. module: account
#: view:account.invoice.report:0
@@ -3477,12 +3596,12 @@ msgstr "Nalog za plaćanje"
msgid ""
"Check this option if you want the user to reconcile entries in this account."
msgstr ""
-"Cekirajte ovde da omogućuite korisniku zatvaranje stavaka za ovaj konto."
+"Odaberite ako želite omogućiti zatvaranje stavaka (IOS) za ovaj konto."
#. module: account
#: model:ir.actions.report.xml,name:account.account_account_balance_landscape
msgid "Account balance"
-msgstr "Saldo računa"
+msgstr "Saldo konta"
#. module: account
#: report:account.invoice:0
@@ -3519,17 +3638,17 @@ msgstr "Odabrali ste jedinicu mjere koja nije kompatibilna s proizvodom."
msgid ""
"The Payment Term of Supplier does not have Payment Term Lines(Computation) "
"defined !"
-msgstr ""
+msgstr "Uvjet plaćanja dobavljača nema definirane stavke plaćanja!"
#. module: account
#: view:account.state.open:0
msgid "Open Invoice"
-msgstr "otvoreni računi"
+msgstr "Otvori račun"
#. module: account
#: field:account.invoice.tax,factor_tax:0
msgid "Multipication factor Tax code"
-msgstr ""
+msgstr "Koeficijent porezne grupe"
#. module: account
#: view:account.fiscal.position:0
@@ -3552,7 +3671,7 @@ msgstr "Naziv"
#. module: account
#: model:ir.model,name:account.model_account_aged_trial_balance
msgid "Account Aged Trial balance Report"
-msgstr ""
+msgstr "Bruto bilanca (Aged Trial balance)"
#. module: account
#: field:account.move.line,date:0
@@ -3589,11 +3708,13 @@ msgid ""
"Print Report with the currency column if the currency is different then the "
"company currency"
msgstr ""
+"Print Report with the currency column if the currency is different then the "
+"company currency"
#. module: account
#: view:account.analytic.line:0
msgid "General Accounting"
-msgstr ""
+msgstr "Glavna knjiga"
#. module: account
#: report:account.overdue:0
@@ -3608,6 +3729,10 @@ msgid ""
"debit/credit accounts, of type 'situation' and with a centralized "
"counterpart."
msgstr ""
+"Najbolja praksa je definirati dnevnik(e) na kojima se knjiže početna stanja "
+"svih poslovnih godina. Za ove dnevnike treba definirati dugovni i potražni "
+"konto protustavki, a vrsta dnevnika mora biti 'Početno stanje' sa "
+"centraliziranom(jednom) protustavkom."
#. module: account
#: view:account.installer:0
@@ -3621,12 +3746,12 @@ msgstr "naslov"
#: view:account.period:0
#: view:account.subscription:0
msgid "Set to Draft"
-msgstr "Postavi na neodobreno"
+msgstr "Postavi na nacrt"
#. module: account
#: model:ir.actions.act_window,name:account.action_subscription_form
msgid "Recurring Lines"
-msgstr "Ponavljajuće linije"
+msgstr "Ponavljajuće stavke"
#. module: account
#: field:account.partner.balance,display_partner:0
@@ -3642,6 +3767,7 @@ msgstr "Potvrdi"
#: sql_constraint:account.model.line:0
msgid "Wrong credit or debit value in model (Credit Or Debit Must Be \"0\")!"
msgstr ""
+"Wrong credit or debit value in model (Credit Or Debit Must Be \"0\")!"
#. module: account
#: model:ir.actions.act_window,help:account.action_account_invoice_report_all
@@ -3650,6 +3776,8 @@ msgid ""
"customer as well as payment delays. The tool search can also be used to "
"personalise your Invoices reports and so, match this analysis to your needs."
msgstr ""
+"Pregled fakturiranih iznosa i kašnjenja plaćanja. Za prilagodbu izvještaja "
+"vašim potrebama koristite funkcionalnosti traženja i grupiranja."
#. module: account
#: view:account.invoice.confirm:0
@@ -3734,7 +3862,7 @@ msgstr "Traži predloške poreza"
#. module: account
#: model:ir.ui.menu,name:account.periodical_processing_journal_entries_validation
msgid "Draft Entries"
-msgstr "U pripremi"
+msgstr "Stavke u stanju \"Nacrt\""
#. module: account
#: field:account.account,shortcut:0
@@ -3768,7 +3896,7 @@ msgstr "Bilanca"
#. module: account
#: model:ir.model,name:account.model_account_invoice_cancel
msgid "Cancel the Selected Invoices"
-msgstr ""
+msgstr "Otkaži odabrane račune"
#. module: account
#: help:product.category,property_account_income_categ:0
@@ -3789,6 +3917,8 @@ msgid ""
"Analytic costs (timesheets, some purchased products, ...) come from analytic "
"accounts. These generate draft supplier invoices."
msgstr ""
+"Analitički troškovi (ev. rada, nabava, ...) dolaze sa analitičkih konta. Oni "
+"mogu kreirati nacrte ulaznih računa."
#. module: account
#: view:account.bank.statement:0
@@ -3810,7 +3940,7 @@ msgstr "Tip konta"
#: code:addons/account/invoice.py:714
#, python-format
msgid "Global taxes defined, but are not in invoice lines !"
-msgstr ""
+msgstr "Na stavkama računa nema definiranih poreza!"
#. module: account
#: field:account.entries.report,month:0
@@ -3837,7 +3967,7 @@ msgstr "Bilješka"
#. module: account
#: view:account.analytic.account:0
msgid "Overdue Account"
-msgstr ""
+msgstr "Konto duga"
#. module: account
#: selection:account.invoice,state:0
@@ -3864,6 +3994,9 @@ msgid ""
"the system on document validation (invoices, bank statements...) and will be "
"created in 'Posted' state."
msgstr ""
+"Ručno upisane temeljnice su obično u stanju \"Neažurno\". Ovdje možete "
+"zadati opciju preskakanja ovog stanja za pojedini dnevnik. Tada će upisane "
+"stavke odmah biti u stanju \"Ažurno\"."
#. module: account
#: code:addons/account/account_analytic_line.py:91
@@ -3924,7 +4057,7 @@ msgstr "Raspon Mjeseci"
#. module: account
#: help:account.analytic.balance,empty_acc:0
msgid "Check if you want to display Accounts with 0 balance too."
-msgstr ""
+msgstr "Check if you want to display Accounts with 0 balance too."
#. module: account
#: view:account.tax:0
@@ -3934,7 +4067,7 @@ msgstr "Kod izračuna"
#. module: account
#: view:account.account.template:0
msgid "Default taxes"
-msgstr "Zadani porezi"
+msgstr "Uobičajeni porezi"
#. module: account
#: code:addons/account/invoice.py:88
@@ -3953,6 +4086,8 @@ msgid ""
"When new move line is created the state will be 'Draft'.\n"
"* When all the payments are done it will be in 'Valid' state."
msgstr ""
+"Nakon upisa stanje stavke je 'Nacrt'.\n"
+"* Nakon plaćanja stanje postaje 'Ispravan'."
#. module: account
#: field:account.journal,view_id:0
@@ -3962,7 +4097,7 @@ msgstr "Način prikaza"
#. module: account
#: model:process.node,note:account.process_node_importinvoice0
msgid "Statement from invoice or payment"
-msgstr ""
+msgstr "Izvod iz računa ili plaćanja"
#. module: account
#: view:account.payment.term.line:0
@@ -3984,7 +4119,7 @@ msgstr "Naziv konta"
#. module: account
#: help:account.fiscalyear.close,report_name:0
msgid "Give name of the new entries"
-msgstr ""
+msgstr "Give name of the new entries"
#. module: account
#: model:ir.model,name:account.model_account_invoice_report
@@ -3994,13 +4129,13 @@ msgstr "Statistike računa"
#. module: account
#: model:process.transition,note:account.process_transition_paymentorderreconcilation0
msgid "Bank statements are entered in the system."
-msgstr ""
+msgstr "Bank statements are entered in the system."
#. module: account
#: code:addons/account/wizard/account_reconcile.py:133
#, python-format
msgid "Reconcile Writeoff"
-msgstr ""
+msgstr "Otpis"
#. module: account
#: field:account.model.line,date_maturity:0
@@ -4038,7 +4173,7 @@ msgstr "Ispiši račun"
#. module: account
#: view:account.tax.template:0
msgid "Credit Notes"
-msgstr "Knjižna odobrenja"
+msgstr "Odobrenja"
#. module: account
#: code:addons/account/account.py:2067
@@ -4050,7 +4185,7 @@ msgstr "Nema odgovarajućih perioda."
#. module: account
#: report:account.tax.code.entries:0
msgid "Voucher No"
-msgstr "Potvrda br."
+msgstr "Vaučer br."
#. module: account
#: view:wizard.multi.charts.accounts:0
@@ -4060,7 +4195,7 @@ msgstr "res_config_contents"
#. module: account
#: view:account.unreconcile:0
msgid "Unreconciliate transactions"
-msgstr ""
+msgstr "Unreconciliate transactions"
#. module: account
#: view:account.use.model:0
@@ -4070,7 +4205,7 @@ msgstr "Stvori stavke iz modela"
#. module: account
#: field:account.account.template,reconcile:0
msgid "Allow Reconciliation"
-msgstr "Dozvoli zatvaranje"
+msgstr "Allow Reconciliation"
#. module: account
#: view:account.analytic.account:0
@@ -4095,7 +4230,7 @@ msgstr "Porez uključen u cijenu"
#. module: account
#: model:ir.model,name:account.model_account_analytic_cost_ledger_journal_report
msgid "Account Analytic Cost Ledger For Journal Report"
-msgstr ""
+msgstr "Account Analytic Cost Ledger For Journal Report"
#. module: account
#: model:ir.actions.act_window,name:account.action_model_form
@@ -4137,12 +4272,12 @@ msgstr "Kontrola po vrsti kona"
#. module: account
#: help:account.journal,default_credit_account_id:0
msgid "It acts as a default account for credit amount"
-msgstr "Zadani konto za potražni iznos"
+msgstr "Uobičajeni potražni konto"
#. module: account
#: help:account.partner.ledger,reconcil:0
msgid "Consider reconciled entries"
-msgstr ""
+msgstr "Consider reconciled entries"
#. module: account
#: model:ir.actions.act_window,name:account.action_validate_account_move_line
@@ -4150,19 +4285,19 @@ msgstr ""
#: view:validate.account.move:0
#: view:validate.account.move.lines:0
msgid "Post Journal Entries"
-msgstr "Proknjiži stavke"
+msgstr "Knjiži temeljnicu"
#. module: account
#: selection:account.invoice,state:0
#: selection:account.invoice.report,state:0
#: selection:report.invoice.created,state:0
msgid "Cancelled"
-msgstr "Poništeno"
+msgstr "Otkazani"
#. module: account
#: help:account.bank.statement,balance_end_cash:0
msgid "Closing balance based on cashBox"
-msgstr ""
+msgstr "Završno stanje blagajne"
#. module: account
#: constraint:account.account:0
@@ -4213,7 +4348,7 @@ msgstr "Potvrđeno"
#. module: account
#: report:account.invoice:0
msgid "Cancelled Invoice"
-msgstr "Poništeni račun"
+msgstr "Otkazani račun"
#. module: account
#: code:addons/account/invoice.py:73
@@ -4229,6 +4364,9 @@ msgid ""
"the account \"%s - %s\". Clear the secondary currency field of the account "
"definition if you want to accept all currencies."
msgstr ""
+"Couldn't create move with currency different from the secondary currency of "
+"the account \"%s - %s\". Clear the secondary currency field of the account "
+"definition if you want to accept all currencies."
#. module: account
#: field:account.invoice.refund,date:0
@@ -4239,14 +4377,14 @@ msgstr "Datum postupka"
#: field:account.tax,ref_tax_code_id:0
#: field:account.tax.template,ref_tax_code_id:0
msgid "Refund Tax Code"
-msgstr "Porezna grupa povrata"
+msgstr "Porezna grupa odobrenja"
#. module: account
#: view:validate.account.move:0
msgid ""
"All draft account entries in this journal and period will be validated. It "
"means you won't be able to modify their accounting fields anymore."
-msgstr ""
+msgstr "Potvrđivanje svih nacrta knjiženja za odabrani dnevnik i period."
#. module: account
#: report:account.account.balance.landscape:0
@@ -4293,8 +4431,8 @@ msgid ""
"Please verify the price of the invoice !\n"
"The real total does not match the computed total."
msgstr ""
-"Molimo provjerite cijene na računu!\n"
-"Stvarna ukupna vrijednost se ne slaže sa izračunatom vrijednošću."
+"Molimo provjerite iznose na računu!\n"
+"Ukupna vrijednost se ne slaže sa izračunatom vrijednošću."
#. module: account
#: view:account.invoice:0
@@ -4322,7 +4460,7 @@ msgstr "Ne"
#. module: account
#: help:account.invoice.tax,tax_code_id:0
msgid "The tax basis of the tax declaration."
-msgstr ""
+msgstr "Osnovica za poreznu prijavu."
#. module: account
#: view:account.addtmpl.wizard:0
@@ -4352,7 +4490,7 @@ msgstr "Bankovni izvod korišten za zatvaranje banke"
#. module: account
#: model:process.transition,note:account.process_transition_suppliercustomerinvoice0
msgid "Draft invoices are validated. "
-msgstr ""
+msgstr "Nacrti računa su potvrđeni. "
#. module: account
#: view:account.bank.statement:0
@@ -4388,7 +4526,7 @@ msgstr "Porez se primjenjuje"
#: model:ir.ui.menu,name:account.menu_eaction_account_moves_sale
#, python-format
msgid "Journal Items"
-msgstr "Stavke dnevnika"
+msgstr "Stavke glavne knjige"
#. module: account
#: selection:account.account.type,report_type:0
@@ -4398,7 +4536,7 @@ msgstr "Bilanca (konta imovine)"
#. module: account
#: report:account.tax.code.entries:0
msgid "Third Party (Country)"
-msgstr ""
+msgstr "Third Party (Country)"
#. module: account
#: code:addons/account/account.py:938
@@ -4452,11 +4590,13 @@ msgid ""
"To print an analytics (or costs) journal for a given period. The report give "
"code, move name, account number, general amount and analytic amount."
msgstr ""
+"Ispis analitičkog dnevnika za razdoblje. Ispisuje se šifra, naziv stavke, "
+"konto, iznos glavne knjige i analitički iznos."
#. module: account
#: help:account.journal,refund_journal:0
msgid "Fill this if the journal is to be used for refunds of invoices."
-msgstr ""
+msgstr "Fill this if the journal is to be used for refunds of invoices."
#. module: account
#: view:account.fiscalyear.close:0
@@ -4503,6 +4643,8 @@ msgid ""
"You should set the journal to allow cancelling entries if you want to do "
"that."
msgstr ""
+"Nije dozvoljeno mijenjati knjižene stavke ovog dnevnikal !\n"
+"Ako to ipak želite dozvoliti promijenite postavke ovog dnevnika."
#. module: account
#: model:ir.ui.menu,name:account.account_template_folder
@@ -4518,7 +4660,7 @@ msgstr "Podređeni porezi"
#: code:addons/account/account.py:940
#, python-format
msgid "Start period should be smaller then End period"
-msgstr ""
+msgstr "Start period should be smaller then End period"
#. module: account
#: selection:account.automatic.reconcile,power:0
@@ -4610,7 +4752,7 @@ msgstr "Naziv stupca"
#: view:account.general.journal:0
msgid ""
"This report gives you an overview of the situation of your general journals"
-msgstr ""
+msgstr "Ovo izvješće daje pregled stanja vaše opće temeljnice"
#. module: account
#: field:account.entries.report,year:0
@@ -4688,7 +4830,7 @@ msgstr "Bilanca stanja"
#. module: account
#: model:ir.ui.menu,name:account.final_accounting_reports
msgid "Accounting Reports"
-msgstr "Izvješća"
+msgstr "Računovodstvena izvješća"
#. module: account
#: field:account.move,line_id:0
@@ -4713,7 +4855,7 @@ msgstr "JM"
#: code:addons/account/wizard/account_invoice_refund.py:138
#, python-format
msgid "No Period found on Invoice!"
-msgstr ""
+msgstr "Nije pronađeno razdoblje na računu!"
#. module: account
#: view:account.tax.template:0
@@ -4750,7 +4892,7 @@ msgstr "Iznos"
#: code:addons/account/wizard/account_fiscalyear_close.py:41
#, python-format
msgid "End of Fiscal Year Entry"
-msgstr "Knjiženja zatvaranja fiskalne godine"
+msgstr "Temeljnice zatvaranja fiskalne godine"
#. module: account
#: model:process.transition,name:account.process_transition_customerinvoice0
@@ -4768,6 +4910,8 @@ msgid ""
"The Journal Entry of the invoice have been totally reconciled with one or "
"several Journal Entries of payment."
msgstr ""
+"Stavka računa (potraživanje ili dugovanje) je kompletno zatvorena s jednom "
+"ili više stavaka plaćanja."
#. module: account
#: field:account.tax,child_depend:0
@@ -4791,7 +4935,7 @@ msgstr "Nije nađen period"
#. module: account
#: field:account.journal,update_posted:0
msgid "Allow Cancelling Entries"
-msgstr "Dozvoli storniranje stavki"
+msgstr "Dozvoli odažuriranje knjiženja"
#. module: account
#: field:account.tax.code,sign:0
@@ -4872,7 +5016,7 @@ msgstr "Kontrole unosa"
#: view:account.analytic.chart:0
#: view:project.account.analytic.line:0
msgid "(Keep empty to open the current situation)"
-msgstr "(Zadržite prazno da biste otvorili trenutno stanje)"
+msgstr "(prazno za trenutno stanje)"
#. module: account
#: field:account.analytic.Journal.report,date1:0
@@ -4896,7 +5040,7 @@ msgstr ""
#. module: account
#: model:ir.model,name:account.model_account_common_account_report
msgid "Account Common Account Report"
-msgstr ""
+msgstr "Account Common Account Report"
#. module: account
#: field:account.bank.statement.line,name:0
@@ -4913,14 +5057,14 @@ msgstr "Analitičko računovodstvo"
#: selection:account.invoice.report,type:0
#: selection:report.invoice.created,type:0
msgid "Customer Refund"
-msgstr "Povrat novca kupcu"
+msgstr "Odobrenje kupcu"
#. module: account
#: view:account.account:0
#: field:account.account,tax_ids:0
#: field:account.account.template,tax_ids:0
msgid "Default Taxes"
-msgstr "Zadani porezi"
+msgstr "Uobičajeni porezi"
#. module: account
#: field:account.tax,ref_tax_sign:0
@@ -4928,7 +5072,7 @@ msgstr "Zadani porezi"
#: field:account.tax.template,ref_tax_sign:0
#: field:account.tax.template,tax_sign:0
msgid "Tax Code Sign"
-msgstr "Predznak u PDV obrascu"
+msgstr "Koef. poreza"
#. module: account
#: model:ir.model,name:account.model_report_invoice_created
@@ -4960,6 +5104,9 @@ msgid ""
"something to reconcile or not. This figure already count the current partner "
"as reconciled."
msgstr ""
+"This is the remaining partners for who you should check if there is "
+"something to reconcile or not. This figure already count the current partner "
+"as reconciled."
#. module: account
#: view:account.subscription.line:0
@@ -4991,7 +5138,7 @@ msgstr "Promjeni valutu"
#: model:process.node,note:account.process_node_accountingentries0
#: model:process.node,note:account.process_node_supplieraccountingentries0
msgid "Accounting entries."
-msgstr ""
+msgstr "Accounting entries."
#. module: account
#: view:account.invoice:0
@@ -5017,6 +5164,8 @@ msgid ""
"According value related accounts will be display on respective reports "
"(Balance Sheet Profit & Loss Account)"
msgstr ""
+"Prema iznosu na koji se račun odnosi biti će prikazan na odgovarajućim "
+"izvješćima (Bilanca, Račun dobiti i gubitka)"
#. module: account
#: field:account.report.general.ledger,sortby:0
@@ -5030,6 +5179,8 @@ msgid ""
"There is no default default credit account defined \n"
"on journal \"%s\""
msgstr ""
+"Nije definiran uobičajeni potražni konto za\n"
+"dnevnik \"%s\""
#. module: account
#: field:account.entries.report,amount_currency:0
@@ -5045,7 +5196,7 @@ msgid ""
"Specified Journal does not have any account move entries in draft state for "
"this period"
msgstr ""
-"Navedeni dnevnik nema niti jednu stavku u stanju pripreme za ovo razdoblje"
+"Navedeni dnevnik nema niti jednu stavku u stanju \"Nacrt\" za ovo razdoblje"
#. module: account
#: model:ir.actions.act_window,name:account.action_view_move_line
@@ -5083,6 +5234,8 @@ msgid ""
"Number of partial amounts that can be combined to find a balance point can "
"be chosen as the power of the automatic reconciliation"
msgstr ""
+"Višekratnik automatskog zatvaranja je broj pojedinačnih iznosa koji će se "
+"kombinirati kod traženja odgovarajućeg iznosa"
#. module: account
#: help:account.payment.term.line,sequence:0
@@ -5114,6 +5267,9 @@ msgid ""
"impossible any new entry record. Close a fiscal year when you need to "
"finalize your end of year results definitive "
msgstr ""
+"Nakon knjiženja svih transakcije jedne poslovne godine, ovdje možete "
+"zatvoriti i zaključati poslovnu godinu. Zatvaranje će zatvoriti sve "
+"eventualno otvorene periode te godine i onemogućiti upis podataka. "
#. module: account
#: field:account.central.journal,amount_currency:0
@@ -5154,7 +5310,7 @@ msgstr "Dospjela potraživanja"
#. module: account
#: model:ir.actions.act_window,name:account.action_account_automatic_reconcile
msgid "Account Automatic Reconcile"
-msgstr "Automatsko zatvaranje"
+msgstr "Automatsko zatvaranje IOS-a"
#. module: account
#: view:account.move:0
@@ -5190,6 +5346,8 @@ msgid ""
"This module will support the Anglo-Saxons accounting methodology by changing "
"the accounting logic with stock transactions."
msgstr ""
+"This module will support the Anglo-Saxons accounting methodology by changing "
+"the accounting logic with stock transactions."
#. module: account
#: field:report.invoice.created,create_date:0
@@ -5259,6 +5417,8 @@ msgid ""
"Streamlines invoice payment and creates hooks to plug automated payment "
"systems in."
msgstr ""
+"Streamlines invoice payment and creates hooks to plug automated payment "
+"systems in."
#. module: account
#: field:account.payment.term.line,value:0
@@ -5308,6 +5468,9 @@ msgid ""
"document shows your debit and credit taking in consideration some criteria "
"you can choose by using the search tool."
msgstr ""
+"From this view, have an analysis of your different financial accounts. The "
+"document shows your debit and credit taking in consideration some criteria "
+"you can choose by using the search tool."
#. module: account
#: model:ir.actions.act_window,help:account.action_tax_code_list
@@ -5316,6 +5479,11 @@ msgid ""
"OpenERP allows you to define the tax structure and manage it from this menu. "
"You can define both numeric and alphanumeric tax codes."
msgstr ""
+"Definicija poreznih grupa ovisi o poreznim prijavama i poreznim izvještajima "
+"pojedine zemlje. Za svako polje porezne prijave potrebno je definirati jednu "
+"poreznu grupu, te dodatne grupe za stupce u knjigama URA/IRA kojih nema u "
+"poreznoj prijavi. Osim PDV-a porezne grupe je uputno kreirati i za ostale "
+"poreze npr. Porez na potrošnju ili razne trošarine koje ste obavezni plaćati."
#. module: account
#: help:account.partner.reconcile.process,progress:0
@@ -5323,6 +5491,8 @@ msgid ""
"Shows you the progress made today on the reconciliation process. Given by \n"
"Partners Reconciled Today \\ (Remaining Partners + Partners Reconciled Today)"
msgstr ""
+"Shows you the progress made today on the reconciliation process. Given by \n"
+"Partners Reconciled Today \\ (Remaining Partners + Partners Reconciled Today)"
#. module: account
#: help:account.payment.term.line,value:0
@@ -5331,6 +5501,8 @@ msgid ""
"that you should have your last line with the type 'Balance' to ensure that "
"the whole amount will be threated."
msgstr ""
+"Odaberite način izračuna ove stavke plaćanja. Dobra je praksa navesti "
+"posljednji redak tipa 'Saldo' kako bi se izračunao kompletan iznos."
#. module: account
#: field:account.invoice,period_id:0
@@ -5350,7 +5522,7 @@ msgstr "# linija"
#: code:addons/account/wizard/account_change_currency.py:60
#, python-format
msgid "New currency is not confirured properly !"
-msgstr ""
+msgstr "New currency is not confirured properly !"
#. module: account
#: field:account.aged.trial.balance,filter:0
@@ -5382,7 +5554,7 @@ msgstr "Ne mozete koristiti neaktivan konto!"
#: code:addons/account/account_move_line.py:803
#, python-format
msgid "Entries are not of the same account or already reconciled ! "
-msgstr "Stavke nisu istog konta ili su već usklađene ! "
+msgstr "Stavke nisu istog konta ili su već zatvorene! "
#. module: account
#: field:account.tax,account_collected_id:0
@@ -5470,7 +5642,7 @@ msgstr " 365 dana "
#: model:ir.actions.act_window,name:account.action_invoice_tree3
#: model:ir.ui.menu,name:account.menu_action_invoice_tree3
msgid "Customer Refunds"
-msgstr "Povrati od kupca"
+msgstr "Odobrenja kupcima"
#. module: account
#: view:account.payment.term.line:0
@@ -5496,7 +5668,7 @@ msgstr "nije implementirano"
#. module: account
#: help:account.journal,company_id:0
msgid "Company related to this journal"
-msgstr "Tvrtka za koju se vodi ovaj dnevnik"
+msgstr "Organizacija za koju se vodi ovaj dnevnik"
#. module: account
#: code:addons/account/wizard/account_invoice_state.py:44
@@ -5505,6 +5677,8 @@ msgid ""
"Selected Invoice(s) cannot be confirmed as they are not in 'Draft' or 'Pro-"
"Forma' state!"
msgstr ""
+"Ne mogu se potvrditi odabrani računi jer nisu svi u stanju 'Nacrt' ili 'Pro-"
+"Forma'!"
#. module: account
#: report:account.invoice:0
@@ -5542,6 +5716,11 @@ msgid ""
"line of the expense account. OpenERP will propose to you automatically the "
"Tax related to this account and the counterpart \"Account Payable\"."
msgstr ""
+"Ovu karticu koriste knjigovođe za ručni upis knjiženja u OpenERP. Ako želite "
+"upisati ulazni račun dobavljača, najprije upišite stavku troška, a program "
+"će automatski ponuditi slijedeću stavku(e) poreza prema definiranim porezima "
+"na kontu troška, a zatim i stavku ukupnog potraživanja dobavljača na kontu "
+"potraživanja partnera."
#. module: account
#: field:account.entries.report,date_created:0
@@ -5559,11 +5738,12 @@ msgid ""
"The code will be used to generate the numbers of the journal entries of this "
"journal."
msgstr ""
+"Ova šifra će se koristiti kao prefiks opisa/broja u stavkama knjiženja."
#. module: account
#: view:account.invoice:0
msgid "(keep empty to use the current period)"
-msgstr "(ostaviti prazno ako želite koristiti tekuće razdoblje)"
+msgstr "(ostaviti prazno za trenutno razdoblje)"
#. module: account
#: model:process.transition,note:account.process_transition_supplierreconcilepaid0
@@ -5571,6 +5751,7 @@ msgid ""
"As soon as the reconciliation is done, the invoice's state turns to “done” "
"(i.e. paid) in the system."
msgstr ""
+"Čim je obavljeno zatvaranje, stanje računa prelazi u \"izvršen\" (plaćen)."
#. module: account
#: code:addons/account/invoice.py:997
@@ -5587,7 +5768,7 @@ msgstr "Korijensko konto"
#. module: account
#: field:res.partner,last_reconciliation_date:0
msgid "Latest Reconciliation Date"
-msgstr ""
+msgstr "Zadnje zatvaranje IOS-a"
#. module: account
#: model:ir.model,name:account.model_account_analytic_line
@@ -5613,7 +5794,7 @@ msgstr "Postavke izvještaja"
#. module: account
#: constraint:account.move.line:0
msgid "Company must be same for its related account and period."
-msgstr ""
+msgstr "Company must be same for its related account and period."
#. module: account
#: field:account.tax,type:0
@@ -5635,7 +5816,7 @@ msgstr "Prijava poreza"
#. module: account
#: model:ir.model,name:account.model_res_company
msgid "Companies"
-msgstr "Tvrtke"
+msgstr "Organizacije"
#. module: account
#: code:addons/account/account.py:532
@@ -5644,6 +5825,8 @@ msgid ""
"You cannot modify Company of account as its related record exist in Entry "
"Lines"
msgstr ""
+"You cannot modify Company of account as its related record exist in Entry "
+"Lines"
#. module: account
#: help:account.fiscalyear.close.state,fy_id:0
@@ -5653,7 +5836,7 @@ msgstr "Odaberite fiskalnu godinu za zatvaranje"
#. module: account
#: help:account.chart.template,tax_template_ids:0
msgid "List of all the taxes that have to be installed by the wizard"
-msgstr "Popis svih poreza koji trebaju biti instalirani od strane čarobnjaka"
+msgstr "Popis svih poreza koje asistent treba instalirati"
#. module: account
#: model:ir.actions.report.xml,name:account.account_intracom
@@ -5768,7 +5951,7 @@ msgstr " broj dana: 30"
#. module: account
#: help:account.analytic.line,currency_id:0
msgid "The related account currency if not equal to the company one."
-msgstr ""
+msgstr "The related account currency if not equal to the company one."
#. module: account
#: view:account.analytic.account:0
@@ -5849,7 +6032,7 @@ msgstr "Primjenjivi tip"
#: field:account.invoice,reference:0
#: field:account.invoice.line,invoice_id:0
msgid "Invoice Reference"
-msgstr "Vezna oznaka računa"
+msgstr "Poziv na br."
#. module: account
#: help:account.tax.template,sequence:0
@@ -5874,7 +6057,7 @@ msgstr "Likvidnost"
#: model:ir.actions.act_window,name:account.action_account_analytic_journal_open_form
#: model:ir.ui.menu,name:account.account_analytic_journal_entries
msgid "Analytic Journal Items"
-msgstr ""
+msgstr "Stavke analitičkog dnevnika"
#. module: account
#: view:account.fiscalyear.close:0
@@ -5883,6 +6066,8 @@ msgid ""
"year. Note that you can run this wizard many times for the same fiscal year: "
"it will simply replace the old opening entries with the new ones."
msgstr ""
+"Ovaj asistent će kreirati temeljnicu početnog stanja u novoj godini. "
+"Najprije će obrisati postojeće knjiženje početnog stanja i kreirati novo."
#. module: account
#: model:ir.ui.menu,name:account.menu_finance_bank_and_cash
@@ -5897,16 +6082,20 @@ msgid ""
"the tool search to analyse information about analytic entries generated in "
"the system."
msgstr ""
+"From this view, have an analysis of your different analytic entries "
+"following the analytic account you defined matching your business need. Use "
+"the tool search to analyse information about analytic entries generated in "
+"the system."
#. module: account
#: sql_constraint:account.journal:0
msgid "The name of the journal must be unique per company !"
-msgstr ""
+msgstr "Naziv dnevnika mora biti jedinstven za jednu organizaciju!"
#. module: account
#: field:account.account.template,nocreate:0
msgid "Optional create"
-msgstr ""
+msgstr "Opcionalno kreiranje"
#. module: account
#: code:addons/account/invoice.py:406
@@ -5914,7 +6103,7 @@ msgstr ""
#: code:addons/account/invoice.py:1348
#, python-format
msgid "Can not find account chart for this company, Please Create account."
-msgstr ""
+msgstr "Can not find account chart for this company, Please Create account."
#. module: account
#: code:addons/account/wizard/account_report_aged_partner_balance.py:57
@@ -5933,7 +6122,7 @@ msgstr "Povrat URA"
#. module: account
#: model:ir.ui.menu,name:account.menu_dashboard_acc
msgid "Dashboard"
-msgstr "Kontrolna ploča"
+msgstr "Kokpit"
#. module: account
#: field:account.bank.statement,move_line_ids:0
@@ -6031,7 +6220,7 @@ msgstr "Naziv modela"
#. module: account
#: field:account.chart.template,property_account_expense_categ:0
msgid "Expense Category Account"
-msgstr "Konto kategorije troška"
+msgstr "Konto troška"
#. module: account
#: view:account.bank.statement:0
@@ -6071,7 +6260,7 @@ msgstr "Stavke: "
#. module: account
#: view:account.use.model:0
msgid "Create manual recurring entries in a chosen journal."
-msgstr ""
+msgstr "Ručno kreiraj ponavljajuće temeljnice za odabrani dnevnik."
#. module: account
#: code:addons/account/account.py:1393
@@ -6090,6 +6279,13 @@ msgid ""
"account. From this view, you can create and manage the account types you "
"need for your company."
msgstr ""
+"An account type is used to determine how an account is used in each journal. "
+"The deferral method of an account type determines the process for the annual "
+"closing. Reports such as the Balance Sheet and the Profit and Loss report "
+"use the category (profit/loss or balance sheet). For example, the account "
+"type could be linked to an asset account, expense account or payable "
+"account. From this view, you can create and manage the account types you "
+"need for your company."
#. module: account
#: model:ir.actions.act_window,help:account.action_account_bank_reconcile_tree
@@ -6098,11 +6294,14 @@ msgid ""
"corresponds with the entries (or records) of that account in your accounting "
"system."
msgstr ""
+"Bank Reconciliation consists of verifying that your bank statement "
+"corresponds with the entries (or records) of that account in your accounting "
+"system."
#. module: account
#: model:process.node,note:account.process_node_draftstatement0
msgid "State is draft"
-msgstr "Stanje je 'U pripremi'"
+msgstr "Stanje je 'Nacrt'"
#. module: account
#: view:account.move.line:0
@@ -6134,6 +6333,8 @@ msgid ""
"This account will be used instead of the default one as the receivable "
"account for the current partner"
msgstr ""
+"Konto potraživanja od kupaca za ovog partnera, ako je različit od "
+"uobičajenog (12...)"
#. module: account
#: field:account.tax,python_applicable:0
@@ -6152,6 +6353,7 @@ msgstr "Python kod"
msgid ""
"Please define the Reserve and Profit/Loss account for current user company !"
msgstr ""
+"Please define the Reserve and Profit/Loss account for current user company !"
#. module: account
#: help:account.journal,update_posted:0
@@ -6159,6 +6361,8 @@ msgid ""
"Check this box if you want to allow the cancellation the entries related to "
"this journal or of the invoice related to this journal"
msgstr ""
+"Označite ako želite dopustiti naknadno otkazivanje proknjiženih (potvrđenih) "
+"temeljnica ili računa ovog dnevnika."
#. module: account
#: view:account.fiscalyear.close:0
@@ -6236,6 +6440,10 @@ msgid ""
"reconcile in a series of accounts. It finds entries for each partner where "
"the amounts correspond."
msgstr ""
+"Račun je plaćen kada su sve njegove stavke dugovanja kupca (ili potraživanja "
+"dobavljača) zatvorene kontra stavkama, najčešće plaćanjima banke, blagajne "
+"ili sl. Funkcija automatskog zatvaranja za svakog partnera pronalazi stavke "
+"odgovarajućeg iznosa."
#. module: account
#: view:account.move:0
@@ -6250,7 +6458,7 @@ msgstr "Za provjeru"
#: model:ir.ui.menu,name:account.menu_action_move_journal_line_form
#: model:ir.ui.menu,name:account.menu_finance_entries
msgid "Journal Entries"
-msgstr "Stavke dnevnika"
+msgstr "Stavke"
#. module: account
#: help:account.partner.ledger,page_split:0
@@ -6264,6 +6472,8 @@ msgid ""
"This report is an analysis done by a partner. It is a PDF report containing "
"one line per partner representing the cumulative credit balance"
msgstr ""
+"This report is an analysis done by a partner. It is a PDF report containing "
+"one line per partner representing the cumulative credit balance"
#. module: account
#: code:addons/account/wizard/account_validate_account_move.py:61
@@ -6271,6 +6481,7 @@ msgstr ""
msgid ""
"Selected Entry Lines does not have any account move enties in draft state"
msgstr ""
+"Selected Entry Lines does not have any account move enties in draft state"
#. module: account
#: selection:account.aged.trial.balance,target_move:0
@@ -6302,8 +6513,8 @@ msgstr "Sve stavke"
msgid ""
"Error: The default UOM and the purchase UOM must be in the same category."
msgstr ""
-"Greška: Zadana jedinica mjere i kupovna jedinica mjere moraju biti u istoj "
-"kategoriji."
+"Greška: Zadana jedinica mjere i jedinica mjere nabave moraju biti iz iste "
+"kategorije jedinica mjera."
#. module: account
#: view:account.journal.select:0
@@ -6314,7 +6525,7 @@ msgstr "Odabir dnevnika"
#: code:addons/account/wizard/account_change_currency.py:65
#, python-format
msgid "Currnt currency is not confirured properly !"
-msgstr ""
+msgstr "Currnt currency is not confirured properly !"
#. module: account
#: model:ir.model,name:account.model_account_move_reconcile
@@ -6339,7 +6550,7 @@ msgstr "Glavna knjiga"
#. module: account
#: model:process.transition,note:account.process_transition_paymentorderbank0
msgid "The payment order is sent to the bank."
-msgstr ""
+msgstr "Nalog za plaćanje je poslan u banku."
#. module: account
#: view:account.balance.report:0
@@ -6349,6 +6560,9 @@ msgid ""
"allowing you to quickly check the balance of each of your accounts in a "
"single report"
msgstr ""
+"This report allows you to print or generate a pdf of your trial balance "
+"allowing you to quickly check the balance of each of your accounts in a "
+"single report"
#. module: account
#: help:account.move,to_check:0
@@ -6356,6 +6570,8 @@ msgid ""
"Check this box if you are unsure of that journal entry and if you want to "
"note it as 'to be reviewed' by an accounting expert."
msgstr ""
+"Označite \"za provjeru\" kada niste sigurni da li je knjiženje ispravno i "
+"kada je potrebno ekspertno mišljenje."
#. module: account
#: help:account.installer.modules,account_voucher:0
@@ -6363,6 +6579,8 @@ msgid ""
"Account Voucher module includes all the basic requirements of Voucher "
"Entries for Bank, Cash, Sales, Purchase, Expenses, Contra, etc... "
msgstr ""
+"Account Voucher module includes all the basic requirements of Voucher "
+"Entries for Bank, Cash, Sales, Purchase, Expenses, Contra, etc... "
#. module: account
#: view:account.chart.template:0
@@ -6397,6 +6615,13 @@ msgid ""
"\n"
"e.g. My model on %(date)s"
msgstr ""
+"Možete navesti godinu, mjesec i dan u nazivu modela pomoću ovih oznaka:\n"
+"\n"
+"%(year)s: za godinu \n"
+"%(month)s: za mjesec \n"
+"%(date)s: tenutni datum\n"
+"\n"
+"npr. Knjiženje troškova plaće za %(month)s"
#. module: account
#: model:ir.actions.act_window,name:account.action_aged_income
@@ -6406,7 +6631,7 @@ msgstr "Konta prihoda"
#. module: account
#: help:report.invoice.created,origin:0
msgid "Reference of the document that generated this invoice report."
-msgstr ""
+msgstr "Oznaka dokumenta koji je kreirao ovaj račun."
#. module: account
#: field:account.tax.code,child_ids:0
@@ -6425,7 +6650,7 @@ msgstr "Nedovoljni Podaci!"
#: model:ir.actions.act_window,name:account.action_invoice_tree1
#: model:ir.ui.menu,name:account.menu_action_invoice_tree1
msgid "Customer Invoices"
-msgstr "Računi kupca"
+msgstr "Izlazni računi"
#. module: account
#: field:account.move.line.reconcile,writeoff:0
@@ -6435,7 +6660,7 @@ msgstr "Iznos otpisa"
#. module: account
#: view:account.analytic.line:0
msgid "Sales"
-msgstr "Prodaje"
+msgstr "Prodaja"
#. module: account
#: view:account.journal.column:0
@@ -6449,12 +6674,12 @@ msgstr "Stupac dnevnika"
#: selection:account.subscription,state:0
#: selection:report.invoice.created,state:0
msgid "Done"
-msgstr "Gotovo"
+msgstr "Izvršeno"
#. module: account
#: model:process.transition,note:account.process_transition_invoicemanually0
msgid "A statement with manual entries becomes a draft statement."
-msgstr ""
+msgstr "A statement with manual entries becomes a draft statement."
#. module: account
#: view:account.aged.trial.balance:0
@@ -6466,6 +6691,11 @@ msgid ""
"you request an interval of 30 days OpenERP generates an analysis of "
"creditors for the past month, past two months, and so on. "
msgstr ""
+"Struktura dospjelih dugovanja/potraživanja partnera je detaljniji izvještaj "
+"o dugovanjima/potraživanjima u intervalima. Za zadani period i broj dana "
+"intervala analize OpenERP izračunava tablicu dugovanja po intervalu. Ako "
+"zadate interval od 30 dana analiza će pokazati dugovanja do 30, 30 do 60, 60 "
+"do 90 dana i tako dalje. "
#. module: account
#: field:account.invoice,origin:0
@@ -6480,11 +6710,13 @@ msgid ""
"reports, so that you can see positive figures instead of negative ones in "
"expenses accounts."
msgstr ""
+"Omogućuje promjenu predznaka salda u izvještajima tako da se mogu prikazati "
+"pozitivni iznosi umjesto negativnih (duguje-potražuje)*predznak."
#. module: account
#: model:ir.actions.act_window,name:account.act_account_acount_move_line_open_unreconciled
msgid "Unreconciled Entries"
-msgstr "Otvorene stavke"
+msgstr "Otvorene stavke IOS-i"
#. module: account
#: model:ir.ui.menu,name:account.menu_menu_Bank_process
@@ -6511,6 +6743,10 @@ msgid ""
"an agreement with a customer or a supplier. With Define Recurring Entries, "
"you can create such entries to automate the postings in the system."
msgstr ""
+"A recurring entry is a miscellaneous entry that occurs on a recurrent basis "
+"from a specific date, i.e. corresponding to the signature of a contract or "
+"an agreement with a customer or a supplier. With Define Recurring Entries, "
+"you can create such entries to automate the postings in the system."
#. module: account
#: field:account.entries.report,product_uom_id:0
@@ -6527,6 +6763,10 @@ msgid ""
"basis. You can enter the coins that are in your cash box, and then post "
"entries when money comes in or goes out of the cash box."
msgstr ""
+"A Cash Register allows you to manage cash entries in your cash journals. "
+"This feature provides an easy way to follow up cash payments on a daily "
+"basis. You can enter the coins that are in your cash box, and then post "
+"entries when money comes in or goes out of the cash box."
#. module: account
#: selection:account.automatic.reconcile,power:0
@@ -6539,6 +6779,7 @@ msgid ""
"This date will be used as the invoice date for Refund Invoice and Period "
"will be chosen accordingly!"
msgstr ""
+"Datum računa za odobrenje, a fiskalni period će se odrediti automatski!"
#. module: account
#: field:account.aged.trial.balance,period_length:0
@@ -6560,18 +6801,26 @@ msgstr "Retci analitike"
#: model:ir.actions.act_window,help:account.action_account_analytic_account_tree2
msgid ""
"The normal chart of accounts has a structure defined by the legal "
-"requirement of the country. The analytic chart of accounts structure should "
+"requirement of the country. The analytic chart of account structure should "
"reflect your own business needs in term of costs/revenues reporting. They "
"are usually structured by contracts, projects, products or departements. "
"Most of the OpenERP operations (invoices, timesheets, expenses, etc) "
"generate analytic entries on the related account."
msgstr ""
+"Struktura kontnog plana glavne knjige zadana je zakonskim odredbama države u "
+"kojoj poslujemo.\n"
+"Struktura analitičkih kontnih planova bi trebala odražavati specifičnosti "
+"Vašeg poslovanja u pogledu izvještavanja o troškovima i prihodima. \n"
+"Uobičajeno je otvaranje troškovnih/upravljačkih analitičkih planova po "
+"odjelima, projektima, ugovorima, linijama proizvoda i slično.Većina "
+"aktivnosti u OpenERP-u (računi, ev.rada, troškovi radnika, itd) usput "
+"generiraju analitička knjiženja na relevantna analitička konta."
#. module: account
#: field:account.analytic.journal,line_ids:0
#: field:account.tax.code,line_ids:0
msgid "Lines"
-msgstr "Retci"
+msgstr "Stavke"
#. module: account
#: code:addons/account/invoice.py:521
@@ -6579,7 +6828,7 @@ msgstr "Retci"
msgid ""
"Can not find account chart for this company in invoice line account, Please "
"Create account."
-msgstr ""
+msgstr "Nedostaje kontni plan za ovu organizaciju. Kreirajte konta."
#. module: account
#: view:account.tax.template:0
@@ -6589,7 +6838,7 @@ msgstr "Predlošci poreza"
#. module: account
#: view:account.journal.select:0
msgid "Are you sure you want to open Journal Entries?"
-msgstr ""
+msgstr "Potvrdite otvaranje stavki."
#. module: account
#: view:account.state.open:0
@@ -6618,7 +6867,7 @@ msgstr "Izvod"
#. module: account
#: help:account.journal,default_debit_account_id:0
msgid "It acts as a default account for debit amount"
-msgstr ""
+msgstr "Uobičajeni konto za dugovni iznos"
#. module: account
#: model:ir.module.module,description:account.module_meta_information
@@ -6644,6 +6893,33 @@ msgid ""
"module named account_voucher.\n"
" "
msgstr ""
+"Accounting and Financial Management.\n"
+"====================================\n"
+"\n"
+"Financial and accounting module that covers:\n"
+"--------------------------------------------\n"
+"General accountings\n"
+"Cost / Analytic accounting\n"
+"Third party accounting\n"
+"Taxes management\n"
+"Budgets\n"
+"Customer and Supplier Invoices\n"
+"Bank statements\n"
+"Reconciliation process by partner\n"
+"\n"
+"Creates a dashboard for accountants that includes:\n"
+"--------------------------------------------------\n"
+"* List of Customer Invoice to Approve\n"
+"* Company Analysis\n"
+"* Graph of Aged Receivables\n"
+"* Graph of Treasury\n"
+"\n"
+"The processes like maintaining of general ledger is done through the defined "
+"financial Journals (entry move line or\n"
+"grouping is maintained through journal) for a particular financial year and "
+"for preparation of vouchers there is a\n"
+"module named account_voucher.\n"
+" "
#. module: account
#: model:ir.actions.act_window,help:account.action_account_journal_period_tree
@@ -6651,6 +6927,8 @@ msgid ""
"You can search for individual account entries through useful information. To "
"search for account entries, open a journal, then select a record line."
msgstr ""
+"You can search for individual account entries through useful information. To "
+"search for account entries, open a journal, then select a record line."
#. module: account
#: report:account.invoice:0
@@ -6669,7 +6947,7 @@ msgstr "Ukupan iznos dugovanja kupca"
#. module: account
#: model:ir.model,name:account.model_ir_sequence
msgid "ir.sequence"
-msgstr "ir.sequence"
+msgstr "ir.slijed"
#. module: account
#: field:account.journal.period,icon:0
@@ -6700,6 +6978,9 @@ msgid ""
"new counterpart but will share the same counterpart. This is used in fiscal "
"year closing."
msgstr ""
+"Označite ako ne želite da se kod knjiženja ovog dnevnika za svaku stavku "
+"stvara protustavka, već se kreira jedna protustavka za cijelu temeljnicu. "
+"Primjer: završna knjiženja kod zatvaranja poslovne godine."
#. module: account
#: field:account.bank.statement,closing_date:0
@@ -6732,6 +7013,8 @@ msgid ""
"Bank Account Number, Company bank account if Invoice is customer or supplier "
"refund, otherwise Partner bank account number."
msgstr ""
+"Broj računa banke, naš žiro rn. ako se radi o izlaznom računu ili odobrenju "
+"dobavljača, inače broj računa partnera."
#. module: account
#: help:account.tax,domain:0
@@ -6747,7 +7030,7 @@ msgstr ""
#: code:addons/account/account.py:938
#, python-format
msgid "You should have chosen periods that belongs to the same company"
-msgstr ""
+msgstr "You should have chosen periods that belongs to the same company"
#. module: account
#: field:account.fiscalyear.close,report_name:0
@@ -6767,7 +7050,7 @@ msgstr "Izvještavanje"
#. module: account
#: sql_constraint:account.journal:0
msgid "The code of the journal must be unique per company !"
-msgstr ""
+msgstr "Šifra dnevnika mora biti jedinstvena (za organizaciju) !"
#. module: account
#: field:account.bank.statement,ending_details_ids:0
@@ -6792,6 +7075,8 @@ msgid ""
"the system to go through the reconciliation process, based on the latest day "
"it have been reconciled."
msgstr ""
+"Pokazuje slijedećeg partnera u procesu zatvaranja IOS-a, a prema zadnjem "
+"danu zatvaranja IOS-a."
#. module: account
#: field:account.move.line.reconcile.writeoff,comment:0
@@ -6817,6 +7102,10 @@ msgid ""
"line of the expense account, OpenERP will propose to you automatically the "
"Tax related to this account and the counter-part \"Account Payable\"."
msgstr ""
+"Kartica za ručni upis knjiženja u OpenERP. Ako želite upisati ulazni račun, "
+"najprije upišite stavku troška, a program će automatski ponuditi slijedeću "
+"stavku(e) poreza prema definiranim porezima na kontu troška, a zatim i "
+"stavku ukupnog potraživanja dobavljača na kontu potraživanja partnera."
#. module: account
#: help:res.company,property_reserve_and_surplus_account:0
@@ -6825,13 +7114,16 @@ msgid ""
"will be added, Loss : Amount will be deducted.), Which is calculated from "
"Profit & Loss Report"
msgstr ""
+"This Account is used for transferring Profit/Loss(If It is Profit: Amount "
+"will be added, Loss : Amount will be deducted.), Which is calculated from "
+"Profit & Loss Report"
#. module: account
#: view:account.invoice.line:0
#: field:account.invoice.tax,invoice_id:0
#: model:ir.model,name:account.model_account_invoice_line
msgid "Invoice Line"
-msgstr "Redak računa"
+msgstr "Stavka računa"
#. module: account
#: field:account.balance.report,display_account:0
@@ -6861,7 +7153,7 @@ msgstr " dan u mjesecu= -1"
#. module: account
#: constraint:res.partner:0
msgid "Error ! You can not create recursive associated members."
-msgstr "Greška ! Ne možete kreirati rekurzivno pridružene članove."
+msgstr "Greška ! Ne možete kreirati rekurzivne pridružene članove."
#. module: account
#: help:account.journal,type:0
@@ -6873,13 +7165,19 @@ msgid ""
"Situation' to be used at the time of new fiscal year creation or end of year "
"entries generation."
msgstr ""
+"Select 'Sale' for Sale journal to be used at the time of making invoice. "
+"Select 'Purchase' for Purchase Journal to be used at the time of approving "
+"purchase order. Select 'Cash' to be used at the time of making payment. "
+"Select 'General' for miscellaneous operations. Select 'Opening/Closing "
+"Situation' to be used at the time of new fiscal year creation or end of year "
+"entries generation."
#. module: account
#: report:account.invoice:0
#: view:account.invoice:0
#: report:account.move.voucher:0
msgid "PRO-FORMA"
-msgstr "Predračun"
+msgstr "Pro-forma"
#. module: account
#: help:account.installer.modules,account_followup:0
@@ -6887,6 +7185,8 @@ msgid ""
"Helps you generate reminder letters for unpaid invoices, including multiple "
"levels of reminding and customized per-partner policies."
msgstr ""
+"Helps you generate reminder letters for unpaid invoices, including multiple "
+"levels of reminding and customized per-partner policies."
#. module: account
#: selection:account.entries.report,move_line_state:0
@@ -6930,6 +7230,7 @@ msgid ""
"This field is used for payable and receivable journal entries. You can put "
"the limit date for the payment of this line."
msgstr ""
+"Koristi se za salda konti kupaca i dobavljača. Upišite datum valute plaćanja."
#. module: account
#: code:addons/account/account_move_line.py:1271
@@ -6948,12 +7249,12 @@ msgstr "Dnevnik prodaje"
#: code:addons/account/wizard/account_move_journal.py:104
#, python-format
msgid "Open Journal Items !"
-msgstr "Otvori stavke dnevnika"
+msgstr "Prikaži stavke!"
#. module: account
#: model:ir.model,name:account.model_account_invoice_tax
msgid "Invoice Tax"
-msgstr "Porezi tačuna"
+msgstr "Porezi računa"
#. module: account
#: code:addons/account/account_move_line.py:1246
@@ -6993,7 +7294,7 @@ msgstr "Fiskalna godina za zatvaranje"
#: view:account.invoice.cancel:0
#: model:ir.actions.act_window,name:account.action_account_invoice_cancel
msgid "Cancel Selected Invoices"
-msgstr "Poništi odabrane račune"
+msgstr "Otkaži odabrane račune"
#. module: account
#: selection:account.entries.report,month:0
@@ -7030,7 +7331,7 @@ msgstr "Šifra"
#. module: account
#: view:validate.account.move:0
msgid "Post Journal Entries of a Journal"
-msgstr "Proknjiži"
+msgstr "Knjiženje temeljnica dnevnika"
#. module: account
#: view:product.product:0
@@ -7049,7 +7350,7 @@ msgstr "Gotovina"
#: field:account.fiscal.position.account,account_dest_id:0
#: field:account.fiscal.position.account.template,account_dest_id:0
msgid "Account Destination"
-msgstr "Ciljni račun"
+msgstr "Ciljni konto"
#. module: account
#: model:process.node,note:account.process_node_supplierpaymentorder0
@@ -7080,7 +7381,7 @@ msgstr "Bilanca"
msgid ""
"Check this if the price you use on the product and invoices includes this "
"tax."
-msgstr "Označite ovu kućicu ako cena proizvoda i racuna sadrze ovaj porez"
+msgstr "Cijena na proizvodu i računu sadrži ovaj porez."
#. module: account
#: view:account.state.open:0
@@ -7111,6 +7412,11 @@ msgid ""
"in which they will appear. Then you can create a new journal and link your "
"view to it."
msgstr ""
+"Here you can customize an existing journal view or create a new view. "
+"Journal views determine the way you can record entries in your journal. "
+"Select the fields you want to appear in a journal and determine the sequence "
+"in which they will appear. Then you can create a new journal and link your "
+"view to it."
#. module: account
#: view:account.payment.term.line:0
@@ -7166,6 +7472,9 @@ msgid ""
"to the higher ones. The order is important if you have a tax with several "
"tax children. In this case, the evaluation order is important."
msgstr ""
+"The sequence field is used to order the tax lines from the lowest sequences "
+"to the higher ones. The order is important if you have a tax with several "
+"tax children. In this case, the evaluation order is important."
#. module: account
#: model:ir.model,name:account.model_account_cashbox_line
@@ -7217,7 +7526,7 @@ msgstr "Stanje stavke"
#: model:ir.model,name:account.model_account_move_line_reconcile
#: model:ir.model,name:account.model_account_move_line_reconcile_writeoff
msgid "Account move line reconcile"
-msgstr ""
+msgstr "Account move line reconcile"
#. module: account
#: view:account.subscription.generate:0
@@ -7257,13 +7566,13 @@ msgstr "Partner"
#. module: account
#: help:account.change.currency,currency_id:0
msgid "Select a currency to apply on the invoice"
-msgstr ""
+msgstr "Odaberite valutu računa"
#. module: account
#: code:addons/account/wizard/account_invoice_refund.py:100
#, python-format
msgid "Can not %s draft/proforma/cancel invoice."
-msgstr ""
+msgstr "Nije moguće %s račun u stanju nacrt/proforma/otkazan."
#. module: account
#: code:addons/account/invoice.py:787
@@ -7297,6 +7606,8 @@ msgid ""
"Select Fiscal Year which you want to remove entries for its End of year "
"entries journal"
msgstr ""
+"Select Fiscal Year which you want to remove entries for its End of year "
+"entries journal"
#. module: account
#: field:account.tax.template,type_tax_use:0
@@ -7307,7 +7618,7 @@ msgstr "Primjena poreza za"
#: code:addons/account/account_bank_statement.py:346
#, python-format
msgid "The account entries lines are not in valid state."
-msgstr ""
+msgstr "The account entries lines are not in valid state."
#. module: account
#: field:account.account.type,close_method:0
@@ -7323,7 +7634,7 @@ msgstr "Račun '%s' je plaćen."
#. module: account
#: model:process.node,note:account.process_node_electronicfile0
msgid "Automatic entry"
-msgstr ""
+msgstr "Automatski upis"
#. module: account
#: constraint:account.tax.code.template:0
@@ -7341,8 +7652,8 @@ msgid ""
"If this box is checked, the system will try to group the accounting lines "
"when generating them from invoices."
msgstr ""
-"Ako je cekirano, sistem ce probati da grupise konta prilikom generisanja iz "
-"racuna."
+"Grupiranje istovrsnih redova računa u jednu stavku knjiženja (ako je isti "
+"konto, strana, porez ...)"
#. module: account
#: help:account.period,state:0
@@ -7350,6 +7661,8 @@ msgid ""
"When monthly periods are created. The state is 'Draft'. At the end of "
"monthly period it is in 'Done' state."
msgstr ""
+"When monthly periods are created. The state is 'Draft'. At the end of "
+"monthly period it is in 'Done' state."
#. module: account
#: report:account.analytic.account.inverted.balance:0
@@ -7413,11 +7726,14 @@ msgid ""
"will see the taxes with codes related to your legal statement according to "
"your country."
msgstr ""
+"The chart of taxes is used to generate your periodical tax statement. You "
+"will see the taxes with codes related to your legal statement according to "
+"your country."
#. module: account
#: view:account.installer.modules:0
msgid "Add extra Accounting functionalities to the ones already installed."
-msgstr ""
+msgstr "Add extra Accounting functionalities to the ones already installed."
#. module: account
#: report:account.analytic.account.cost_ledger:0
@@ -7447,7 +7763,7 @@ msgstr "Izaberite fiskalnu godinu"
#: code:addons/account/installer.py:495
#, python-format
msgid "Purchase Refund Journal"
-msgstr "Dnevnik povrata nabave"
+msgstr "Dnevnik odobrenja dobavljača"
#. module: account
#: help:account.tax.template,amount:0
@@ -7466,6 +7782,8 @@ msgid ""
"Modify Invoice: Cancels the current invoice and creates a new copy of it "
"ready for editing."
msgstr ""
+"Promjeni račun: Kreira storno/odobrenje cijelog računa, zatvara ga i kreira "
+"novu kopiju spremnu za izmjene."
#. module: account
#: model:ir.module.module,shortdesc:account.module_meta_information
@@ -7528,7 +7846,7 @@ msgstr "Dnevnik otpisa"
msgid ""
"This payment term will be used instead of the default one for the current "
"partner"
-msgstr "Ovi uvjeti plaćanja će se koristiti za ovog partnera."
+msgstr "Ovaj uvjet plaćanja će se koristiti kao uobičajeni za ovog partnera."
#. module: account
#: view:account.tax.template:0
@@ -7538,7 +7856,7 @@ msgstr "Kod za izračun cijena sa uključenim porezima"
#. module: account
#: field:account.chart.template,property_account_income_categ:0
msgid "Income Category Account"
-msgstr "Konto prihoda"
+msgstr "Zadani konto prihoda za grupu proizvoda"
#. module: account
#: model:ir.actions.act_window,name:account.action_account_fiscal_position_template_form
@@ -7564,6 +7882,10 @@ msgid ""
"can easily generate refunds and reconcile them directly from the invoice "
"form."
msgstr ""
+"With Customer Refunds you can manage the credit notes for your customers. A "
+"refund is a document that credits an invoice completely or partially. You "
+"can easily generate refunds and reconcile them directly from the invoice "
+"form."
#. module: account
#: model:ir.actions.act_window,help:account.action_account_vat_declaration
@@ -7575,6 +7897,12 @@ msgid ""
"useful because it enables you to preview at any time the tax that you owe at "
"the start and end of the month or quarter."
msgstr ""
+"This menu print a VAT declaration based on invoices or payments. You can "
+"select one or several periods of the fiscal year. Information required for a "
+"tax declaration is automatically generated by OpenERP from invoices (or "
+"payments, in some countries). This data is updated in real time. That’s very "
+"useful because it enables you to preview at any time the tax that you owe at "
+"the start and end of the month or quarter."
#. module: account
#: report:account.invoice:0
@@ -7584,7 +7912,7 @@ msgstr "Tel.:"
#. module: account
#: field:account.account,company_currency_id:0
msgid "Company Currency"
-msgstr "Valuta tvrtke"
+msgstr "Valuta organizacije"
#. module: account
#: model:process.node,name:account.process_node_paymententries0
@@ -7599,6 +7927,9 @@ msgid ""
"added, Loss: Amount will be duducted), which is calculated from Profilt & "
"Loss Report"
msgstr ""
+"This Account is used for transfering Profit/Loss (Profit: Amount will be "
+"added, Loss: Amount will be duducted), which is calculated from Profilt & "
+"Loss Report"
#. module: account
#: help:account.move.line,blocked:0
@@ -7606,6 +7937,8 @@ msgid ""
"You can check this box to mark this journal item as a litigation with the "
"associated partner"
msgstr ""
+"Možete provjeriti ovaj okvir kako bi obilježili stavku temeljnice kao "
+"poveznicu s pripadajućim partnerom."
#. module: account
#: field:account.move.line,reconcile_partial_id:0
@@ -7616,17 +7949,17 @@ msgstr "Djelomično zatvaranje"
#. module: account
#: model:ir.model,name:account.model_account_analytic_inverted_balance
msgid "Account Analytic Inverted Balance"
-msgstr ""
+msgstr "Account Analytic Inverted Balance"
#. module: account
#: model:ir.model,name:account.model_account_common_report
msgid "Account Common Report"
-msgstr ""
+msgstr "Računovodstveni izvještaji"
#. module: account
#: model:process.transition,name:account.process_transition_filestatement0
msgid "Automatic import of the bank sta"
-msgstr ""
+msgstr "Automatski uvoz bankovnih izvoda"
#. module: account
#: model:ir.actions.act_window,name:account.action_account_journal_view
@@ -7637,19 +7970,19 @@ msgstr "Pogledi dnevnika"
#. module: account
#: model:ir.model,name:account.model_account_move_bank_reconcile
msgid "Move bank reconcile"
-msgstr ""
+msgstr "Move bank reconcile"
#. module: account
#: model:ir.actions.act_window,name:account.action_account_type_form
#: model:ir.ui.menu,name:account.menu_action_account_type_form
msgid "Account Types"
-msgstr "Tipovi konta"
+msgstr "Account Types"
#. module: account
#: code:addons/account/invoice.py:897
#, python-format
msgid "Cannot create invoice move on centralised journal"
-msgstr ""
+msgstr "Cannot create invoice move on centralised journal"
#. module: account
#: field:account.account.type,report_type:0
@@ -7684,7 +8017,7 @@ msgstr "Saldo blagajne"
#. module: account
#: model:ir.model,name:account.model_account_fiscalyear_close_state
msgid "Fiscalyear Close state"
-msgstr ""
+msgstr "Fiscalyear Close state"
#. module: account
#: field:account.invoice.refund,journal_id:0
@@ -7714,18 +8047,22 @@ msgid ""
"sales orders or deliveries. You should only confirm them before sending them "
"to your customers."
msgstr ""
+"Izlazni računi koje izdajete Vašim kupcima. OpenERP obično kreira račune "
+"automatski iz prodajnih naloga ili otpremnica. Vi ih trebate provjeriti i "
+"potvrditi prije slanja kupcima. Potvrdom se generira broj računa i "
+"automatsko knjiženje dokumenta."
#. module: account
#: view:account.entries.report:0
#: view:board.board:0
#: model:ir.actions.act_window,name:account.action_company_analysis_tree
msgid "Company Analysis"
-msgstr "Analiza tvrtke"
+msgstr "Analiza organizacije"
#. module: account
#: help:account.invoice,account_id:0
msgid "The partner account used for this invoice."
-msgstr "Konto partnera za ovu fakturu"
+msgstr "Konto partnera za ovaj račun"
#. module: account
#: field:account.tax.code,parent_id:0
@@ -7750,6 +8087,7 @@ msgstr "Dnevnik URA"
#: view:account.invoice.refund:0
msgid "Refund Invoice: Creates the refund invoice, ready for editing."
msgstr ""
+"Račun odobrenja: Kreira nacrt računa odobrenja, spremnog za promjene."
#. module: account
#: field:account.invoice.line,price_subtotal:0
@@ -7759,12 +8097,12 @@ msgstr "Podzbroj"
#. module: account
#: view:account.vat.declaration:0
msgid "Print Tax Statement"
-msgstr ""
+msgstr "Ispis porezne izjave"
#. module: account
#: view:account.model.line:0
msgid "Journal Entry Model Line"
-msgstr ""
+msgstr "Stavka modela temeljnice"
#. module: account
#: view:account.invoice:0
@@ -7786,6 +8124,7 @@ msgstr "Dobavljači"
msgid ""
"You cannot create more than one move per period on centralized journal"
msgstr ""
+"You cannot create more than one move per period on centralized journal"
#. module: account
#: view:account.journal:0
@@ -7795,14 +8134,14 @@ msgstr "Dozvoljene vrste konta (prazno za bez kontrole)"
#. module: account
#: view:res.partner:0
msgid "Supplier Accounting Properties"
-msgstr "Svojstva računovodstva dobavljača"
+msgstr "SK Dobavljača"
#. module: account
#: help:account.move.line,amount_residual:0
msgid ""
"The residual amount on a receivable or payable of a journal entry expressed "
"in the company currency."
-msgstr ""
+msgstr "Ostatak iznosa dugovanja ili potraživanja u valuti organizacije."
#. module: account
#: view:account.payment.term.line:0
@@ -7828,7 +8167,7 @@ msgstr "Fiskalna godina zatvorena"
#. module: account
#: sql_constraint:account.account:0
msgid "The code of the account must be unique per company !"
-msgstr ""
+msgstr "Šifra konta mora biti jedinstvena za jednu organizaciju !"
#. module: account
#: model:ir.actions.act_window,name:account.act_account_journal_2_account_invoice_opened
@@ -7905,7 +8244,7 @@ msgstr ""
msgid ""
"The amount of the voucher must be the same amount as the one on the "
"statement line"
-msgstr ""
+msgstr "Iznos vaučera mora biti jednak iznosu stavke izvoda banke/blagajne."
#. module: account
#: code:addons/account/account_move_line.py:1131
@@ -7923,14 +8262,14 @@ msgstr "Prazno za sve otvorene fiskalne godine"
#: code:addons/account/account_move_line.py:1056
#, python-format
msgid "The account move (%s) for centralisation has been confirmed!"
-msgstr ""
+msgstr "The account move (%s) for centralisation has been confirmed!"
#. module: account
#: help:account.move.line,amount_currency:0
msgid ""
"The amount expressed in an optional other currency if it is a multi-currency "
"entry."
-msgstr ""
+msgstr "Iznos u drugoj valuti ."
#. module: account
#: view:account.account:0
@@ -7965,11 +8304,12 @@ msgstr "Valuta"
msgid ""
"Gives the sequence order when displaying a list of bank statement lines."
msgstr ""
+"Gives the sequence order when displaying a list of bank statement lines."
#. module: account
#: model:process.transition,note:account.process_transition_validentries0
msgid "Accountant validates the accounting entries coming from the invoice."
-msgstr ""
+msgstr "Knjigovođa potvrđuje temeljnicu nastalu potvrdom računa."
#. module: account
#: model:ir.actions.act_window,help:account.action_account_fiscalyear_form
@@ -7982,6 +8322,13 @@ msgid ""
"would be referred to as FY 2011. You are not obliged to follow the actual "
"calendar year."
msgstr ""
+"Definirajte financijsku godinu poduzeća u skladu s vašim potrebama. "
+"Financijska godina je razdoblje na temelju kojeg su postavljeni računi "
+"poduzeća (najčešće 12 mjeseci) .Financijska godina obično nazivaju prema "
+"datum u kojem ista završava. Na primjer, ako tvrtka je financijskoj godini "
+"završava 30. studenoga 2011, sve između 1 prosinca 2010 i 30. studeni 2011 "
+"odnositi će se kao FG 2011. Niste dužni slijediti stvarei kalendarske "
+"godine."
#. module: account
#: model:ir.actions.act_window,name:account.act_account_acount_move_line_reconcile_open
@@ -8005,6 +8352,15 @@ msgid ""
"* The 'Paid' state is set automatically when invoice is paid. \n"
"* The 'Cancelled' state is used when user cancel invoice."
msgstr ""
+" * 'Nacrt' - upis računa je u tijeku, račun još nije potvrđen. \n"
+"* 'Pro-forma' - račun još nije pravovaljan - nije mu dodijeljen broj računa. "
+" \n"
+"* 'Otvoren' - broj računa je dodijeljen, račun je s tim brojem knjižen i "
+"ostaje otvoren dok se ne plati. \n"
+"* 'Plaćen' - stanje se automatski postavlja zatvaranjem svih IOS-a ovog "
+"računa. \n"
+"* 'Otkazan' - račun je iz nekog razloga otkazan i ostaje u sistemu radi "
+"evidencije."
#. module: account
#: field:account.invoice.refund,period:0
@@ -8014,7 +8370,7 @@ msgstr "Forsiraj period"
#. module: account
#: model:ir.model,name:account.model_account_partner_balance
msgid "Print Account Partner Balance"
-msgstr ""
+msgstr "Print Account Partner Balance"
#. module: account
#: field:res.partner,contract_ids:0
@@ -8036,7 +8392,7 @@ msgstr "Dnevnik početnog stanja"
#. module: account
#: model:process.transition,note:account.process_transition_customerinvoice0
msgid "Draft invoices are checked, validated and printed."
-msgstr ""
+msgstr "Nacrti računa se provjeravaju, potvrđuju i ispisuju."
#. module: account
#: help:account.chart.template,property_reserve_and_surplus_account:0
@@ -8045,6 +8401,9 @@ msgid ""
"will be added, Loss: Amount will be deducted.), Which is calculated from "
"Profilt & Loss Report"
msgstr ""
+"Ovaj račun se koristi za prijenos Dobiti / gubitka (ako je Profit: Iznos će "
+"biti dodan, gubitak: Iznos će biti odbijen.),Izračunava se iz Izvješća o "
+"dobiti / gubitku"
#. module: account
#: field:account.invoice,reference_type:0
@@ -8083,6 +8442,8 @@ msgid ""
"the amount of this case into its parent. For example, set 1/-1 if you want "
"to add/substract it."
msgstr ""
+"Koeficijent zbrajanja na nadređenu grupu. Npr. 1/-1 za zbrajanje/oduzimanje "
+"ili 0 za izostavljanje."
#. module: account
#: view:account.invoice:0
@@ -8106,7 +8467,7 @@ msgstr "Otvori dnevnik"
#. module: account
#: report:account.analytic.account.journal:0
msgid "KI"
-msgstr ""
+msgstr "KI"
#. module: account
#: report:account.analytic.account.cost_ledger:0
@@ -8120,7 +8481,7 @@ msgstr "Od perioda"
#: code:addons/account/installer.py:476
#, python-format
msgid "Sales Refund Journal"
-msgstr "Dnevnik povrata IRA"
+msgstr "Dnevnik odobrenja kupcima"
#. module: account
#: code:addons/account/account.py:927
@@ -8129,6 +8490,8 @@ msgid ""
"You cannot modify company of this period as its related record exist in "
"Entry Lines"
msgstr ""
+"You cannot modify company of this period as its related record exist in "
+"Entry Lines"
#. module: account
#: view:account.move:0
@@ -8145,7 +8508,7 @@ msgstr "Registrirana plaćanja"
#. module: account
#: view:account.fiscalyear.close.state:0
msgid "Close states of Fiscal year and periods"
-msgstr ""
+msgstr "Close states of Fiscal year and periods"
#. module: account
#: view:account.analytic.line:0
@@ -8164,7 +8527,7 @@ msgstr "Analitika"
#: model:process.node,name:account.process_node_invoiceinvoice0
#: model:process.node,name:account.process_node_supplierinvoiceinvoice0
msgid "Create Invoice"
-msgstr "Stvori račun"
+msgstr "Kreiraj račun"
#. module: account
#: field:account.installer,purchase_tax:0
@@ -8192,7 +8555,7 @@ msgstr "Postavke Vaše računovodstvene aplikacije"
#: code:addons/account/installer.py:479
#, python-format
msgid "SCNJ"
-msgstr ""
+msgstr "SCNJ"
#. module: account
#: model:process.transition,note:account.process_transition_analyticinvoice0
@@ -8200,6 +8563,8 @@ msgid ""
"Analytic costs (timesheets, some purchased products, ...) come from analytic "
"accounts. These generate draft invoices."
msgstr ""
+"Analitički troškovi (ev. rada, nabava, ...) dolaze sa analitičkih "
+"konta(računa). Oni mogu kreirati nacrte računa."
#. module: account
#: help:account.journal,view_id:0
@@ -8209,6 +8574,10 @@ msgid ""
"in which order. You can create your own view for a faster encoding in each "
"journal."
msgstr ""
+"Gives the view used when writing or browsing entries in this journal. The "
+"view tells OpenERP which fields should be visible, required or readonly and "
+"in which order. You can create your own view for a faster encoding in each "
+"journal."
#. module: account
#: field:account.period,date_stop:0
@@ -8243,7 +8612,7 @@ msgstr "Od perioda"
#: code:addons/account/account.py:2333
#, python-format
msgid "Cannot locate parent code for template account!"
-msgstr ""
+msgstr "Cannot locate parent code for template account!"
#. module: account
#: field:account.aged.trial.balance,direction_selection:0
@@ -8274,7 +8643,7 @@ msgstr "Ukupno potražuje"
#. module: account
#: model:process.transition,note:account.process_transition_suppliervalidentries0
msgid "Accountant validates the accounting entries coming from the invoice. "
-msgstr ""
+msgstr "Knjigovođa potvrđuje temeljnicu nastalu potvrdom računa. "
#. module: account
#: code:addons/account/invoice.py:1008
@@ -8283,6 +8652,7 @@ msgid ""
"You cannot cancel the Invoice which is Partially Paid! You need to "
"unreconcile concerned payment entries!"
msgstr ""
+"Ne možete otkazati račun koji je djelomično plaćen, dok ne otvorite stavke!"
#. module: account
#: report:account.overdue:0
@@ -8308,7 +8678,7 @@ msgstr "Ne može se knjižiti na sintetički konto."
#: code:addons/account/wizard/account_change_currency.py:71
#, python-format
msgid "Current currency is not confirured properly !"
-msgstr ""
+msgstr "Current currency is not confirured properly !"
#. module: account
#: model:ir.actions.act_window,help:account.action_invoice_tree4
@@ -8318,6 +8688,10 @@ msgid ""
"partially. You can easily generate refunds and reconcile them directly from "
"the invoice form."
msgstr ""
+"With Supplier Refunds you can manage the credit notes you receive from your "
+"suppliers. A refund is a document that credits an invoice completely or "
+"partially. You can easily generate refunds and reconcile them directly from "
+"the invoice form."
#. module: account
#: view:account.account.template:0
@@ -8338,7 +8712,7 @@ msgstr "RDG (konta prihoda)"
#: view:account.tax:0
#: view:account.tax.template:0
msgid "Keep empty to use the income account"
-msgstr "Ostavite prazno za koto prihoda"
+msgstr "Ostavite prazno za konto prihoda"
#. module: account
#: field:account.account,balance:0
@@ -8373,7 +8747,7 @@ msgstr "Saldo"
#. module: account
#: model:process.node,note:account.process_node_supplierbankstatement0
msgid "Manually or automatically entered in the system"
-msgstr ""
+msgstr "Manually or automatically entered in the system"
#. module: account
#: report:account.account.balance:0
@@ -8410,6 +8784,8 @@ msgid ""
"This report is analysis by partner. It is a PDF report containing one line "
"per partner representing the cumulative credit balance."
msgstr ""
+"This report is analysis by partner. It is a PDF report containing one line "
+"per partner representing the cumulative credit balance."
#. module: account
#: selection:account.account,type:0
@@ -8445,18 +8821,24 @@ msgid ""
"the income account. OpenERP will propose to you automatically the Tax "
"related to this account and the counter-part \"Account receivable\"."
msgstr ""
+"Kartica za ručni upis knjiženja u OpenERP. Ako želite knjižiti izlazni račun "
+"kupcu, odaberite dnevnik (vrsta dnevnika - izlazni računi) i fiskalni "
+"period. Najprije upišite stavku prihoda, a program će automatski ponuditi "
+"slijedeću stavku(e) poreza prema definiranim porezima na kontu troška, a "
+"zatim i stavku ukupnog dugovanja kupca na konto dugovanja sa kartice "
+"partnera."
#. module: account
#: code:addons/account/account_bank_statement.py:391
#, python-format
msgid "Cannot delete bank statement(s) which are already confirmed !"
-msgstr ""
+msgstr "Ne možete obrisati bankovni izvod koji je prethodno potvrđen !"
#. module: account
#: code:addons/account/wizard/account_automatic_reconcile.py:152
#, python-format
msgid "You must select accounts to reconcile"
-msgstr ""
+msgstr "Morate odabrati konta za zatvaranje"
#. module: account
#: model:ir.actions.act_window,name:account.action_account_receivable_graph
@@ -8466,7 +8848,7 @@ msgstr "Saldo po vrsti konta"
#. module: account
#: model:process.transition,note:account.process_transition_entriesreconcile0
msgid "Accounting entries are the first input of the reconciliation."
-msgstr ""
+msgstr "Accounting entries are the first input of the reconciliation."
#. module: account
#: model:ir.actions.act_window,help:account.action_account_period_form
@@ -8478,6 +8860,11 @@ msgid ""
"closed or left open depending on your company's activities over a specific "
"period."
msgstr ""
+"Ovdje se definiraju fiskalni periodi. Ovi knjigovodstveni periodi bi trebali "
+"odgovarati periodima po kojima vaša organizacija ima obvezu prijave poreza "
+"na dodanu vrijednost. Najčešće se radi o mjesečnim ili tromjesečnim "
+"razdobljima. Zatvaranje perioda zabranjuje daljnja knjiženja za taj period. "
+"Preporuča se zatvaranje perioda nakon predaje porezne prijave."
#. module: account
#: report:account.move.voucher:0
@@ -8510,12 +8897,12 @@ msgstr "Temeljnica"
#: code:addons/account/account_move_line.py:1128
#, python-format
msgid "You can not change the tax, you should remove and recreate lines !"
-msgstr ""
+msgstr "You can not change the tax, you should remove and recreate lines !"
#. module: account
#: report:account.central.journal:0
msgid "A/C No."
-msgstr ""
+msgstr "A/C No."
#. module: account
#: model:ir.actions.act_window,name:account.act_account_journal_2_account_bank_statement
@@ -8527,11 +8914,12 @@ msgstr "Bankovni izvodi"
msgid ""
"Creates an account with the selected template under this existing parent."
msgstr ""
+"Creates an account with the selected template under this existing parent."
#. module: account
#: selection:account.model.line,date_maturity:0
msgid "Date of the day"
-msgstr ""
+msgstr "Date of the day"
#. module: account
#: code:addons/account/wizard/account_move_bank_reconcile.py:49
@@ -8551,7 +8939,7 @@ msgstr "Transakcije zatvaranja"
#. module: account
#: model:ir.actions.act_window,name:account.action_account_common_menu
msgid "Common Report"
-msgstr ""
+msgstr "Izvještaji"
#. module: account
#: view:account.account:0
@@ -8566,6 +8954,8 @@ msgid ""
"The journal must have centralised counterpart without the Skipping draft "
"state option checked!"
msgstr ""
+"The journal must have centralised counterpart without the Skipping draft "
+"state option checked!"
#. module: account
#: model:process.node,note:account.process_node_paymententries0
@@ -8585,7 +8975,7 @@ msgstr "Srpanj"
#. module: account
#: view:account.account:0
-msgid "Chart of Accounts"
+msgid "Chart of accounts"
msgstr "Kontni plan"
#. module: account
@@ -8632,7 +9022,7 @@ msgstr "Do perioda"
#: field:account.print.journal,chart_account_id:0
#: field:account.report.general.ledger,chart_account_id:0
#: field:account.vat.declaration,chart_account_id:0
-msgid "Chart of Accounts"
+msgid "Chart of account"
msgstr "Kontni plan"
#. module: account
@@ -8648,7 +9038,7 @@ msgstr "Standardne stavke"
#. module: account
#: model:ir.model,name:account.model_account_subscription
msgid "Account Subscription"
-msgstr ""
+msgstr "Pretplata"
#. module: account
#: code:addons/account/invoice.py:717
@@ -8698,7 +9088,7 @@ msgstr "Početni datum"
#. module: account
#: model:process.node,name:account.process_node_supplierdraftinvoices0
msgid "Draft Invoices"
-msgstr "Neodobreni računi"
+msgstr "Nacrti računa"
#. module: account
#: selection:account.account.type,close_method:0
@@ -8716,7 +9106,7 @@ msgstr "Pogrešan ukupni iznos !"
#. module: account
#: field:account.journal,sequence_id:0
msgid "Entry Sequence"
-msgstr "Redoslijed unosa"
+msgstr "Brojčana serija"
#. module: account
#: model:ir.actions.act_window,help:account.action_account_period_tree
@@ -8729,6 +9119,13 @@ msgid ""
"open period. Close a period when you do not want to record new entries and "
"want to lock this period for tax related calculation."
msgstr ""
+"A period is a fiscal period of time during which accounting entries should "
+"be recorded for accounting related activities. Monthly period is the norm "
+"but depending on your countries or company needs, you could also have "
+"quarterly periods. Closing a period will make it impossible to record new "
+"accounting entries, all new entries should then be made on the following "
+"open period. Close a period when you do not want to record new entries and "
+"want to lock this period for tax related calculation."
#. module: account
#: view:account.analytic.account:0
@@ -8739,7 +9136,7 @@ msgstr "Na čekanju"
#: model:process.transition,name:account.process_transition_analyticinvoice0
#: model:process.transition,name:account.process_transition_supplieranalyticcost0
msgid "From analytic accounts"
-msgstr ""
+msgstr "Iz analitičkog računa"
#. module: account
#: field:account.installer.modules,account_payment:0
@@ -8779,6 +9176,9 @@ msgid ""
"Make sure you have configured Payment Term properly !\n"
"It should contain atleast one Payment Term Line with type \"Balance\" !"
msgstr ""
+"You cannot validate a non-balanced entry !\n"
+"Make sure you have configured Payment Term properly !\n"
+"It should contain atleast one Payment Term Line with type \"Balance\" !"
#. module: account
#: help:res.partner,property_account_payable:0
@@ -8786,6 +9186,8 @@ msgid ""
"This account will be used instead of the default one as the payable account "
"for the current partner"
msgstr ""
+"Konto obveza prema dobavljačima za ovog partnera, ako je različit od "
+"uobičajenog (22...)"
#. module: account
#: field:account.period,special:0
@@ -8802,7 +9204,7 @@ msgstr "Sekundarna valuta"
#. module: account
#: model:ir.model,name:account.model_validate_account_move
msgid "Validate Account Move"
-msgstr ""
+msgstr "Validate Account Move"
#. module: account
#: field:account.account,credit:0
@@ -8836,6 +9238,8 @@ msgid ""
"created. If you leave that field empty, it will use the same journal as the "
"current invoice."
msgstr ""
+"Odaberite dnevnik za račun odobrenja/storna. Ako ostavite prazno, koristiti "
+"će se dnevnik ovog računa (isti dnevnik)."
#. module: account
#: report:account.move.voucher:0
@@ -8846,12 +9250,12 @@ msgstr ""
#: view:account.general.journal:0
#: model:ir.ui.menu,name:account.menu_account_general_journal
msgid "General Journals"
-msgstr ""
+msgstr "General Journals"
#. module: account
#: view:account.model:0
msgid "Journal Entry Model"
-msgstr ""
+msgstr "Model temeljnice"
#. module: account
#: code:addons/account/wizard/account_use_model.py:44
@@ -8861,6 +9265,8 @@ msgid ""
"payment term!\n"
"Please define partner on it!"
msgstr ""
+"Datum dospijeća stavke unosa generira se od strane modela linije '%s', te se "
+"temelji se na roku plaćanja partnera! NMolimo definirati partnera!"
#. module: account
#: field:account.cashbox.line,number:0
@@ -8942,7 +9348,7 @@ msgstr "Travanj"
#. module: account
#: view:account.move.line.reconcile.select:0
msgid "Open for Reconciliation"
-msgstr ""
+msgstr "Open for Reconciliation"
#. module: account
#: field:account.account,parent_left:0
@@ -8955,12 +9361,15 @@ msgid ""
"Refund invoice base on this type. You can not Modify and Cancel if the "
"invoice is already reconciled"
msgstr ""
+"Kreiraj račun odobrenja. Zatvorene (plaćene) račune ne možete mijenjati ili "
+"otkazati."
#. module: account
#: help:account.installer.modules,account_analytic_plans:0
msgid ""
"Allows invoice lines to impact multiple analytic accounts simultaneously."
msgstr ""
+"Allows invoice lines to impact multiple analytic accounts simultaneously."
#. module: account
#: field:account.installer,sale_tax:0
@@ -8971,7 +9380,7 @@ msgstr "Porez prodaje(%)"
#: model:ir.actions.act_window,name:account.action_invoice_tree2
#: model:ir.ui.menu,name:account.menu_action_invoice_tree2
msgid "Supplier Invoices"
-msgstr "Računi dobavljača"
+msgstr "Ulazni računi"
#. module: account
#: view:account.analytic.line:0
@@ -8996,6 +9405,9 @@ msgid ""
"and is the process of transferring debit and credit amounts from a journal "
"of original entry to a ledger book."
msgstr ""
+"Ažuriranje temeljnice \"knjiženje u gl. knjigu\" je proces prijenosa iznosa "
+"duguje i potražuje iz dnevnika u glavnu knjigu. Kod nekih izvještaja možete "
+"birati između ažuriranih stavaka ili svih evidentiranih stavaka."
#. module: account
#: report:account.tax.code.entries:0
@@ -9018,6 +9430,8 @@ msgid ""
"This report allows you to print or generate a pdf of your general ledger "
"with details of all your account journals"
msgstr ""
+"This report allows you to print or generate a pdf of your general ledger "
+"with details of all your account journals"
#. module: account
#: selection:account.account,type:0
@@ -9115,7 +9529,7 @@ msgstr "Dan u mjesecu"
#: field:account.fiscal.position.tax,tax_src_id:0
#: field:account.fiscal.position.tax.template,tax_src_id:0
msgid "Tax Source"
-msgstr "Porez"
+msgstr "Iz poreza"
#. module: account
#: report:account.balancesheet:0
@@ -9133,7 +9547,7 @@ msgstr "Brojači poslovne godine"
#. module: account
#: help:account.model,name:0
msgid "This is a model for recurring accounting entries"
-msgstr "Ovo je model za ponavljajuće računovodstvene unose"
+msgstr "Ovo je predložak za ponavljajuće temeljnice"
#. module: account
#: code:addons/account/account_analytic_line.py:100
@@ -9146,7 +9560,7 @@ msgstr "Ne postoji konto prihoda za ovaj proizvod: \"%s\" (id:%d)"
#: report:account.third_party_ledger:0
#: report:account.third_party_ledger_other:0
msgid "JRNL"
-msgstr ""
+msgstr "JRNL"
#. module: account
#: view:account.payment.term.line:0
@@ -9209,22 +9623,22 @@ msgstr "Dnevnik: Svi"
#: field:analytic.entries.report,company_id:0
#: field:wizard.multi.charts.accounts,company_id:0
msgid "Company"
-msgstr "Tvrtka"
+msgstr "Organizacija"
#. module: account
#: model:ir.ui.menu,name:account.menu_action_subscription_form
msgid "Define Recurring Entries"
-msgstr ""
+msgstr "Postava ponavljajućih dok."
#. module: account
#: field:account.entries.report,date_maturity:0
msgid "Date Maturity"
-msgstr ""
+msgstr "Datum valute"
#. module: account
#: help:account.bank.statement,total_entry_encoding:0
msgid "Total cash transactions"
-msgstr ""
+msgstr "Ukupno transakcije blagajne"
#. module: account
#: help:account.partner.reconcile.process,today_reconciled:0
@@ -9233,6 +9647,9 @@ msgid ""
"reconciliation process today. The current partner is counted as already "
"processed."
msgstr ""
+"This figure depicts the total number of partners that have gone throught the "
+"reconciliation process today. The current partner is counted as already "
+"processed."
#. module: account
#: view:account.fiscalyear:0
@@ -9242,12 +9659,12 @@ msgstr "Stvori mjesečna razdoblja"
#. module: account
#: field:account.tax.code.template,sign:0
msgid "Sign For Parent"
-msgstr "Predznak za nadređeni"
+msgstr "Predznak za nadređenog"
#. module: account
#: model:ir.model,name:account.model_account_balance_report
msgid "Trial Balance Report"
-msgstr ""
+msgstr "Izvješće stanja bilance"
#. module: account
#: model:ir.actions.act_window,name:account.action_bank_statement_draft_tree
@@ -9258,12 +9675,12 @@ msgstr "Nepotvrđeni izvodi"
#: model:process.transition,note:account.process_transition_statemententries0
msgid ""
"Manual or automatic creation of payment entries according to the statements"
-msgstr ""
+msgstr "Ručno ili automatsko kreiranje stavki plaćanja prema izvodima"
#. module: account
#: view:account.invoice:0
msgid "Invoice lines"
-msgstr "Retci računa"
+msgstr "Stavke računa"
#. module: account
#: field:account.aged.trial.balance,period_to:0
@@ -9320,17 +9737,17 @@ msgstr "Knjiženje otpisa"
#. module: account
#: model:process.node,note:account.process_node_paidinvoice0
msgid "Invoice's state is Done"
-msgstr ""
+msgstr "Stanje računa je zatvoreno/plaćeno"
#. module: account
#: model:ir.model,name:account.model_report_account_sales
msgid "Report of the Sales by Account"
-msgstr ""
+msgstr "Izvještaj o prodaji po kontu"
#. module: account
#: model:ir.model,name:account.model_account_fiscal_position_account
msgid "Accounts Fiscal Position"
-msgstr ""
+msgstr "Fiskalna pozicija"
#. module: account
#: report:account.invoice:0
@@ -9340,7 +9757,7 @@ msgstr ""
#: model:process.process,name:account.process_process_supplierinvoiceprocess0
#: selection:report.invoice.created,type:0
msgid "Supplier Invoice"
-msgstr "Račun Dobavljača"
+msgstr "Ulazni račun"
#. module: account
#: field:account.account,debit:0
@@ -9370,7 +9787,7 @@ msgstr "Duguje"
#. module: account
#: field:account.invoice,invoice_line:0
msgid "Invoice Lines"
-msgstr "Retci računa"
+msgstr "Stavke računa"
#. module: account
#: constraint:account.account.template:0
@@ -9399,7 +9816,7 @@ msgstr "Stavka je već zatvorena"
#. module: account
#: model:ir.model,name:account.model_report_account_receivable
msgid "Receivable accounts"
-msgstr "Konta Potraživanja"
+msgstr "Konta potraživanja"
#. module: account
#: selection:account.model.line,date_maturity:0
@@ -9451,7 +9868,7 @@ msgstr "Podatci analitičkog konta"
#. module: account
#: view:account.tax.code.template:0
msgid "Account Tax Code Template"
-msgstr "Predložak šifre poreza"
+msgstr "Predložak porezne grupe"
#. module: account
#: model:process.node,name:account.process_node_manually0
@@ -9476,7 +9893,7 @@ msgstr "Ispiši analitičke dnevnike"
#. module: account
#: view:account.analytic.line:0
msgid "Fin.Account"
-msgstr ""
+msgstr "Fin.konto"
#. module: account
#: model:ir.actions.act_window,name:account.action_aged_receivable_graph
@@ -9487,7 +9904,7 @@ msgstr "Stara potraživanja"
#. module: account
#: field:account.tax,applicable_type:0
msgid "Applicability"
-msgstr ""
+msgstr "Primjenjivost"
#. module: account
#: code:addons/account/wizard/account_move_journal.py:165
@@ -9498,18 +9915,18 @@ msgstr "Ovo razdoblje je već zatvoreno !"
#. module: account
#: help:account.move.line,currency_id:0
msgid "The optional other currency if it is a multi-currency entry."
-msgstr ""
+msgstr "The optional other currency if it is a multi-currency entry."
#. module: account
#: model:process.transition,note:account.process_transition_invoiceimport0
msgid ""
"Import of the statement in the system from a supplier or customer invoice"
-msgstr ""
+msgstr "Uvoz naloga u sistem iz ulaznog ili izlaznog računa"
#. module: account
#: model:ir.ui.menu,name:account.menu_finance_periodical_processing_billing
msgid "Billing"
-msgstr "Fakturiranje"
+msgstr "Billing"
#. module: account
#: view:account.account:0
@@ -9526,6 +9943,12 @@ msgid ""
"may keep several types of specialized journals such as a cash journal, "
"purchase journal, sales journal..."
msgstr ""
+"Upravljanje dnevnicima Vaše organizacije. Dnevnik se koristi za "
+"evidentiranje svih knjigovodstvenih transakcija koristeći dvojno "
+"knjigovodstvo. Prema naravi aktivnosti i broju transakcija organizacije "
+"koristite više tipova specijaliziranih dnevnika kao što su banka, blagajna, "
+"ulazni računi, izlazni računi i sl. Možete voditi neograničen broj dnevnika, "
+"već prema potrebama."
#. module: account
#: model:ir.model,name:account.model_account_analytic_chart
@@ -9535,7 +9958,7 @@ msgstr "Analitički kontni plan"
#. module: account
#: help:account.invoice,residual:0
msgid "Remaining amount due."
-msgstr "Ostatak dugovnog iznosa."
+msgstr "Ostatak dugovanja."
#. module: account
#: model:ir.ui.menu,name:account.menu_finance_statistic_report_statement
@@ -9558,7 +9981,7 @@ msgstr "Mapiranje konta"
#: code:addons/account/invoice.py:346
#, python-format
msgid "Invoice '%s' is waiting for validation."
-msgstr ""
+msgstr "Račun '%s' čeka potvrdu."
#. module: account
#: selection:account.entries.report,month:0
@@ -9583,7 +10006,7 @@ msgstr "Konto prihoda ili troškova vezan za odabrani proizvod."
#: code:addons/account/account_move_line.py:1117
#, python-format
msgid "The date of your Journal Entry is not in the defined period!"
-msgstr ""
+msgstr "The date of your Journal Entry is not in the defined period!"
#. module: account
#: field:account.subscription,period_total:0
@@ -9594,7 +10017,7 @@ msgstr "Broj perioda"
#: report:account.general.journal:0
#: model:ir.actions.report.xml,name:account.account_general_journal
msgid "General Journal"
-msgstr "Glavni dnevnik"
+msgstr "Opći dnevnik"
#. module: account
#: view:account.invoice:0
@@ -9638,7 +10061,7 @@ msgstr "Dokumenti računovodstva"
#. module: account
#: model:ir.model,name:account.model_validate_account_move_lines
msgid "Validate Account Move Lines"
-msgstr ""
+msgstr "Ažuriraj stavke"
#. module: account
#: model:ir.actions.act_window,name:account.action_account_analytic_cost_ledger_journal
@@ -9649,12 +10072,12 @@ msgstr "Knjiga troškova (Samo količine)"
#. module: account
#: model:process.node,note:account.process_node_supplierpaidinvoice0
msgid "Invoice's state is Done."
-msgstr ""
+msgstr "Stanje računa je zatvoreno/plaćeno."
#. module: account
#: model:process.transition,note:account.process_transition_reconcilepaid0
msgid "As soon as the reconciliation is done, the invoice can be paid."
-msgstr ""
+msgstr "Čim je obavljeno zatvaranje, račun može biti plaćen."
#. module: account
#: view:account.account.template:0
@@ -9685,7 +10108,7 @@ msgstr "account.addtmpl.wizard"
#: report:account.third_party_ledger:0
#: report:account.third_party_ledger_other:0
msgid "Partner's"
-msgstr "partneri"
+msgstr "Partneri"
#. module: account
#: model:ir.actions.act_window,name:account.action_account_fiscalyear_form
@@ -9700,6 +10123,8 @@ msgid ""
"If the active field is set to False, it will allow you to hide the analytic "
"journal without removing it."
msgstr ""
+"Ako aktivno polje postavljeno na False, to će vam omogućiti da sakrijete "
+"analitiku temeljnice bez da ju uklonite."
#. module: account
#: field:account.analytic.line,ref:0
@@ -9734,7 +10159,7 @@ msgstr "Bankovni račun"
#: model:ir.actions.act_window,name:account.action_account_central_journal
#: model:ir.model,name:account.model_account_central_journal
msgid "Account Central Journal"
-msgstr ""
+msgstr "Account Central Journal"
#. module: account
#: report:account.overdue:0
@@ -9749,7 +10174,7 @@ msgstr "Budućnost"
#. module: account
#: view:account.move.line:0
msgid "Search Journal Items"
-msgstr "Traži stavke dnevnika"
+msgstr "Traži stavke glavne knjige"
#. module: account
#: help:account.tax,base_sign:0
@@ -9771,7 +10196,7 @@ msgstr "Predlozak mapiranja konta"
#. module: account
#: field:account.chart.template,property_account_expense:0
msgid "Expense Account on Product Template"
-msgstr "Konto troškova na predlošku proizvoda"
+msgstr "Zadani konto troška za proizvode"
#. module: account
#: field:account.analytic.line,amount_currency:0
@@ -9801,6 +10226,9 @@ msgid ""
"certain amount of information. They have to be certified by an external "
"auditor annually."
msgstr ""
+"Kreirajte i upravljajte strukturom kontnih planova i kontima koje će te "
+"koristiti za evidenciju knjigovodstvenih dokumenata. Konto je dio glavne "
+"knjige koja omogućuje bilježenje poslovnih transakcija."
#. module: account
#: help:account.move.line,amount_residual_currency:0
@@ -9808,6 +10236,8 @@ msgid ""
"The residual amount on a receivable or payable of a journal entry expressed "
"in its currency (maybe different of the company currency)."
msgstr ""
+"Ostatak iznosa dugovanja ili potraživanja u svojoj valuti (ne nužno valuti "
+"organizacije)."
#. module: account
#: report:account.balancesheet:0
@@ -9887,9 +10317,6 @@ msgstr ""
#~ msgid "Bank Receipt"
#~ msgstr "Bankovni primitak"
-#~ msgid "Ending Balance"
-#~ msgstr "Završni saldo"
-
#, python-format
#~ msgid ""
#~ "The expected balance (%.2f) is different than the computed one. (%.2f)"
@@ -10211,6 +10638,9 @@ msgstr ""
#~ msgid "Credit Trans."
#~ msgstr "Dugovna transakcija"
+#~ msgid "JNRL"
+#~ msgstr "JNRL"
+
#~ msgid "Subscription Entries"
#~ msgstr "Stavke pretplate"
@@ -10339,9 +10769,6 @@ msgstr ""
#~ msgid "Invalid model name in the action definition."
#~ msgstr "Pogrešno ime modela u definiciji akcije."
-#~ msgid "Unreconciled entries"
-#~ msgstr "Otvorene stavke"
-
#~ msgid "Move line select"
#~ msgstr "Odabir stavke knjiženja"
@@ -10905,5 +11332,15 @@ msgstr ""
#~ msgid "Balance Sheet (Assets Accounts)"
#~ msgstr "Bilanca (konta imovine)"
-#~ msgid "Chart of Accounts"
+#~ msgid "Chart of Account"
#~ msgstr "Kontni plan"
+
+#, python-format
+#~ msgid "is validated."
+#~ msgstr "is validated."
+
+#~ msgid "Unreconciled entries"
+#~ msgstr "Unreconciled entries"
+
+#~ msgid "Ending Balance"
+#~ msgstr "Ending Balance"
diff --git a/addons/account/installer.py b/addons/account/installer.py
index a0157e51c8e..d1b19ef4319 100644
--- a/addons/account/installer.py
+++ b/addons/account/installer.py
@@ -23,8 +23,8 @@ import logging
import time
import datetime
from dateutil.relativedelta import relativedelta
-from os.path import join as opj
from operator import itemgetter
+from os.path import join as opj
from tools.translate import _
from osv import fields, osv
@@ -58,8 +58,6 @@ class account_installer(osv.osv_memory):
'date_start': fields.date('Start Date', required=True),
'date_stop': fields.date('End Date', required=True),
'period': fields.selection([('month', 'Monthly'), ('3months','3 Monthly')], 'Periods', required=True),
- 'sale_tax': fields.float('Sale Tax(%)'),
- 'purchase_tax': fields.float('Purchase Tax(%)'),
'company_id': fields.many2one('res.company', 'Company', required=True),
'has_default_company' : fields.boolean('Has Default Company', readonly=True),
}
@@ -76,8 +74,6 @@ class account_installer(osv.osv_memory):
'date_start': lambda *a: time.strftime('%Y-01-01'),
'date_stop': lambda *a: time.strftime('%Y-12-31'),
'period': 'month',
- 'sale_tax': 0.0,
- 'purchase_tax': 0.0,
'company_id': _default_company,
'has_default_company': _default_has_default_company,
'charts': 'configurable'
@@ -100,9 +96,6 @@ class account_installer(osv.osv_memory):
res['fields'][field]['selection'] = cmp_select
return res
- def on_change_tax(self, cr, uid, id, tax):
- return {'value': {'purchase_tax': tax}}
-
def on_change_start_date(self, cr, uid, id, start_date=False):
if start_date:
start_date = datetime.datetime.strptime(start_date, "%Y-%m-%d")
@@ -118,92 +111,12 @@ class account_installer(osv.osv_memory):
if context is None:
context = {}
fy_obj = self.pool.get('account.fiscalyear')
- mod_obj = self.pool.get('ir.model.data')
- obj_acc_temp = self.pool.get('account.account.template')
- obj_tax_code_temp = self.pool.get('account.tax.code.template')
- obj_tax_temp = self.pool.get('account.tax.template')
- obj_acc_chart_temp = self.pool.get('account.chart.template')
- record = self.browse(cr, uid, ids, context=context)[0]
for res in self.read(cr, uid, ids, context=context):
- if record.charts == 'configurable':
+ if 'charts' in res and res['charts'] == 'configurable':
+ #load generic chart of account
fp = tools.file_open(opj('account', 'configurable_account_chart.xml'))
tools.convert_xml_import(cr, 'account', fp, {}, 'init', True, None)
fp.close()
- s_tax = (res.get('sale_tax', 0.0))/100
- p_tax = (res.get('purchase_tax', 0.0))/100
- pur_temp_tax = mod_obj.get_object_reference(cr, uid, 'account', 'tax_code_base_purchases')
- pur_temp_tax_id = pur_temp_tax and pur_temp_tax[1] or False
-
- pur_temp_tax_paid = mod_obj.get_object_reference(cr, uid, 'account', 'tax_code_output')
- pur_temp_tax_paid_id = pur_temp_tax_paid and pur_temp_tax_paid[1] or False
-
- sale_temp_tax = mod_obj.get_object_reference(cr, uid, 'account', 'tax_code_base_sales')
- sale_temp_tax_id = sale_temp_tax and sale_temp_tax[1] or False
-
- sale_temp_tax_paid = mod_obj.get_object_reference(cr, uid, 'account', 'tax_code_input')
- sale_temp_tax_paid_id = sale_temp_tax_paid and sale_temp_tax_paid[1] or False
-
- chart_temp_ids = obj_acc_chart_temp.search(cr, uid, [('name','=','Configurable Account Chart Template')], context=context)
- chart_temp_id = chart_temp_ids and chart_temp_ids[0] or False
- if s_tax * 100 > 0.0:
- tax_account_ids = obj_acc_temp.search(cr, uid, [('name', '=', 'Tax Received')], context=context)
- sales_tax_account_id = tax_account_ids and tax_account_ids[0] or False
- vals_tax_code_temp = {
- 'name': _('TAX %s%%') % (s_tax*100),
- 'code': _('TAX %s%%') % (s_tax*100),
- 'parent_id': sale_temp_tax_id
- }
- new_tax_code_temp = obj_tax_code_temp.create(cr, uid, vals_tax_code_temp, context=context)
- vals_paid_tax_code_temp = {
- 'name': _('TAX Received %s%%') % (s_tax*100),
- 'code': _('TAX Received %s%%') % (s_tax*100),
- 'parent_id': sale_temp_tax_paid_id
- }
- new_paid_tax_code_temp = obj_tax_code_temp.create(cr, uid, vals_paid_tax_code_temp, context=context)
- sales_tax_temp = obj_tax_temp.create(cr, uid, {
- 'name': _('Sale TAX %s%%') % (s_tax*100),
- 'amount': s_tax,
- 'base_code_id': new_tax_code_temp,
- 'tax_code_id': new_paid_tax_code_temp,
- 'ref_base_code_id': new_tax_code_temp,
- 'ref_tax_code_id': new_paid_tax_code_temp,
- 'type_tax_use': 'sale',
- 'type': 'percent',
- 'sequence': 0,
- 'account_collected_id': sales_tax_account_id,
- 'account_paid_id': sales_tax_account_id,
- 'chart_template_id': chart_temp_id,
- }, context=context)
- if p_tax * 100 > 0.0:
- tax_account_ids = obj_acc_temp.search(cr, uid, [('name', '=', 'Tax Paid')], context=context)
- purchase_tax_account_id = tax_account_ids and tax_account_ids[0] or False
- vals_tax_code_temp = {
- 'name': _('TAX %s%%') % (p_tax*100),
- 'code': _('TAX %s%%') % (p_tax*100),
- 'parent_id': pur_temp_tax_id
- }
- new_tax_code_temp = obj_tax_code_temp.create(cr, uid, vals_tax_code_temp, context=context)
- vals_paid_tax_code_temp = {
- 'name': _('TAX Paid %s%%') % (p_tax*100),
- 'code': _('TAX Paid %s%%') % (p_tax*100),
- 'parent_id': pur_temp_tax_paid_id
- }
- new_paid_tax_code_temp = obj_tax_code_temp.create(cr, uid, vals_paid_tax_code_temp, context=context)
- purchase_tax_temp = obj_tax_temp.create(cr, uid, {
- 'name': _('Purchase TAX %s%%') % (p_tax*100),
- 'amount': p_tax,
- 'base_code_id': new_tax_code_temp,
- 'tax_code_id': new_paid_tax_code_temp,
- 'ref_base_code_id': new_tax_code_temp,
- 'ref_tax_code_id': new_paid_tax_code_temp,
- 'type_tax_use': 'purchase',
- 'type': 'percent',
- 'sequence': 0,
- 'account_collected_id': purchase_tax_account_id,
- 'account_paid_id': purchase_tax_account_id,
- 'chart_template_id': chart_temp_id,
- }, context=context)
-
if 'date_start' in res and 'date_stop' in res:
f_ids = fy_obj.search(cr, uid, [('date_start', '<=', res['date_start']), ('date_stop', '>=', res['date_stop']), ('company_id', '=', res['company_id'][0])], context=context)
if not f_ids:
diff --git a/addons/account/project/project_view.xml b/addons/account/project/project_view.xml
index 74f7b55486d..da6ec7f73a1 100644
--- a/addons/account/project/project_view.xml
+++ b/addons/account/project/project_view.xml
@@ -8,9 +8,9 @@
tree
-
-
+
+
@@ -57,9 +57,9 @@
treechild_complete_ids
-
+
-
+
@@ -82,8 +82,8 @@
-
-
+
+
diff --git a/addons/account/report/__init__.py b/addons/account/report/__init__.py
index 90254c53bda..70ceb4b8f83 100644
--- a/addons/account/report/__init__.py
+++ b/addons/account/report/__init__.py
@@ -33,13 +33,10 @@ import account_print_overdue
import account_aged_partner_balance
#import tax_report
import account_tax_report
-import account_balance_landscape
import account_invoice_report
import account_report
import account_entries_report
import account_analytic_entries_report
-import account_balance_sheet
-import account_profit_loss
import account_treasury_report
import account_financial_report
diff --git a/addons/account/report/account_balance_landscape.py b/addons/account/report/account_balance_landscape.py
deleted file mode 100644
index 4e62a9777c9..00000000000
--- a/addons/account/report/account_balance_landscape.py
+++ /dev/null
@@ -1,393 +0,0 @@
-# -*- coding: utf-8 -*-
-##############################################################################
-#
-# OpenERP, Open Source Management Solution
-# Copyright (C) 2004-2010 Tiny SPRL ().
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as
-# published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see .
-#
-##############################################################################
-
-import time
-import locale
-from report import report_sxw
-
-parents = {
- 'tr':1,
- 'li':1,
- 'story': 0,
- 'section': 0
-}
-
-class account_balance_landscape(report_sxw.rml_parse):
- def __init__(self, cr, uid, name, context):
- super(account_balance_landscape, self).__init__(cr, uid, name, context=context)
- self.flag=1
- self.dr_total= 0.00
- self.cr_total= 0.00
- self.parent_bal=0
- self.status=0
- self.done_total=0
- self.baldiv={}
- self.empty_parent=0
- self.result_total = {}
- self.total_for_perc=[]
- self.localcontext.update({
- 'time': time,
- 'lines': self.lines,
- 'get_lines':self.get_lines,
- 'linesForTotal': self.linesForTotal,
- 'linesForYear': self.linesForYear,
- 'get_years':self.get_years,
- 'cal_total':self.cal_total,
- 'total_dr':self.total_dr,
- 'total_cr':self.total_cr
- })
- self.context = context
-
- def linesForYear(self,form):
- temp=0
- years={}
-
- global pattern
- global show
- global perc
- global bal_zero
- global ref_bal
-
- pattern=form['compare_pattern']
-
- if form['show_columns']!=1:
- show=0
- else:
- show=form['show_columns']
-
- if form['format_perc']!=1:
- perc=0
- else:
- perc=form['format_perc']
-
- if form['account_choice']=='bal_zero':
- bal_zero=0
- else:
- bal_zero=1
-
- ctx = self.context.copy()
-
- if perc==1:
- if form['select_account']!=False:
- ref_ac=self.pool.get('account.account').browse(self.cr, self.uid, form['select_account'], ctx.copy())
- if ref_ac.balance<>0.00:
- ref_bal=ref_ac.balance
- else:
- ref_bal=1.00
- else:
- ref_bal='nothing'
- else:
- ref_bal='nothing'
-
-
- self.done_total=1
- self.total_for_perc=self.linesForTotal(form, ids={}, doneAccount={}, level=1)
- self.done_total=0
-
- for t1 in range(0,len(form['fiscalyear'])):
- locale.setlocale(locale.LC_ALL, '')
- self.result_total["sum_credit" + str(t1)]=locale.format("%.2f", self.result_total["sum_credit" + str(t1)], grouping=True)
- self.result_total["sum_debit" + str(t1)]=locale.format("%.2f", self.result_total["sum_debit" + str(t1)], grouping=True)
-
- for temp in range(0,len(form['fiscalyear'])):
- fy=self.pool.get('account.fiscalyear').name_get(self.cr, self.uid, form['fiscalyear'][temp])
- years["year"+str(temp)]=fy[0][1][12:16]
-
- return [years]
-
-
- def linesForTotal(self, form, ids={}, doneAccount={}, level=1):
- if not self.done_total==1:
- return [self.result_total]
- accounts=[]
- if not ids:
- ids = self.ids
- if not ids:
- return []
-
- ctx = self.context.copy()
-
- for id in form['fiscalyear']:
- tmp=[]
-
- ctx['fiscalyear'] = id
- ctx['periods'] = form['periods']
- ctx['period_manner'] = form['period_manner']
- ctx['state'] = form['context'].get('state','all')
- tmp = self.pool.get('account.account').browse(self.cr, self.uid, ids, ctx.copy())
-
- if tmp:
- accounts.append(tmp)
-
- merged_accounts=zip(*accounts)
- # used to check for the frst record so all sum_credit and sum_debit r set to 0.00
- if level==1:
- doneAccount={}
- for entry in merged_accounts:
-
- if entry[0].id in doneAccount:
- continue
- doneAccount[entry[0].id] = 1
-
- for k in range(0,len(entry)):
- temp_credit=0.00
- temp_debit=0.00
- if entry[0].type <> 'view':
- temp_credit+=entry[k].credit
- temp_debit+=entry[k].debit
-
- if self.flag==1:
- self.result_total["sum_credit" + str(k)]=0.00
- self.result_total["sum_debit" + str(k)]=0.00
-
- if form['account_choice']=='bal_zero':
- if temp_credit<>temp_debit:
- self.result_total["sum_credit" + str(k)]+=temp_credit
- self.result_total["sum_debit" + str(k)]+=temp_debit
- else:
- self.result_total["sum_credit" + str(k)]+=temp_credit
- self.result_total["sum_debit" + str(k)]+=temp_debit
-
- self.flag=2
-
- if entry[0].child_id:
- ids2 = [(x.code,x.id) for x in entry[0].child_id]
- ids2.sort()
-
- result_total_parent = self.linesForTotal(form, [x[1] for x in ids2], doneAccount, level+1)
-
- return [self.result_total]
-
- def lines(self, form, ids={}, done={}, level=1):
- accounts=[]
- if not ids:
- ids = self.ids
- if not ids:
- return []
- result = []
- ctx = self.context.copy()
- tmp1=[]
- for id in form['fiscalyear']:
-
- ctx['fiscalyear'] = id
- ctx['periods'] = form['periods']
- ctx['period_manner']=form['period_manner']
- ctx['state'] = form['context'].get('state','all')
- tmp1 = self.pool.get('account.account').browse(self.cr, self.uid, ids, ctx.copy())
-
- if tmp1:
- accounts.append(tmp1)
-
- if level==1: #if parent is called,done is not empty when called again.
- done={}
-
- def cmp_code(x, y):
- return cmp(x.code, y.code)
- for n in range(0,len(accounts)):
- accounts[n].sort(cmp_code)
- merged_accounts=zip(*accounts)
-
- for entry in merged_accounts:
- j=0
- checked=1
-
- if form['account_choice']!='all': # if checked,include empty a/c;not otherwise
- checked=0
-
- if entry[0].id in done:
- continue
- done[entry[0].id] = 1
-
- if entry[0].child_id: # this is for parent account,dont check 0 for it
- checked=4
- self.status=1 # for displaying it Bold
- else:
- self.status=0
- if checked==0:
- i=0
- for i in range(0,len(entry)):
- if bal_zero==0:
- if entry[i].balance<>0.0:
- checked=4
- break
- else:
- checked=3
- i=i+1
- else:
- if entry[i].credit <> 0.0 or entry[i].debit <> 0.0:
- checked=4
- break
- else:
- checked=3
- i=i+1
-
- if checked==3:
- # this is the point where we skip those accounts which are encountered as empty ones
- continue
- self.empty_parent=0
- else:
- self.empty_parent=1
- res = {
- 'code': entry[0].code,
- 'name': entry[0].name,
- 'level': level,
- 'status': self.status,
- }
-
- for j in range(0,len(entry)):
-
- locale.setlocale(locale.LC_ALL, '')
- res["debit"+str(j)]=locale.format("%.2f", entry[j].debit, grouping=True)
- res["credit"+str(j)]=locale.format("%.2f", entry[j].credit, grouping=True)
- res["balance"+str(j)]=locale.format("%.2f", entry[j].balance, grouping=True)
-
-
- if j==0:
- res["bal_cash"+str(j)]="0.00"
- res["bal_perc"+str(j)]="0.00%"
- else:
- temp_cash=entry[j].balance - entry[j-1].balance
- res["bal_cash"+str(j)]=locale.format("%.2f", temp_cash, grouping=True)
- if entry[j-1].balance<>0.00:
- temp_perc=(entry[j].balance - entry[j-1].balance )*100/entry[j-1].balance
- else:
- temp_perc=(entry[j].balance) *100
-
- res["bal_perc"+str(j)]=locale.format("%.2f", temp_perc) + "%"
-
-
- if ref_bal=='nothing':
- if level==1:
- self.parent_bal=1
- else:
- self.parent_bal=0
-
- if self.parent_bal==1:
- res["balance_perc"+str(j)]="/"
- else:
- if entry[j].balance==0.00:
- if self.baldiv["baldiv"+str(level-1)+str(j)]<>0.00:
- res["balance_perc"+str(j)]="0.00%"
- else:
- res["balance_perc"+str(j)]="/"
- else:
- if self.baldiv["baldiv"+str(level-1)+str(j)]<>0.00:
- temp=self.baldiv["baldiv"+str(level-1)+str(j)]
- temp1=(entry[j].balance * 100 )/ float(temp)
- temp1=round(temp1,2)
- res["balance_perc" + str(j)]=str(temp1)+"%"
- else:
- res["balance_perc"+str(j)]="/"
- else:
- res["balance_perc"+str(j)]=str( (entry[j].balance * 100 )/ float(ref_bal)) + "%"
-
- result.append(res)
-
- if entry[0].child_id:
-
- for q in range(0,len(form['fiscalyear'])):
- self.baldiv["baldiv"+str(level)+str(q)]=entry[q].balance
-
- ids2 = [(x.code,x.id) for x in entry[0].child_id]
- ids2.sort()
- dir=[]
- dir += self.lines(form, [x[1] for x in ids2], done, level+1)
- if dir==[]:
- for w in range(0,len(form['fiscalyear'])):
- if entry[w].credit <> 0.0 or entry[w].debit <> 0.0 or entry[w].balance<>0.00:
- dont_pop=1
- break
- else:
- dont_pop=0
- if dont_pop==1:
- result +=dir
- else:
- result.pop(-1) # here we pop up the parent having its children as emprty accounts
- else:
- result +=dir
-
- return result
-
- def get_years(self, form):
- result =[]
- res={}
- for temp in range(0, len(form['fiscalyear'])):
- res={}
- fy=self.pool.get('account.fiscalyear').name_get(self.cr, self.uid, form['fiscalyear'][temp])
- res['year']=fy[0][1]
- res['last_str']=temp
-
- result.append(res)
- self.linesForYear(form)
- return result
-
- def get_lines(self, year_dict, form):
- final_result = []
- res = {}
- line_l = self.lines(form)
- self.cal_total(year_dict)
- if line_l:
- for l in line_l:
- res = {}
- res['code'] = l['code']
- res['name'] = l['name']
- res['level'] = l['level']
- for k,v in l.items():
- if k.startswith('debit'+str(year_dict['last_str'])):
- res['debit'] = v
- if k.startswith('credit'+str(year_dict['last_str'])):
- res['credit'] = v
- if k.startswith('balance'+str(year_dict['last_str'])) and not k.startswith('balance_perc'+str(year_dict['last_str'])):
- res['balance'] =v
- if k.startswith('balance_perc'+str(year_dict['last_str'])) and not k.startswith('balance'+str(year_dict['last_str'])):
- res['balance_perc'] = v
- if form['compare_pattern'] == 'bal_perc':
- if k.startswith('bal_perc'+str(year_dict['last_str'])):
- res['pattern'] = v
- elif form['compare_pattern'] == 'bal_cash':
- if k.startswith('bal_cash'+str(year_dict['last_str'])):
- res['pattern'] = v
- else:
- res['pattern'] = ''
- final_result.append(res)
- return final_result
-
- def cal_total(self, year_dict):
- total_l = self.result_total
- if total_l:
- for k,v in total_l.items():
- if k.startswith('sum_debit'+str(year_dict['last_str'])):
- self.dr_total = v
- elif k.startswith('sum_credit'+str(year_dict['last_str'])):
- self.cr_total = v
- else:
- continue
- return True
-
- def total_dr(self):
- return self.dr_total
-
- def total_cr(self):
- return self.cr_total
-
-report_sxw.report_sxw('report.account.account.balance.landscape', 'account.account', 'addons/account/report/account_balance_landscape.rml', parser=account_balance_landscape, header="internal landscape")
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-
diff --git a/addons/account/report/account_balance_landscape.rml b/addons/account/report/account_balance_landscape.rml
deleted file mode 100644
index d8e4881bbbe..00000000000
--- a/addons/account/report/account_balance_landscape.rml
+++ /dev/null
@@ -1,317 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- [[ repeatIn(get_years(data['form']), 'y') ]]
-
-
Filter By [[ data['form']['filter']!='filter_no' and get_filter(data) ]]
-
Display Account
-
Target Moves
-
-
-
[[ get_account(data) or removeParentNode('para') ]]
-
[[ get_fiscalyear(data) or '' ]]
-
[[ data['form']['filter']=='filter_no' and get_filter(data) or removeParentNode('para') ]]
- [[ data['form']['filter']=='filter_date' or removeParentNode('blockTable') ]]
-
-
Start Date
-
End Date
-
-
-
[[ formatLang(get_start_date(data),date=True) ]]
-
[[ formatLang(get_end_date(data),date=True) ]]
-
-
- [[ data['form']['filter']=='filter_period' or removeParentNode('blockTable') ]]
-
-
Start Period
-
End Period
-
-
-
[[ get_start_period(data) or removeParentNode('para') ]]
-
[[ get_end_period(data) or removeParentNode('para') ]]
-
-
-
-
[[ (data['form']['display_account']=='all' and 'All') or (data['form']['display_account']=='movement' and 'With movements') or 'With balance is not equal to 0']]
Filter By [[ data['form']['filter']!='filter_no' and get_filter(data) ]]
-
Display Account
-
Target Moves
-
-
-
[[ get_account(data) or removeParentNode('para') ]]
-
[[ get_fiscalyear(data) or '' ]]
-
[[ data['form']['filter']=='filter_no' and get_filter(data) or removeParentNode('para') ]]
- [[ data['form']['filter']=='filter_date' or removeParentNode('blockTable') ]]
-
-
Start Date
-
End Date
-
-
-
[[ formatLang(get_start_date(data),date=True) ]]
-
[[ formatLang(get_end_date(data),date=True) ]]
-
-
- [[ data['form']['filter']=='filter_period' or removeParentNode('blockTable') ]]
-
-
Start Period
-
End Period
-
-
-
[[ get_start_period(data) or removeParentNode('para') ]]
-
[[ get_end_period(data) or removeParentNode('para') ]]
-
-
-
-
[[ (data['form']['display_account']=='all' and 'All') or (data['form']['display_account']=='movement' and 'With movements') or 'With balance is not equal to 0']]
-
[[ get_target_move(data) ]]
-
-
-
-
-
-
-
-
-
-
-
- Code
-
-
- Assets
-
-
- Balance
-
-
- Code
-
-
- Liabilities
-
-
- Balance
-
-
-
-
-
- [[ repeatIn(get_lines(),'a' ) ]] [[ a['code1'] ]][[ a['level1']<4 and ( setTag('para','para',{'style':'terp_default_Bold_9'})) or removeParentNode('font') ]]
-
-
-
-
- [[ '. '*(a['level1']-1) ]][[ a['level1']<4 and ( setTag('para','para',{'style':'terp_default_Bold_9'})) or removeParentNode('font') ]][[ a['name1'] ]]
-
-
-
-
- [[ a['level1']<4 and ( setTag('para','para',{'style':'terp_default_Right_9_Bold'})) or removeParentNode('font') ]][[ formatLang(a['balance1'], currency_obj=company.currency_id) ]]
-
-
-
-
- [[ a['code'] ]][[ ( a['level']<4 or a['name']=='Net Profit') and ( setTag('para','para',{'style':'terp_default_Bold_9'})) or removeParentNode('font') ]]
-
-
-
-
- [[ '. '*(a['level']-1) ]]
- [[ ( a['level']<4 or a['name']=='Net Profit') and ( setTag('para','para',{'style':'terp_default_Bold_9'})) or removeParentNode('font') ]][[ a['name'] ]]
-
-
-
-
- [[ ( a['level']<4 or a['name']=='Net Profit') and ( setTag('para','para',{'style':'terp_default_Right_9_Bold'})) or removeParentNode('font') ]]
- [[(a['code'] and a['name']) and formatLang(a['balance'], currency_obj=company.currency_id) or removeParentNode('font')]]
-
-
-
-
-
-
diff --git a/addons/account/report/account_financial_report.py b/addons/account/report/account_financial_report.py
index e9da0a1cd7b..c3b1f5e2e1a 100644
--- a/addons/account/report/account_financial_report.py
+++ b/addons/account/report/account_financial_report.py
@@ -64,29 +64,30 @@ class report_account_common(report_sxw.rml_parse, common_report_header):
vals['balance_cmp'] = self.pool.get('account.financial.report').browse(self.cr, self.uid, report.id, context=data['form']['comparison_context']).balance
lines.append(vals)
account_ids = []
- if report.type == 'accounts' and report.display_detail and report.account_ids:
+ if report.type == 'accounts' and report.account_ids:
account_ids = account_obj._get_children_and_consol(self.cr, self.uid, [x.id for x in report.account_ids])
elif report.type == 'account_type' and report.account_type_ids:
account_ids = account_obj.search(self.cr, self.uid, [('user_type','in', [x.id for x in report.account_type_ids])])
if account_ids:
for account in account_obj.browse(self.cr, self.uid, account_ids, context=data['form']['used_context']):
- if account.type != 'view':
- flag = False
- vals = {
- 'name': account.code + ' ' + account.name,
- 'balance': account.balance != 0 and account.balance * account.user_type.sign or account.balance,
- 'type': 'account',
- 'level': 6,
- 'account_type': account.type,
- }
- if not currency_obj.is_zero(self.cr, self.uid, account.company_id.currency_id, vals['balance']):
+ if report.display_detail == 'detail_flat' and account.type == 'view':
+ continue
+ flag = False
+ vals = {
+ 'name': account.code + ' ' + account.name,
+ 'balance': account.balance != 0 and account.balance * report.sign or account.balance,
+ 'type': 'account',
+ 'level': report.display_detail == 'detail_with_hierarchy' and min(account.level,6) or 6,
+ 'account_type': account.type,
+ }
+ if not currency_obj.is_zero(self.cr, self.uid, account.company_id.currency_id, vals['balance']):
+ flag = True
+ if data['form']['enable_filter']:
+ vals['balance_cmp'] = account_obj.browse(self.cr, self.uid, account.id, context=data['form']['comparison_context']).balance
+ if not currency_obj.is_zero(self.cr, self.uid, account.company_id.currency_id, vals['balance_cmp']):
flag = True
- if data['form']['enable_filter']:
- vals['balance_cmp'] = account_obj.browse(self.cr, self.uid, account.id, context=data['form']['comparison_context']).balance
- if not currency_obj.is_zero(self.cr, self.uid, account.company_id.currency_id, vals['balance_cmp']):
- flag = True
- if flag:
- lines.append(vals)
+ if flag:
+ lines.append(vals)
return lines
report_sxw.report_sxw('report.account.financial.report', 'account.financial.report',
diff --git a/addons/account/report/account_financial_report.rml b/addons/account/report/account_financial_report.rml
index 6a94f02c719..e3b5f3663f9 100644
--- a/addons/account/report/account_financial_report.rml
+++ b/addons/account/report/account_financial_report.rml
@@ -130,15 +130,13 @@
-
-
-
+
+
+
+
+
-
-
-
-
-
+
@@ -229,13 +227,13 @@
Balance
-
+
[[ repeatIn(get_lines(data), 'a') ]]
[[ (a.get('level') <> 0) or removeParentNode('tr') ]]
[[ setTag('tr','tr',{'style': 'Table'+str(min(3,'level' in a and a.get('level') or 1))}) ]]
-
Filter By [[ data['form']['filter']!='filter_no' and get_filter(data) ]]
-
Display Account
-
Target Moves
-
-
-
[[ get_account(data) or removeParentNode('para') ]]
-
[[ get_fiscalyear(data) or '' ]]
-
[[ data['form']['filter']=='filter_no' and get_filter(data) or removeParentNode('para') ]]
- [[ data['form']['filter']=='filter_date' or removeParentNode('blockTable') ]]
-
-
Start Date
-
End Date
-
-
-
[[ formatLang(get_start_date(data),date=True) ]]
-
[[ formatLang(get_end_date(data),date=True) ]]
-
-
- [[ data['form']['filter']=='filter_period' or removeParentNode('blockTable') ]]
-
-
Start Period
-
End Period
-
-
-
[[ get_start_period(data) or removeParentNode('para') ]]
-
[[ get_end_period(data) or removeParentNode('para') ]]
-
-
-
-
[[ (data['form']['display_account']=='all' and 'All') or (data['form']['display_account']=='movement' and 'With movements') or 'With balance is not equal to 0']]
-
[[ get_target_move(data) ]]
-
-
-
-
-
-
-
-
- Code
-
-
- Expenses
-
-
- Balance
-
-
- Code
-
-
- Income
-
-
- Balance
-
-
-
-
-
-
- [[ repeatIn(get_lines(),'a' ) ]] [[ a['code'] ]][[ a['level']<4 and ( setTag('para','para',{'style':'terp_default_Bold_9'})) or removeParentNode('font') ]]
-
-
-
-
- [[ '. '*(a['level']-1) ]][[ a['level']<4 and ( setTag('para','para',{'style':'terp_default_Bold_9'})) or removeParentNode('font') ]][[ a['name'] ]]
-
-
-
- [[ a['level']<4 and ( setTag('para','para',{'style':'terp_default_Right_9_Bold'})) or removeParentNode('font') ]][[ formatLang(abs(a['balance']), currency_obj=company.currency_id) ]]
-
-
-
- [[ a['code1'] ]][[ a['level1']<4 and ( setTag('para','para',{'style':'terp_default_Bold_9'})) or removeParentNode('font') ]]
-
-
-
-
- [[ '. '*(a['level1']-1) ]][[ a['level1']<4 and ( setTag('para','para',{'style':'terp_default_Bold_9'})) or removeParentNode('font') ]][[ a['name1'] ]]
-
-
-
- [[ a['level']<4 and ( setTag('para','para',{'style':'terp_default_Right_9_Bold'})) or removeParentNode('font') ]][[(a['code1'] and a['name1']) and formatLang(abs(a['balance1']), currency_obj=company.currency_id) or removeParentNode('font') ]]
-
-
-
-
-
-
-
-
-
- [[ final_result()['type'] == 'Net Profit' and final_result()['type'] or '' ]]
-
-
- [[ final_result()['balance'] and final_result()['type'] == 'Net Profit' and formatLang(abs(final_result()['balance']), currency_obj=company.currency_id) ]]
-
-
-
-
-
- [[ final_result()['type'] == 'Net Loss' and final_result()['type'] or '' ]]
-
-
- [[ final_result()['balance'] and final_result()['type'] == 'Net Loss' and formatLang(abs(final_result()['balance']), currency_obj=company.currency_id) ]]
-
Filter By [[ data['form']['filter']!='filter_no' and get_filter(data) ]]
-
Display Account
-
Target Moves
-
-
-
[[ get_account(data) or removeParentNode('para') ]]
-
[[ get_fiscalyear(data) or '' ]]
-
[[ data['form']['filter']=='filter_no' and get_filter(data) or removeParentNode('para') ]]
- [[ data['form']['filter']=='filter_date' or removeParentNode('blockTable') ]]
-
-
Start Date
-
End Date
-
-
-
[[ formatLang(get_start_date(data),date=True) ]]
-
[[ formatLang(get_end_date(data),date=True) ]]
-
-
- [[ data['form']['filter']=='filter_period' or removeParentNode('blockTable') ]]
-
-
Start Period
-
End Period
-
-
-
[[ get_start_period(data) or removeParentNode('para') ]]
-
[[ get_end_period(data) or removeParentNode('para') ]]
-
-
-
-
[[ (data['form']['display_account']=='all' and 'All') or (data['form']['display_account']=='movement' and 'With movements') or 'With balance is not equal to 0']]
diff --git a/addons/point_of_sale/report/pos_order_report_view.xml b/addons/point_of_sale/report/pos_order_report_view.xml
index 494dceec93e..4ae53d0ad67 100644
--- a/addons/point_of_sale/report/pos_order_report_view.xml
+++ b/addons/point_of_sale/report/pos_order_report_view.xml
@@ -57,7 +57,7 @@
string="Invoiced"
domain="[('state','=',('invoiced'))]"/>
diff --git a/addons/point_of_sale/report/pos_payment_report_date.py b/addons/point_of_sale/report/pos_payment_report_date.py
deleted file mode 100644
index 76cd9c12be7..00000000000
--- a/addons/point_of_sale/report/pos_payment_report_date.py
+++ /dev/null
@@ -1,79 +0,0 @@
-# -*- coding: utf-8 -*-
-##############################################################################
-#
-# OpenERP, Open Source Management Solution
-# Copyright (C) 2004-2010 Tiny SPRL ().
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as
-# published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see .
-#
-##############################################################################
-
-import time
-from report import report_sxw
-
-class pos_payment_report_date(report_sxw.rml_parse):
-
- def __init__(self, cr, uid, name, context):
- super(pos_payment_report_date, self).__init__(cr, uid, name, context=context)
- self.total = 0.0
- self.localcontext.update({
- 'time': time,
- 'pos_payment_date': self.__pos_payment_date__,
- 'pos_payment_date_total':self.__pos_payment_date__total__,
- })
-
- def __pos_payment_date__(self,form):
- dt1 = form['date_start'] + ' 00:00:00'
- dt2 = form['date_end'] + ' 23:59:59'
- data={}
- if form['user_id']:
- self.cr.execute ("select pt.name,pp.default_code as code,pol.qty,pu.name as uom,pol.discount,pol.price_unit, " \
- "(pol.price_unit * pol.qty * (1 - (pol.discount) / 100.0)) as total " \
- "from pos_order as po,pos_order_line as pol,product_product as pp,product_template as pt,product_uom as pu " \
- "where pt.id=pp.product_tmpl_id and pp.id=pol.product_id and po.id = pol.order_id and pu.id=pt.uom_id " \
- "and po.state IN ('paid','invoiced') and po.date_order >= %s and po.date_order <= %s and po.user_id IN %s " \
- ,(dt1,dt2,tuple(form['user_id'])))
- else:
- self.cr.execute ("select pt.name,pp.default_code as code,pol.qty,pu.name as uom,pol.discount,pol.price_unit, " \
- "(pol.price_unit * pol.qty * (1 - (pol.discount) / 100.0)) as total " \
- "from pos_order as po,pos_order_line as pol,product_product as pp,product_template as pt,product_uom as pu " \
- "where pt.id=pp.product_tmpl_id and pp.id=pol.product_id and po.id = pol.order_id and pu.id=pt.uom_id " \
- "and po.state IN ('paid','invoiced') and po.date_order >= %s and po.date_order <= %s" \
- ,(dt1,dt2))
- data=self.cr.dictfetchall()
- return data
-
- def __pos_payment_date__total__(self,form):
- dt1 = form['date_start'] + ' 00:00:00'
- dt2 = form['date_end'] + ' 23:59:59'
- res=[]
- if form['user_id']:
- self.cr.execute ("select sum(pol.price_unit * pol.qty * (1 - (pol.discount) / 100.0)) " \
- "from pos_order as po,pos_order_line as pol,product_product as pp,product_template as pt " \
- "where pt.id=pp.product_tmpl_id and pp.id=pol.product_id and po.id = pol.order_id " \
- "and po.state IN ('paid','invoiced') and po.date_order >= %s and po.date_order <= %s and po.user_id IN %s " \
- ,(dt1,dt2,tuple(form['user_id'])))
- else:
- self.cr.execute ("select sum(pol.price_unit * pol.qty * (1 - (pol.discount) / 100.0)) " \
- "from pos_order as po,pos_order_line as pol,product_product as pp,product_template as pt " \
- "where pt.id=pp.product_tmpl_id and pp.id=pol.product_id and po.id = pol.order_id " \
- "and po.state IN ('paid','invoiced') and po.date_order >= %s and po.date_order <= %s" \
- ,(dt1,dt2))
- res=self.cr.fetchone()[0] or 0.0
- return res
-
-
-report_sxw.report_sxw('report.pos.payment.report.date', 'pos.order', 'addons/point_of_sale/report/pos_payment_report_date.rml', parser=pos_payment_report_date,header='internal')
-
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
\ No newline at end of file
diff --git a/addons/point_of_sale/report/pos_payment_report_date.rml b/addons/point_of_sale/report/pos_payment_report_date.rml
deleted file mode 100644
index ba7764fed28..00000000000
--- a/addons/point_of_sale/report/pos_payment_report_date.rml
+++ /dev/null
@@ -1,188 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- [[ repeatIn(objects,'order') ]]
- Sales Lines
-
-
-
-
-
There are pending operations that could not be saved into the database, are you sure you want to exit?
+
@@ -162,8 +191,7 @@
-
- €
+
@@ -176,8 +204,7 @@
-
- €
+
@@ -186,8 +213,7 @@
-
- €
+
@@ -196,17 +222,7 @@
-
-
-
-
-
-
-
-
-
-
- €
+
@@ -224,23 +240,64 @@
Receipt
-
- OpenERP Point of Sale
-
-
-
-
-
-
-
Total:
€
-
Tax:
€
-
Change:
€
-
-
-
+
+
+
+
+
+
+
+
+
+ Phone:
+ User:
+ Shop:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Tax:
+
+
+
Total:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Change:
+
+
+
+
+
\ No newline at end of file
diff --git a/addons/point_of_sale/test/point_of_sale_report.yml b/addons/point_of_sale/test/point_of_sale_report.yml
index f3ea5995b9e..c7583b1549c 100644
--- a/addons/point_of_sale/test/point_of_sale_report.yml
+++ b/addons/point_of_sale/test/point_of_sale_report.yml
@@ -35,23 +35,7 @@
file(os.path.join(tools.config['test_report_directory'], 'point_of_sale-receipt report'+format), 'wb+').write(data)
-
- Create a record for the root user in pos.payment.report.user (used by the next python block).
--
- !record {model: pos.payment.report.user, id: pos_payment_report_user_1}:
- user_id: []
--
- Print the POS Payment Report through the wizard
--
- !python {model: ir.ui.menu}: |
- import time
- ctx={}
- ctx.update({'model': 'ir.ui.menu','active_ids': []})
- data_dict = {'date_start': time.strftime('%Y-%m-%d'), 'date_end': time.strftime('%Y-%m-%d'), 'user_id': [(6,0,[ref('base.user_root')])] }
- from tools import test_reports
- test_reports.try_report_action(cr, uid, 'action_report_pos_payment_repport_date',wiz_data=data_dict, context=ctx, our_module='point_of_sale')
-
--
- Print the POS Details Report through the wizard
+ Print the POS Details Report through the wizard
-
!python {model: ir.ui.menu}: |
import time
diff --git a/addons/point_of_sale/wizard/__init__.py b/addons/point_of_sale/wizard/__init__.py
index 0985ae906be..cb0a6a6da9a 100644
--- a/addons/point_of_sale/wizard/__init__.py
+++ b/addons/point_of_sale/wizard/__init__.py
@@ -30,7 +30,6 @@ import pos_sales_user
import pos_sales_user_today
import pos_receipt
import pos_payment_report_user
-import pos_payment_report_date
import pos_payment_report
import pos_payment
diff --git a/addons/point_of_sale/wizard/pos_box_out.py b/addons/point_of_sale/wizard/pos_box_out.py
index 46f710c7882..2a8037dbdc7 100644
--- a/addons/point_of_sale/wizard/pos_box_out.py
+++ b/addons/point_of_sale/wizard/pos_box_out.py
@@ -75,31 +75,21 @@ class pos_box_out(osv.osv_memory):
res_obj = self.pool.get('res.users')
for data in self.read(cr, uid, ids, context=context):
curr_company = res_obj.browse(cr, uid, uid, context=context).company_id.id
- statement_id = statement_obj.search(cr, uid, [('journal_id', '=', data['journal_id']), ('company_id', '=', curr_company), ('user_id', '=', uid), ('state', '=', 'open')], context=context)
+ statement_ids = statement_obj.search(cr, uid, [('journal_id', '=', data['journal_id']), ('company_id', '=', curr_company), ('user_id', '=', uid), ('state', '=', 'open')], context=context)
monday = (datetime.today() + relativedelta(weekday=0)).strftime('%Y-%m-%d')
sunday = (datetime.today() + relativedelta(weekday=6)).strftime('%Y-%m-%d')
done_statmt = statement_obj.search(cr, uid, [('date', '>=', monday+' 00:00:00'), ('date', '<=', sunday+' 23:59:59'), ('journal_id', '=', data['journal_id']), ('company_id', '=', curr_company), ('user_id', '=', uid)], context=context)
stat_done = statement_obj.browse(cr, uid, done_statmt, context=context)
am = 0.0
product = product_obj.browse(cr, uid, data['product_id'], context=context)
- acc_id = product.property_account_income
+ acc_id = product.property_account_income or product.categ_id.property_account_income_categ
if not acc_id:
raise osv.except_osv(_('Error !'), _('please check that account is set to %s')%(product.name))
- if not statement_id:
+ if not statement_ids:
raise osv.except_osv(_('Error !'), _('You have to open at least one cashbox'))
- if statement_id:
- statement_id = statement_id[0]
- if not statement_id:
- statement_id = statement_obj.create(cr, uid, {
- 'date': time.strftime('%Y-%m-%d 00:00:00'),
- 'journal_id': data['journal_id'],
- 'company_id': curr_company,
- 'user_id': uid,
- }, context=context)
- vals['statement_id'] = statement_id
+ vals['statement_id'] = statement_ids[0]
vals['journal_id'] = data['journal_id']
- if acc_id:
- vals['account_id'] = acc_id.id
+ vals['account_id'] = acc_id.id
amount = data['amount'] or 0.0
if data['amount'] > 0:
amount = -data['amount']
diff --git a/addons/point_of_sale/wizard/pos_close_statement.py b/addons/point_of_sale/wizard/pos_close_statement.py
index 92dee2f8e4c..08f51113d8d 100644
--- a/addons/point_of_sale/wizard/pos_close_statement.py
+++ b/addons/point_of_sale/wizard/pos_close_statement.py
@@ -25,6 +25,10 @@ from tools.translate import _
class pos_close_statement(osv.osv_memory):
_name = 'pos.close.statement'
_description = 'Close Statements'
+
+ def cancel_wizard(self, cr, uid, ids, context=None):
+ if context.get('cancel_action'):
+ return context['cancel_action']
def close_statement(self, cr, uid, ids, context=None):
"""
@@ -35,6 +39,7 @@ class pos_close_statement(osv.osv_memory):
@param context: A standard dictionary
@return : Blank Dictionary
"""
+ context = context or {}
mod_obj = self.pool.get('ir.model.data')
statement_obj = self.pool.get('account.bank.statement')
journal_obj = self.pool.get('account.journal')
diff --git a/addons/point_of_sale/wizard/pos_close_statement.xml b/addons/point_of_sale/wizard/pos_close_statement.xml
index 61c984c873e..9c11ad02e39 100644
--- a/addons/point_of_sale/wizard/pos_close_statement.xml
+++ b/addons/point_of_sale/wizard/pos_close_statement.xml
@@ -15,7 +15,9 @@
+ string="No" invisible="context.get('cancel_action')"/>
+
diff --git a/addons/point_of_sale/wizard/pos_confirm.xml b/addons/point_of_sale/wizard/pos_confirm.xml
index 85b43bd115d..d98d0f99eed 100644
--- a/addons/point_of_sale/wizard/pos_confirm.xml
+++ b/addons/point_of_sale/wizard/pos_confirm.xml
@@ -3,13 +3,13 @@
- Post Journal Entries
+ Create Sale Journal Entriespos.confirmform
-
+
@@ -25,7 +25,7 @@
- Post Journal Entries
+ Create Sale Entriesir.actions.act_windowpos.confirmform
diff --git a/addons/point_of_sale/wizard/pos_open_statement.py b/addons/point_of_sale/wizard/pos_open_statement.py
index 47c5348943b..11ca75401a4 100644
--- a/addons/point_of_sale/wizard/pos_open_statement.py
+++ b/addons/point_of_sale/wizard/pos_open_statement.py
@@ -75,16 +75,9 @@ class pos_open_statement(osv.osv_memory):
form_id = form_res and form_res[1] or False
search_id = mod_obj.get_object_reference(cr, uid, 'point_of_sale', 'view_pos_open_cash_statement_filter')
- return {
- 'domain': "[('id', 'in',[ "+','.join(map(str,st_ids))+"])]",
- 'name': _('Open Cash Registers'),
- 'view_type': 'form',
- 'view_mode': 'tree, form',
- 'search_view_id': search_id and search_id[1] or False ,
- 'res_model': 'account.bank.statement',
- 'views': [(tree_id, 'tree'), (form_id, 'form')],
- 'context': {},
- 'type': 'ir.actions.act_window'
+ return {
+ 'type': 'ir.actions.client',
+ 'tag': 'pos.ui',
}
pos_open_statement()
diff --git a/addons/point_of_sale/wizard/pos_payment_report_date.py b/addons/point_of_sale/wizard/pos_payment_report_date.py
deleted file mode 100644
index f97391c7f7d..00000000000
--- a/addons/point_of_sale/wizard/pos_payment_report_date.py
+++ /dev/null
@@ -1,68 +0,0 @@
-# -*- coding: utf-8 -*-
-##############################################################################
-#
-# OpenERP, Open Source Management Solution
-# Copyright (C) 2004-2010 Tiny SPRL ().
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as
-# published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see .
-#
-##############################################################################
-
-import time
-
-from osv import osv
-from osv import fields
-
-
-class pos_payment_report_date(osv.osv_memory):
- _name = 'pos.payment.report.date'
- _description = 'POS Payment Report according to date'
-
- def print_report(self, cr, uid, ids, context=None):
- """
- To get the date and print the report
- @param self: The object pointer.
- @param cr: A database cursor
- @param uid: ID of the user currently logged in
- @param context: A standard dictionary
- @return : retrun report
- """
- if context is None:
- context = {}
- datas = {'ids': context.get('active_ids', [])}
- res = self.read(cr, uid, ids, ['date_start', 'date_end', 'user_id'], context=context)
- res = res and res[0] or {}
- datas['form'] = res
- if res.get('id',False):
- datas['ids']=[res['id']]
- return {
- 'type': 'ir.actions.report.xml',
- 'report_name': 'pos.payment.report.date',
- 'datas': datas,
- }
-
- _columns = {
- 'date_start': fields.date('Start Date', required=True),
- 'date_end': fields.date('End Date', required=True),
- 'user_id': fields.many2many('res.users', 'res_user_sale_date', 'user_id', 'sale_id', 'Salesman')
- }
- _defaults = {
- 'date_start': lambda *a: time.strftime('%Y-%m-%d'),
- 'date_end': lambda *a: time.strftime('%Y-%m-%d'),
- }
-
-pos_payment_report_date()
-
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-
diff --git a/addons/point_of_sale/wizard/pos_payment_report_date_view.xml b/addons/point_of_sale/wizard/pos_payment_report_date_view.xml
deleted file mode 100644
index 7c74ae1d9be..00000000000
--- a/addons/point_of_sale/wizard/pos_payment_report_date_view.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-
-
-
-
- pos.payment.report.date.form
- pos.payment.report.date
- form
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Sales by Products
- ir.actions.act_window
- pos.payment.report.date
- form
- form
- new
-
-
-
diff --git a/addons/portal/__openerp__.py b/addons/portal/__openerp__.py
index d76917fcf45..035ee45b4df 100644
--- a/addons/portal/__openerp__.py
+++ b/addons/portal/__openerp__.py
@@ -45,7 +45,6 @@ module 'share'.
'wizard/share_wizard_view.xml',
],
'installable': True,
- 'certificate' : '',
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/portal/i18n/hr.po b/addons/portal/i18n/hr.po
index 737a6990153..87a79c2e7c6 100644
--- a/addons/portal/i18n/hr.po
+++ b/addons/portal/i18n/hr.po
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2011-07-04 14:16+0000\n"
-"PO-Revision-Date: 2011-07-11 09:51+0000\n"
-"Last-Translator: FULL NAME \n"
+"PO-Revision-Date: 2011-12-19 17:37+0000\n"
+"Last-Translator: Goran Kliska \n"
"Language-Team: Croatian \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-05 05:57+0000\n"
-"X-Generator: Launchpad (build 14231)\n"
+"X-Launchpad-Export-Date: 2011-12-20 04:50+0000\n"
+"X-Generator: Launchpad (build 14538)\n"
#. module: portal
#: code:addons/portal/wizard/share_wizard.py:55
@@ -32,7 +32,7 @@ msgstr ""
#. module: portal
#: field:res.portal,group_id:0
msgid "Group"
-msgstr ""
+msgstr "Grupa"
#. module: portal
#: help:res.portal,other_group_ids:0
@@ -43,7 +43,7 @@ msgstr ""
#: view:share.wizard:0
#: field:share.wizard,group_ids:0
msgid "Existing groups"
-msgstr ""
+msgstr "Postojeće grupe"
#. module: portal
#: model:ir.model,name:portal.model_res_portal_wizard_user
@@ -63,7 +63,7 @@ msgstr ""
#. module: portal
#: field:res.portal.wizard.user,user_email:0
msgid "E-mail"
-msgstr ""
+msgstr "E-pošta"
#. module: portal
#: view:res.portal:0
@@ -79,7 +79,7 @@ msgstr ""
#: view:res.portal:0
#: field:res.portal,widget_ids:0
msgid "Widgets"
-msgstr ""
+msgstr "Widgeti"
#. module: portal
#: model:ir.module.module,description:portal.module_meta_information
@@ -108,7 +108,7 @@ msgstr ""
#. module: portal
#: view:res.portal.wizard:0
msgid "Send Invitations"
-msgstr ""
+msgstr "Pošalji pozivnice"
#. module: portal
#: help:res.portal,url:0
@@ -133,7 +133,7 @@ msgstr ""
#. module: portal
#: field:res.portal,parent_menu_id:0
msgid "Parent Menu"
-msgstr ""
+msgstr "Nadređeni izbornik"
#. module: portal
#: view:res.portal:0
@@ -143,7 +143,7 @@ msgstr ""
#. module: portal
#: view:res.portal.wizard.user:0
msgid "Portal Users"
-msgstr ""
+msgstr "Korisnici portala"
#. module: portal
#: field:res.portal,override_menu:0
@@ -153,12 +153,12 @@ msgstr ""
#. module: portal
#: field:res.portal,menu_action_id:0
msgid "Menu Action"
-msgstr ""
+msgstr "Akcija izbornika"
#. module: portal
#: field:res.portal.wizard.user,name:0
msgid "User Name"
-msgstr ""
+msgstr "Korisničko ime"
#. module: portal
#: model:ir.model,name:portal.model_res_portal_widget
diff --git a/addons/portal/security/ir.model.access.csv b/addons/portal/security/ir.model.access.csv
index db83f9ae77e..c132b0dfb68 100644
--- a/addons/portal/security/ir.model.access.csv
+++ b/addons/portal/security/ir.model.access.csv
@@ -1,5 +1,5 @@
-id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
-access_all,access.portal.all,model_res_portal,,1,0,0,0
-access_widget_all,access.portal.widget.all,model_res_portal_widget,,1,0,0,0
-access_manager,access.portal.manager,model_res_portal,group_portal_manager,1,1,1,1
-access_widget_manager,access.portal.widget.manager,model_res_portal_widget,group_portal_manager,1,1,1,1
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+access_all,access.portal.all,model_res_portal,,1,0,0,0
+access_widget_all,access.portal.widget.all,model_res_portal_widget,,1,0,0,0
+access_manager,access.portal.manager,model_res_portal,group_portal_manager,1,1,1,1
+access_widget_manager,access.portal.widget.manager,model_res_portal_widget,group_portal_manager,1,1,1,1
diff --git a/addons/portal/security/portal_security.xml b/addons/portal/security/portal_security.xml
index 4850cb7805b..4b73db5cdcc 100644
--- a/addons/portal/security/portal_security.xml
+++ b/addons/portal/security/portal_security.xml
@@ -1,13 +1,21 @@
+
+ Portal
+
+ 25
+
+
- Portal / Officer
+ OfficerPortal officers can create new portal users with the portal wizard.
+
- Portal / Manager
+ ManagerPortal managers have access to the portal definitions, and can easily configure the users, access rights and menus of portal users.
+
diff --git a/addons/process/__openerp__.py b/addons/process/__openerp__.py
index 4af045ff6bb..e948f45ce61 100644
--- a/addons/process/__openerp__.py
+++ b/addons/process/__openerp__.py
@@ -23,7 +23,7 @@
{
'name': 'Enterprise Process',
'version': '1.0',
- 'category': 'Tools',
+ 'category': 'Hidden/Dependency',
'description': """
This module shows the basic processes involved in the selected modules and in the sequence they occur.
======================================================================================================
diff --git a/addons/process/security/ir.model.access.csv b/addons/process/security/ir.model.access.csv
index 7356880f47a..84e3b5ea0e7 100644
--- a/addons/process/security/ir.model.access.csv
+++ b/addons/process/security/ir.model.access.csv
@@ -1,6 +1,6 @@
-"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
-"access_process_process","process.process","model_process_process","base.group_user",1,0,0,0
-"access_process_node","process.node","model_process_node","base.group_user",1,0,0,0
-"access_process_transition","process.transition","model_process_transition","base.group_user",1,0,0,0
-"access_process_transition_action","process.transition.action","model_process_transition_action","base.group_user",1,0,0,0
-"access_process_condition","process.condition","model_process_condition","base.group_user",1,0,0,0
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+access_process_process,process.process,model_process_process,base.group_user,1,0,0,0
+access_process_node,process.node,model_process_node,base.group_user,1,0,0,0
+access_process_transition,process.transition,model_process_transition,base.group_user,1,0,0,0
+access_process_transition_action,process.transition.action,model_process_transition_action,base.group_user,1,0,0,0
+access_process_condition,process.condition,model_process_condition,base.group_user,1,0,0,0
diff --git a/addons/procurement/__openerp__.py b/addons/procurement/__openerp__.py
index 87a766a009f..d10e1874d68 100644
--- a/addons/procurement/__openerp__.py
+++ b/addons/procurement/__openerp__.py
@@ -25,7 +25,7 @@
"version" : "1.0",
"author" : "OpenERP SA",
"website" : "http://www.openerp.com",
- "category" : "Warehouse Management",
+ "category" : "Hidden/Dependency",
"depends" : ["base","process", "product", "stock"],
"description": """
This is the module for computing Procurements.
@@ -59,6 +59,7 @@ depending on the product's configuration.
'board_mrp_procurement_view.xml',
],
'demo_xml': ['stock_orderpoint.xml'],
+ 'test': ['test/procurement.yml'],
'installable': True,
'active': False,
'certificate': '00954248826881074509',
diff --git a/addons/procurement/i18n/hr.po b/addons/procurement/i18n/hr.po
new file mode 100644
index 00000000000..52f9ec3b968
--- /dev/null
+++ b/addons/procurement/i18n/hr.po
@@ -0,0 +1,890 @@
+# Croatian translation for openobject-addons
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2011-01-11 11:15+0000\n"
+"PO-Revision-Date: 2011-12-12 06:23+0000\n"
+"Last-Translator: Tomislav Bosnjakovic \n"
+"Language-Team: Croatian \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-12-13 05:02+0000\n"
+"X-Generator: Launchpad (build 14458)\n"
+
+#. module: procurement
+#: view:make.procurement:0
+msgid "Ask New Products"
+msgstr "Traži nove artikle"
+
+#. module: procurement
+#: model:ir.ui.menu,name:procurement.menu_stock_sched
+msgid "Schedulers"
+msgstr ""
+
+#. module: procurement
+#: model:ir.model,name:procurement.model_make_procurement
+msgid "Make Procurements"
+msgstr ""
+
+#. module: procurement
+#: help:procurement.order.compute.all,automatic:0
+msgid ""
+"Triggers an automatic procurement for all products that have a virtual stock "
+"under 0. You should probably not use this option, we suggest using a MTO "
+"configuration on products."
+msgstr ""
+
+#. module: procurement
+#: view:stock.warehouse.orderpoint:0
+msgid "Group By..."
+msgstr "Grupiraj po..."
+
+#. module: procurement
+#: help:stock.warehouse.orderpoint,procurement_draft_ids:0
+msgid "Draft procurement of the product and location of that orderpoint"
+msgstr ""
+
+#. module: procurement
+#: code:addons/procurement/procurement.py:288
+#, python-format
+msgid "No supplier defined for this product !"
+msgstr ""
+
+#. module: procurement
+#: field:make.procurement,uom_id:0
+msgid "Unit of Measure"
+msgstr "Jedinica mjere"
+
+#. module: procurement
+#: field:procurement.order,procure_method:0
+msgid "Procurement Method"
+msgstr "Metoda nabave"
+
+#. module: procurement
+#: code:addons/procurement/procurement.py:304
+#, python-format
+msgid "No address defined for the supplier"
+msgstr ""
+
+#. module: procurement
+#: model:ir.actions.act_window,name:procurement.action_procurement_compute
+msgid "Compute Stock Minimum Rules Only"
+msgstr "Izračunaj samo pravila minimalnih zaliha"
+
+#. module: procurement
+#: field:procurement.order,company_id:0
+#: field:stock.warehouse.orderpoint,company_id:0
+msgid "Company"
+msgstr "Organizacija"
+
+#. module: procurement
+#: field:procurement.order,product_uos_qty:0
+msgid "UoS Quantity"
+msgstr ""
+
+#. module: procurement
+#: view:procurement.order:0
+#: field:procurement.order,name:0
+msgid "Reason"
+msgstr "Razlog"
+
+#. module: procurement
+#: view:procurement.order.compute:0
+msgid "Compute Procurements"
+msgstr "Izračunaj nabave"
+
+#. module: procurement
+#: field:procurement.order,message:0
+msgid "Latest error"
+msgstr "Zadnja greška"
+
+#. module: procurement
+#: help:mrp.property,composition:0
+msgid "Not used in computations, for information purpose only."
+msgstr "Ne korisiti se u izračunu, samo za informaciju"
+
+#. module: procurement
+#: field:stock.warehouse.orderpoint,procurement_id:0
+msgid "Latest procurement"
+msgstr "Zadnja nabava"
+
+#. module: procurement
+#: view:procurement.order:0
+msgid "Notes"
+msgstr "Bilješke"
+
+#. module: procurement
+#: selection:procurement.order,procure_method:0
+msgid "on order"
+msgstr "na nalogu"
+
+#. module: procurement
+#: help:procurement.order,message:0
+msgid "Exception occurred while computing procurement orders."
+msgstr ""
+
+#. module: procurement
+#: help:procurement.order,state:0
+msgid ""
+"When a procurement is created the state is set to 'Draft'.\n"
+" If the procurement is confirmed, the state is set to 'Confirmed'. "
+" \n"
+"After confirming the state is set to 'Running'.\n"
+" If any exception arises in the order then the state is set to 'Exception'.\n"
+" Once the exception is removed the state becomes 'Ready'.\n"
+" It is in 'Waiting'. state when the procurement is waiting for another one "
+"to finish."
+msgstr ""
+
+#. module: procurement
+#: view:stock.warehouse.orderpoint:0
+msgid "Minimum Stock Rules Search"
+msgstr ""
+
+#. module: procurement
+#: help:stock.warehouse.orderpoint,product_min_qty:0
+msgid ""
+"When the virtual stock goes belong the Min Quantity, OpenERP generates a "
+"procurement to bring the virtual stock to the Max Quantity."
+msgstr ""
+
+#. module: procurement
+#: view:procurement.order.compute.all:0
+msgid "Scheduler Parameters"
+msgstr ""
+
+#. module: procurement
+#: model:ir.model,name:procurement.model_stock_move
+msgid "Stock Move"
+msgstr ""
+
+#. module: procurement
+#: view:procurement.order:0
+msgid "Planification"
+msgstr ""
+
+#. module: procurement
+#: selection:procurement.order,state:0
+msgid "Ready"
+msgstr ""
+
+#. module: procurement
+#: field:procurement.order.compute.all,automatic:0
+msgid "Automatic orderpoint"
+msgstr ""
+
+#. module: procurement
+#: field:mrp.property,composition:0
+msgid "Properties composition"
+msgstr ""
+
+#. module: procurement
+#: selection:procurement.order,state:0
+msgid "Confirmed"
+msgstr ""
+
+#. module: procurement
+#: view:procurement.order:0
+msgid "Retry"
+msgstr ""
+
+#. module: procurement
+#: view:procurement.order.compute:0
+#: view:procurement.orderpoint.compute:0
+msgid "Parameters"
+msgstr ""
+
+#. module: procurement
+#: view:procurement.order:0
+msgid "Confirm"
+msgstr ""
+
+#. module: procurement
+#: help:procurement.order,origin:0
+msgid ""
+"Reference of the document that created this Procurement.\n"
+"This is automatically completed by OpenERP."
+msgstr ""
+
+#. module: procurement
+#: view:stock.warehouse.orderpoint:0
+msgid "Procurement Orders to Process"
+msgstr ""
+
+#. module: procurement
+#: constraint:res.company:0
+msgid "Error! You can not create recursive companies."
+msgstr ""
+
+#. module: procurement
+#: field:procurement.order,priority:0
+msgid "Priority"
+msgstr ""
+
+#. module: procurement
+#: view:procurement.order:0
+#: field:procurement.order,state:0
+msgid "State"
+msgstr ""
+
+#. module: procurement
+#: field:procurement.order,location_id:0
+#: view:stock.warehouse.orderpoint:0
+#: field:stock.warehouse.orderpoint,location_id:0
+msgid "Location"
+msgstr ""
+
+#. module: procurement
+#: model:ir.model,name:procurement.model_stock_picking
+msgid "Picking List"
+msgstr ""
+
+#. module: procurement
+#: field:make.procurement,warehouse_id:0
+#: view:stock.warehouse.orderpoint:0
+#: field:stock.warehouse.orderpoint,warehouse_id:0
+msgid "Warehouse"
+msgstr ""
+
+#. module: procurement
+#: selection:stock.warehouse.orderpoint,logic:0
+msgid "Best price (not yet active!)"
+msgstr ""
+
+#. module: procurement
+#: view:procurement.order:0
+msgid "Product & Location"
+msgstr ""
+
+#. module: procurement
+#: model:ir.model,name:procurement.model_procurement_order_compute
+msgid "Compute Procurement"
+msgstr ""
+
+#. module: procurement
+#: model:ir.module.module,shortdesc:procurement.module_meta_information
+#: field:stock.move,procurements:0
+msgid "Procurements"
+msgstr ""
+
+#. module: procurement
+#: field:res.company,schedule_range:0
+msgid "Scheduler Range Days"
+msgstr ""
+
+#. module: procurement
+#: model:ir.actions.act_window,help:procurement.procurement_action
+msgid ""
+"A procurement order is used to record a need for a specific product at a "
+"specific location. A procurement order is usually created automatically from "
+"sales orders, a Pull Logistics rule or Minimum Stock Rules. When the "
+"procurement order is confirmed, it automatically creates the necessary "
+"operations to fullfil the need: purchase order proposition, manufacturing "
+"order, etc."
+msgstr ""
+
+#. module: procurement
+#: field:make.procurement,date_planned:0
+msgid "Planned Date"
+msgstr ""
+
+#. module: procurement
+#: view:procurement.order:0
+msgid "Group By"
+msgstr ""
+
+#. module: procurement
+#: field:make.procurement,qty:0
+#: field:procurement.order,product_qty:0
+msgid "Quantity"
+msgstr ""
+
+#. module: procurement
+#: code:addons/procurement/procurement.py:377
+#, python-format
+msgid "Not enough stock and no minimum orderpoint rule defined."
+msgstr ""
+
+#. module: procurement
+#: code:addons/procurement/procurement.py:137
+#, python-format
+msgid "Invalid action !"
+msgstr ""
+
+#. module: procurement
+#: view:procurement.order:0
+msgid "References"
+msgstr ""
+
+#. module: procurement
+#: view:res.company:0
+msgid "Configuration"
+msgstr ""
+
+#. module: procurement
+#: field:stock.warehouse.orderpoint,qty_multiple:0
+msgid "Qty Multiple"
+msgstr ""
+
+#. module: procurement
+#: help:procurement.order,procure_method:0
+msgid ""
+"If you encode manually a Procurement, you probably want to use a make to "
+"order method."
+msgstr ""
+
+#. module: procurement
+#: model:ir.ui.menu,name:procurement.menu_stock_procurement
+msgid "Automatic Procurements"
+msgstr ""
+
+#. module: procurement
+#: field:stock.warehouse.orderpoint,product_max_qty:0
+msgid "Max Quantity"
+msgstr ""
+
+#. module: procurement
+#: model:ir.model,name:procurement.model_procurement_order
+#: model:process.process,name:procurement.process_process_procurementprocess0
+#: view:procurement.order:0
+msgid "Procurement"
+msgstr ""
+
+#. module: procurement
+#: model:ir.actions.act_window,name:procurement.procurement_action
+msgid "Procurement Orders"
+msgstr ""
+
+#. module: procurement
+#: view:procurement.order:0
+msgid "To Fix"
+msgstr ""
+
+#. module: procurement
+#: view:procurement.order:0
+msgid "Exceptions"
+msgstr ""
+
+#. module: procurement
+#: model:process.node,note:procurement.process_node_serviceonorder0
+msgid "Assignment from Production or Purchase Order."
+msgstr ""
+
+#. module: procurement
+#: model:ir.model,name:procurement.model_mrp_property
+msgid "Property"
+msgstr ""
+
+#. module: procurement
+#: model:ir.actions.act_window,name:procurement.act_make_procurement
+#: view:make.procurement:0
+msgid "Procurement Request"
+msgstr ""
+
+#. module: procurement
+#: view:procurement.orderpoint.compute:0
+msgid "Compute Stock"
+msgstr ""
+
+#. module: procurement
+#: view:procurement.order:0
+msgid "Late"
+msgstr ""
+
+#. module: procurement
+#: model:process.process,name:procurement.process_process_serviceproductprocess0
+msgid "Service"
+msgstr ""
+
+#. module: procurement
+#: model:ir.module.module,description:procurement.module_meta_information
+msgid ""
+"\n"
+" This is the module for computing Procurements.\n"
+" "
+msgstr ""
+
+#. module: procurement
+#: field:stock.warehouse.orderpoint,procurement_draft_ids:0
+msgid "Related Procurement Orders"
+msgstr ""
+
+#. module: procurement
+#: view:procurement.orderpoint.compute:0
+msgid ""
+"Wizard checks all the stock minimum rules and generate procurement order."
+msgstr ""
+
+#. module: procurement
+#: field:stock.warehouse.orderpoint,product_min_qty:0
+msgid "Min Quantity"
+msgstr ""
+
+#. module: procurement
+#: selection:procurement.order,priority:0
+msgid "Urgent"
+msgstr ""
+
+#. module: procurement
+#: selection:mrp.property,composition:0
+msgid "plus"
+msgstr ""
+
+#. module: procurement
+#: code:addons/procurement/procurement.py:325
+#, python-format
+msgid ""
+"Please check the Quantity in Procurement Order(s), it should not be less "
+"than 1!"
+msgstr ""
+
+#. module: procurement
+#: help:stock.warehouse.orderpoint,active:0
+msgid ""
+"If the active field is set to False, it will allow you to hide the "
+"orderpoint without removing it."
+msgstr ""
+
+#. module: procurement
+#: help:stock.warehouse.orderpoint,product_max_qty:0
+msgid ""
+"When the virtual stock goes belong the Max Quantity, OpenERP generates a "
+"procurement to bring the virtual stock to the Max Quantity."
+msgstr ""
+
+#. module: procurement
+#: help:procurement.orderpoint.compute,automatic:0
+msgid "If the stock of a product is under 0, it will act like an orderpoint"
+msgstr ""
+
+#. module: procurement
+#: view:procurement.order:0
+msgid "Procurement Lines"
+msgstr ""
+
+#. module: procurement
+#: view:procurement.order.compute.all:0
+msgid ""
+"This wizard allows you to run all procurement, production and/or purchase "
+"orders that should be processed based on their configuration. By default, "
+"the scheduler is launched automatically every night by OpenERP. You can use "
+"this menu to force it to be launched now. Note that it runs in the "
+"background, you may have to wait for a few minutes until it has finished "
+"computing."
+msgstr ""
+
+#. module: procurement
+#: view:procurement.order:0
+#: field:procurement.order,note:0
+msgid "Note"
+msgstr ""
+
+#. module: procurement
+#: selection:procurement.order,state:0
+msgid "Draft"
+msgstr ""
+
+#. module: procurement
+#: view:procurement.order.compute:0
+msgid "This wizard will schedule procurements."
+msgstr ""
+
+#. module: procurement
+#: view:procurement.order:0
+msgid "Status"
+msgstr ""
+
+#. module: procurement
+#: selection:procurement.order,priority:0
+msgid "Normal"
+msgstr ""
+
+#. module: procurement
+#: constraint:stock.move:0
+msgid "You try to assign a lot which is not from the same product"
+msgstr ""
+
+#. module: procurement
+#: field:stock.warehouse.orderpoint,active:0
+msgid "Active"
+msgstr ""
+
+#. module: procurement
+#: model:process.node,name:procurement.process_node_procureproducts0
+msgid "Procure Products"
+msgstr ""
+
+#. module: procurement
+#: field:procurement.order,date_planned:0
+msgid "Scheduled date"
+msgstr ""
+
+#. module: procurement
+#: selection:procurement.order,state:0
+msgid "Exception"
+msgstr ""
+
+#. module: procurement
+#: code:addons/procurement/schedulers.py:179
+#, python-format
+msgid "Automatic OP: %s"
+msgstr ""
+
+#. module: procurement
+#: model:ir.model,name:procurement.model_procurement_orderpoint_compute
+msgid "Automatic Order Point"
+msgstr ""
+
+#. module: procurement
+#: model:ir.model,name:procurement.model_stock_warehouse_orderpoint
+msgid "Minimum Inventory Rule"
+msgstr ""
+
+#. module: procurement
+#: model:ir.model,name:procurement.model_res_company
+msgid "Companies"
+msgstr ""
+
+#. module: procurement
+#: view:procurement.order:0
+msgid "Extra Information"
+msgstr ""
+
+#. module: procurement
+#: help:procurement.order,name:0
+msgid "Procurement name."
+msgstr ""
+
+#. module: procurement
+#: constraint:stock.move:0
+msgid "You must assign a production lot for this product"
+msgstr ""
+
+#. module: procurement
+#: view:procurement.order:0
+msgid "Procurement Reason"
+msgstr ""
+
+#. module: procurement
+#: sql_constraint:stock.warehouse.orderpoint:0
+msgid "Qty Multiple must be greater than zero."
+msgstr ""
+
+#. module: procurement
+#: selection:stock.warehouse.orderpoint,logic:0
+msgid "Order to Max"
+msgstr ""
+
+#. module: procurement
+#: field:procurement.order,date_close:0
+msgid "Date Closed"
+msgstr ""
+
+#. module: procurement
+#: code:addons/procurement/procurement.py:372
+#, python-format
+msgid "Procurement '%s' is in exception: not enough stock."
+msgstr ""
+
+#. module: procurement
+#: code:addons/procurement/procurement.py:138
+#, python-format
+msgid "Cannot delete Procurement Order(s) which are in %s State!"
+msgstr ""
+
+#. module: procurement
+#: code:addons/procurement/procurement.py:324
+#, python-format
+msgid "Data Insufficient !"
+msgstr ""
+
+#. module: procurement
+#: model:ir.model,name:procurement.model_mrp_property_group
+#: field:mrp.property,group_id:0
+#: field:mrp.property.group,name:0
+msgid "Property Group"
+msgstr ""
+
+#. module: procurement
+#: view:stock.warehouse.orderpoint:0
+msgid "Misc"
+msgstr ""
+
+#. module: procurement
+#: view:stock.warehouse.orderpoint:0
+msgid "Locations"
+msgstr ""
+
+#. module: procurement
+#: selection:procurement.order,procure_method:0
+msgid "from stock"
+msgstr ""
+
+#. module: procurement
+#: view:stock.warehouse.orderpoint:0
+msgid "General Information"
+msgstr ""
+
+#. module: procurement
+#: view:procurement.order:0
+msgid "Run Procurement"
+msgstr ""
+
+#. module: procurement
+#: selection:procurement.order,state:0
+msgid "Done"
+msgstr ""
+
+#. module: procurement
+#: help:stock.warehouse.orderpoint,qty_multiple:0
+msgid "The procurement quantity will by rounded up to this multiple."
+msgstr ""
+
+#. module: procurement
+#: view:make.procurement:0
+#: view:procurement.order:0
+#: selection:procurement.order,state:0
+#: view:procurement.order.compute:0
+#: view:procurement.order.compute.all:0
+#: view:procurement.orderpoint.compute:0
+msgid "Cancel"
+msgstr ""
+
+#. module: procurement
+#: field:stock.warehouse.orderpoint,logic:0
+msgid "Reordering Mode"
+msgstr ""
+
+#. module: procurement
+#: field:procurement.order,origin:0
+msgid "Source Document"
+msgstr ""
+
+#. module: procurement
+#: selection:procurement.order,priority:0
+msgid "Not urgent"
+msgstr ""
+
+#. module: procurement
+#: model:ir.model,name:procurement.model_procurement_order_compute_all
+msgid "Compute all schedulers"
+msgstr ""
+
+#. module: procurement
+#: view:procurement.order:0
+msgid "Current"
+msgstr ""
+
+#. module: procurement
+#: view:board.board:0
+msgid "Procurements in Exception"
+msgstr ""
+
+#. module: procurement
+#: view:procurement.order:0
+msgid "Details"
+msgstr ""
+
+#. module: procurement
+#: model:ir.actions.act_window,name:procurement.procurement_action5
+#: model:ir.actions.act_window,name:procurement.procurement_action_board
+#: model:ir.actions.act_window,name:procurement.procurement_exceptions
+#: model:ir.ui.menu,name:procurement.menu_stock_procurement_action
+msgid "Procurement Exceptions"
+msgstr ""
+
+#. module: procurement
+#: model:ir.actions.act_window,name:procurement.act_procurement_2_stock_warehouse_orderpoint
+#: model:ir.actions.act_window,name:procurement.act_product_product_2_stock_warehouse_orderpoint
+#: model:ir.actions.act_window,name:procurement.act_stock_warehouse_2_stock_warehouse_orderpoint
+#: model:ir.actions.act_window,name:procurement.action_orderpoint_form
+#: model:ir.ui.menu,name:procurement.menu_stock_order_points
+#: view:stock.warehouse.orderpoint:0
+msgid "Minimum Stock Rules"
+msgstr ""
+
+#. module: procurement
+#: field:procurement.order,close_move:0
+msgid "Close Move at end"
+msgstr ""
+
+#. module: procurement
+#: view:procurement.order:0
+msgid "Scheduled Date"
+msgstr ""
+
+#. module: procurement
+#: field:make.procurement,product_id:0
+#: view:procurement.order:0
+#: field:procurement.order,product_id:0
+#: field:stock.warehouse.orderpoint,product_id:0
+msgid "Product"
+msgstr ""
+
+#. module: procurement
+#: view:procurement.order:0
+msgid "Temporary"
+msgstr ""
+
+#. module: procurement
+#: field:mrp.property,description:0
+#: field:mrp.property.group,description:0
+msgid "Description"
+msgstr ""
+
+#. module: procurement
+#: selection:mrp.property,composition:0
+msgid "min"
+msgstr ""
+
+#. module: procurement
+#: view:stock.warehouse.orderpoint:0
+msgid "Quantity Rules"
+msgstr ""
+
+#. module: procurement
+#: selection:procurement.order,state:0
+msgid "Running"
+msgstr ""
+
+#. module: procurement
+#: field:stock.warehouse.orderpoint,product_uom:0
+msgid "Product UOM"
+msgstr ""
+
+#. module: procurement
+#: model:process.node,name:procurement.process_node_serviceonorder0
+msgid "Make to Order"
+msgstr ""
+
+#. module: procurement
+#: view:procurement.order:0
+msgid "UOM"
+msgstr ""
+
+#. module: procurement
+#: selection:procurement.order,state:0
+msgid "Waiting"
+msgstr ""
+
+#. module: procurement
+#: model:ir.actions.act_window,help:procurement.action_orderpoint_form
+msgid ""
+"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."
+msgstr ""
+
+#. module: procurement
+#: field:procurement.order,move_id:0
+msgid "Reservation"
+msgstr ""
+
+#. module: procurement
+#: model:process.node,note:procurement.process_node_procureproducts0
+msgid "The way to procurement depends on the product type."
+msgstr ""
+
+#. module: procurement
+#: view:make.procurement:0
+msgid ""
+"This wizard will plan the procurement for this product. This procurement may "
+"generate task, production orders or purchase orders."
+msgstr ""
+
+#. module: procurement
+#: view:res.company:0
+msgid "MRP & Logistics Scheduler"
+msgstr ""
+
+#. module: procurement
+#: field:mrp.property,name:0
+#: field:stock.warehouse.orderpoint,name:0
+msgid "Name"
+msgstr ""
+
+#. module: procurement
+#: selection:mrp.property,composition:0
+msgid "max"
+msgstr ""
+
+#. module: procurement
+#: field:procurement.order,product_uos:0
+msgid "Product UoS"
+msgstr ""
+
+#. module: procurement
+#: code:addons/procurement/procurement.py:353
+#, python-format
+msgid "from stock: products assigned."
+msgstr ""
+
+#. module: procurement
+#: model:ir.actions.act_window,name:procurement.action_compute_schedulers
+#: model:ir.ui.menu,name:procurement.menu_stock_proc_schedulers
+#: view:procurement.order.compute.all:0
+msgid "Compute Schedulers"
+msgstr ""
+
+#. module: procurement
+#: model:ir.actions.act_window,help:procurement.procurement_exceptions
+msgid ""
+"Procurement Orders represent the need for a certain quantity of products, at "
+"a given time, in a given location. Sales Orders are one typical source of "
+"Procurement Orders (but these are distinct documents). Depending on the "
+"procurement parameters and the product configuration, the procurement engine "
+"will attempt to satisfy the need by reserving products from stock, ordering "
+"products from a supplier, or passing a manufacturing order, etc. A "
+"Procurement Exception occurs when the system cannot find a way to fulfill a "
+"procurement. Some exceptions will resolve themselves automatically, but "
+"others require manual intervention (those are identified by a specific error "
+"message)."
+msgstr ""
+
+#. module: procurement
+#: field:procurement.order,product_uom:0
+msgid "Product UoM"
+msgstr ""
+
+#. module: procurement
+#: view:procurement.order:0
+msgid "Search Procurement"
+msgstr ""
+
+#. module: procurement
+#: help:res.company,schedule_range:0
+msgid ""
+"This is the time frame analysed by the scheduler when computing "
+"procurements. All procurements that are not between today and today+range "
+"are skipped for future computation."
+msgstr ""
+
+#. module: procurement
+#: selection:procurement.order,priority:0
+msgid "Very Urgent"
+msgstr ""
+
+#. module: procurement
+#: field:procurement.orderpoint.compute,automatic:0
+msgid "Automatic Orderpoint"
+msgstr ""
+
+#. module: procurement
+#: view:procurement.order:0
+msgid "Procurement Details"
+msgstr ""
+
+#. module: procurement
+#: code:addons/procurement/schedulers.py:180
+#, python-format
+msgid "SCHEDULER"
+msgstr ""
diff --git a/addons/procurement/i18n/pt.po b/addons/procurement/i18n/pt.po
index 7fbcfb0ec74..46c8e44879b 100644
--- a/addons/procurement/i18n/pt.po
+++ b/addons/procurement/i18n/pt.po
@@ -8,29 +8,29 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
-"PO-Revision-Date: 2010-12-12 02:18+0000\n"
-"Last-Translator: OpenERP Administrators \n"
+"PO-Revision-Date: 2011-12-10 13:18+0000\n"
+"Last-Translator: Paulino Ascenção \n"
"Language-Team: Portuguese \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-05 05:48+0000\n"
-"X-Generator: Launchpad (build 14231)\n"
+"X-Launchpad-Export-Date: 2011-12-11 05:36+0000\n"
+"X-Generator: Launchpad (build 14450)\n"
#. module: procurement
#: view:make.procurement:0
msgid "Ask New Products"
-msgstr ""
+msgstr "Pedir novos produtos"
#. module: procurement
#: model:ir.ui.menu,name:procurement.menu_stock_sched
msgid "Schedulers"
-msgstr ""
+msgstr "Planeadores"
#. module: procurement
#: model:ir.model,name:procurement.model_make_procurement
msgid "Make Procurements"
-msgstr ""
+msgstr "Elaborar aprovisionamentos"
#. module: procurement
#: help:procurement.order.compute.all,automatic:0
@@ -39,6 +39,9 @@ msgid ""
"under 0. You should probably not use this option, we suggest using a MTO "
"configuration on products."
msgstr ""
+"Aciona um aprovisionamento automático para todos os artigos que tenham um "
+"stock virtual abaixo de zero. Não deverá utilizar esta opção, sugerimos a "
+"utilização de uma configuração 'produzir por encomenda' nos artigos."
#. module: procurement
#: view:stock.warehouse.orderpoint:0
@@ -49,6 +52,7 @@ msgstr "Agrupar por..."
#: help:stock.warehouse.orderpoint,procurement_draft_ids:0
msgid "Draft procurement of the product and location of that orderpoint"
msgstr ""
+"Aprovisionamento rascunho do artigo e localização do ponto de encomenda."
#. module: procurement
#: code:addons/procurement/procurement.py:288
@@ -64,7 +68,7 @@ msgstr "Unidade de medida"
#. module: procurement
#: field:procurement.order,procure_method:0
msgid "Procurement Method"
-msgstr ""
+msgstr "Método de aprovisionamento"
#. module: procurement
#: code:addons/procurement/procurement.py:304
@@ -75,7 +79,7 @@ msgstr "Não há um endereço definido para este fornecedor!"
#. module: procurement
#: model:ir.actions.act_window,name:procurement.action_procurement_compute
msgid "Compute Stock Minimum Rules Only"
-msgstr ""
+msgstr "Calcular apenas regras de stock mínimo."
#. module: procurement
#: field:procurement.order,company_id:0
@@ -86,23 +90,23 @@ msgstr "Empresa"
#. module: procurement
#: field:procurement.order,product_uos_qty:0
msgid "UoS Quantity"
-msgstr ""
+msgstr "Quantidade UdV"
#. module: procurement
#: view:procurement.order:0
#: field:procurement.order,name:0
msgid "Reason"
-msgstr ""
+msgstr "Motivo"
#. module: procurement
#: view:procurement.order.compute:0
msgid "Compute Procurements"
-msgstr ""
+msgstr "Processar aprovisionamentos"
#. module: procurement
#: field:procurement.order,message:0
msgid "Latest error"
-msgstr ""
+msgstr "Último erro"
#. module: procurement
#: help:mrp.property,composition:0
@@ -112,22 +116,22 @@ msgstr "Não utilizado em cálculos, apenas para informação."
#. module: procurement
#: field:stock.warehouse.orderpoint,procurement_id:0
msgid "Latest procurement"
-msgstr ""
+msgstr "Último aprovisionamento"
#. module: procurement
#: view:procurement.order:0
msgid "Notes"
-msgstr ""
+msgstr "Notas"
#. module: procurement
#: selection:procurement.order,procure_method:0
msgid "on order"
-msgstr ""
+msgstr "a pedido"
#. module: procurement
#: help:procurement.order,message:0
msgid "Exception occurred while computing procurement orders."
-msgstr ""
+msgstr "Excepção ocorreu ao processar ordens de aprovisionamento"
#. module: procurement
#: help:procurement.order,state:0
@@ -141,11 +145,19 @@ msgid ""
" It is in 'Waiting'. state when the procurement is waiting for another one "
"to finish."
msgstr ""
+"Quando um aprovisionamento (ordem de) é criada, o estado é 'Rascunho'.\n"
+" Se o aprovisionamento é confirmado, o estado passa a 'Confirmado'. "
+" \n"
+"Depois de despoletado, o estado passa a 'Em curso'.\n"
+" Se ocorre alguma escepção, o estado fica como 'Exceção'.\n"
+" Depois de resolvida a exceção, o estado passa para 'Pronto'.\n"
+" O estado 'Em espera' significa que aguarda que outro aprovisionamento "
+"termine."
#. module: procurement
#: view:stock.warehouse.orderpoint:0
msgid "Minimum Stock Rules Search"
-msgstr ""
+msgstr "Pesquisa de regras de stock mínimo"
#. module: procurement
#: help:stock.warehouse.orderpoint,product_min_qty:0
@@ -153,16 +165,19 @@ msgid ""
"When the virtual stock goes belong the Min Quantity, OpenERP generates a "
"procurement to bring the virtual stock to the Max Quantity."
msgstr ""
+"Quando o stock virtual desce abaixo da quantidade mínima, OpenERP gera uma "
+"ordem de aprovisionamento para elevar o stock virtual até à quantidade "
+"máxima."
#. module: procurement
#: view:procurement.order.compute.all:0
msgid "Scheduler Parameters"
-msgstr ""
+msgstr "Parâmetros do planeador"
#. module: procurement
#: model:ir.model,name:procurement.model_stock_move
msgid "Stock Move"
-msgstr ""
+msgstr "Movemento de stock"
#. module: procurement
#: view:procurement.order:0
@@ -172,22 +187,22 @@ msgstr "Planeamento"
#. module: procurement
#: selection:procurement.order,state:0
msgid "Ready"
-msgstr ""
+msgstr "Pronto"
#. module: procurement
#: field:procurement.order.compute.all,automatic:0
msgid "Automatic orderpoint"
-msgstr ""
+msgstr "Ponto de ordem automática"
#. module: procurement
#: field:mrp.property,composition:0
msgid "Properties composition"
-msgstr ""
+msgstr "Composição da spropriedades"
#. module: procurement
#: selection:procurement.order,state:0
msgid "Confirmed"
-msgstr ""
+msgstr "Confirmado"
#. module: procurement
#: view:procurement.order:0
@@ -211,11 +226,13 @@ msgid ""
"Reference of the document that created this Procurement.\n"
"This is automatically completed by OpenERP."
msgstr ""
+"Referência do documento que criou este aprovisionamento.\n"
+"É preenchido automaticamente pelo OpenERP."
#. module: procurement
#: view:stock.warehouse.orderpoint:0
msgid "Procurement Orders to Process"
-msgstr ""
+msgstr "Ordens de aprovisionamento por processar"
#. module: procurement
#: constraint:res.company:0
@@ -238,12 +255,12 @@ msgstr "Estado"
#: view:stock.warehouse.orderpoint:0
#: field:stock.warehouse.orderpoint,location_id:0
msgid "Location"
-msgstr ""
+msgstr "Localização"
#. module: procurement
#: model:ir.model,name:procurement.model_stock_picking
msgid "Picking List"
-msgstr ""
+msgstr "Lista de entrega/receção"
#. module: procurement
#: field:make.procurement,warehouse_id:0
@@ -260,23 +277,23 @@ msgstr "Melhor preço (ainda não activado!)"
#. module: procurement
#: view:procurement.order:0
msgid "Product & Location"
-msgstr ""
+msgstr "Produto e localização"
#. module: procurement
#: model:ir.model,name:procurement.model_procurement_order_compute
msgid "Compute Procurement"
-msgstr ""
+msgstr "Calcular aprovisionamento"
#. module: procurement
#: model:ir.module.module,shortdesc:procurement.module_meta_information
#: field:stock.move,procurements:0
msgid "Procurements"
-msgstr ""
+msgstr "Aprovisionamentos"
#. module: procurement
#: field:res.company,schedule_range:0
msgid "Scheduler Range Days"
-msgstr ""
+msgstr "Dias de alcance do planeador"
#. module: procurement
#: model:ir.actions.act_window,help:procurement.procurement_action
@@ -288,6 +305,12 @@ msgid ""
"operations to fullfil the need: purchase order proposition, manufacturing "
"order, etc."
msgstr ""
+"Uma ordem de aprovisionamento é usada para registar a necessidade de um "
+"artigo num local específico. As ordens de aprovisionamento em regra criadas "
+"automaticamente a partir das ordens de venda, de uma regra logistica 'Pull' "
+"(puxa) ou de uma regra de stock mínimo. Quando a ordem de aprovisionamento é "
+"confirmada, cria automaticamente as operações necessárias para satisfazer a "
+"necessidade: ordens de compra e/ou ordens de produção, etc."
#. module: procurement
#: field:make.procurement,date_planned:0
@@ -309,7 +332,7 @@ msgstr "Quantidade"
#: code:addons/procurement/procurement.py:377
#, python-format
msgid "Not enough stock and no minimum orderpoint rule defined."
-msgstr ""
+msgstr "Sem stock suficiente, nem regra de stock minimo definida."
#. module: procurement
#: code:addons/procurement/procurement.py:137
@@ -330,7 +353,7 @@ msgstr "Configuração"
#. module: procurement
#: field:stock.warehouse.orderpoint,qty_multiple:0
msgid "Qty Multiple"
-msgstr ""
+msgstr "Multiplo de quantidade"
#. module: procurement
#: help:procurement.order,procure_method:0
@@ -338,11 +361,13 @@ msgid ""
"If you encode manually a Procurement, you probably want to use a make to "
"order method."
msgstr ""
+"Se regista um aprovisionamento manualmente, provavelmente quer usar o método "
+"produzir para ordens."
#. module: procurement
#: model:ir.ui.menu,name:procurement.menu_stock_procurement
msgid "Automatic Procurements"
-msgstr ""
+msgstr "Aprovisionamentos automáticos"
#. module: procurement
#: field:stock.warehouse.orderpoint,product_max_qty:0
@@ -354,17 +379,17 @@ msgstr "Quantidade máxima"
#: model:process.process,name:procurement.process_process_procurementprocess0
#: view:procurement.order:0
msgid "Procurement"
-msgstr ""
+msgstr "Aprovisionamento"
#. module: procurement
#: model:ir.actions.act_window,name:procurement.procurement_action
msgid "Procurement Orders"
-msgstr ""
+msgstr "Ordens de aprovisionamento"
#. module: procurement
#: view:procurement.order:0
msgid "To Fix"
-msgstr ""
+msgstr "Por corrigir"
#. module: procurement
#: view:procurement.order:0
@@ -374,7 +399,7 @@ msgstr "Exceções"
#. module: procurement
#: model:process.node,note:procurement.process_node_serviceonorder0
msgid "Assignment from Production or Purchase Order."
-msgstr ""
+msgstr "Atribuição desde ordem de produção ou de compra"
#. module: procurement
#: model:ir.model,name:procurement.model_mrp_property
@@ -385,17 +410,17 @@ msgstr "Propriedade"
#: model:ir.actions.act_window,name:procurement.act_make_procurement
#: view:make.procurement:0
msgid "Procurement Request"
-msgstr ""
+msgstr "Requisição de aprovisionamento"
#. module: procurement
#: view:procurement.orderpoint.compute:0
msgid "Compute Stock"
-msgstr ""
+msgstr "Calcular stock"
#. module: procurement
#: view:procurement.order:0
msgid "Late"
-msgstr ""
+msgstr "Tardio"
#. module: procurement
#: model:process.process,name:procurement.process_process_serviceproductprocess0
@@ -409,17 +434,22 @@ msgid ""
" This is the module for computing Procurements.\n"
" "
msgstr ""
+"\n"
+" Este é o modulo para processamento de aprovisionamentos\n"
+" "
#. module: procurement
#: field:stock.warehouse.orderpoint,procurement_draft_ids:0
msgid "Related Procurement Orders"
-msgstr ""
+msgstr "Ordens de aprovisionamento relacionadas"
#. module: procurement
#: view:procurement.orderpoint.compute:0
msgid ""
"Wizard checks all the stock minimum rules and generate procurement order."
msgstr ""
+"O assistente verifica todas as regras de stock mínimo e gera as ordens de "
+"aprovisionamento"
#. module: procurement
#: field:stock.warehouse.orderpoint,product_min_qty:0
@@ -443,6 +473,8 @@ msgid ""
"Please check the Quantity in Procurement Order(s), it should not be less "
"than 1!"
msgstr ""
+"Verifique a quantidade nas ordens de aprovisionamento, deve ser maior que "
+"zero!"
#. module: procurement
#: help:stock.warehouse.orderpoint,active:0
@@ -450,6 +482,8 @@ msgid ""
"If the active field is set to False, it will allow you to hide the "
"orderpoint without removing it."
msgstr ""
+"Se o campo 'ativo' for falso, perite ocultar o ponto de encomenda, sem o "
+"remover."
#. module: procurement
#: help:stock.warehouse.orderpoint,product_max_qty:0
@@ -462,11 +496,13 @@ msgstr ""
#: help:procurement.orderpoint.compute,automatic:0
msgid "If the stock of a product is under 0, it will act like an orderpoint"
msgstr ""
+"Se o stock de um artigo é inferior a 0, vai comportar-se como um ponto de "
+"encomenda."
#. module: procurement
#: view:procurement.order:0
msgid "Procurement Lines"
-msgstr ""
+msgstr "Linhas de aprovisionamento"
#. module: procurement
#: view:procurement.order.compute.all:0
@@ -483,7 +519,7 @@ msgstr ""
#: view:procurement.order:0
#: field:procurement.order,note:0
msgid "Note"
-msgstr ""
+msgstr "Nota"
#. module: procurement
#: selection:procurement.order,state:0
@@ -493,7 +529,7 @@ msgstr "Rascunho"
#. module: procurement
#: view:procurement.order.compute:0
msgid "This wizard will schedule procurements."
-msgstr ""
+msgstr "O assistente vai programar os aprovisionamentos."
#. module: procurement
#: view:procurement.order:0
@@ -508,17 +544,17 @@ msgstr "Normal"
#. module: procurement
#: constraint:stock.move:0
msgid "You try to assign a lot which is not from the same product"
-msgstr ""
+msgstr "Está a tentar associar a um lote, que não é do mesmo artigo."
#. module: procurement
#: field:stock.warehouse.orderpoint,active:0
msgid "Active"
-msgstr ""
+msgstr "Ativo"
#. module: procurement
#: model:process.node,name:procurement.process_node_procureproducts0
msgid "Procure Products"
-msgstr ""
+msgstr "Artigos a aprovisionar"
#. module: procurement
#: field:procurement.order,date_planned:0
@@ -539,12 +575,12 @@ msgstr ""
#. module: procurement
#: model:ir.model,name:procurement.model_procurement_orderpoint_compute
msgid "Automatic Order Point"
-msgstr ""
+msgstr "Ponto de encomenda automático"
#. module: procurement
#: model:ir.model,name:procurement.model_stock_warehouse_orderpoint
msgid "Minimum Inventory Rule"
-msgstr ""
+msgstr "Regra de inventário mínimo"
#. module: procurement
#: model:ir.model,name:procurement.model_res_company
@@ -559,7 +595,7 @@ msgstr "Informação extra"
#. module: procurement
#: help:procurement.order,name:0
msgid "Procurement name."
-msgstr ""
+msgstr "Nome do aprovisionamento"
#. module: procurement
#: constraint:stock.move:0
@@ -569,12 +605,12 @@ msgstr "Tem de associar um lote de produção a este produto"
#. module: procurement
#: view:procurement.order:0
msgid "Procurement Reason"
-msgstr ""
+msgstr "Motivo do aprovisionamento"
#. module: procurement
#: sql_constraint:stock.warehouse.orderpoint:0
msgid "Qty Multiple must be greater than zero."
-msgstr ""
+msgstr "O multiplo da quantidade deve ser maior que zero."
#. module: procurement
#: selection:stock.warehouse.orderpoint,logic:0
@@ -590,13 +626,13 @@ msgstr ""
#: code:addons/procurement/procurement.py:372
#, python-format
msgid "Procurement '%s' is in exception: not enough stock."
-msgstr ""
+msgstr "O aprovisionamento '%s' está em exceção: stock insuficiente."
#. module: procurement
#: code:addons/procurement/procurement.py:138
#, python-format
msgid "Cannot delete Procurement Order(s) which are in %s State!"
-msgstr ""
+msgstr "Não pode eliminar uma ordem de aprovisionamento no estado '%s'!"
#. module: procurement
#: code:addons/procurement/procurement.py:324
@@ -609,7 +645,7 @@ msgstr "Insuficiência de dados!"
#: field:mrp.property,group_id:0
#: field:mrp.property.group,name:0
msgid "Property Group"
-msgstr ""
+msgstr "Grupo da propriedade"
#. module: procurement
#: view:stock.warehouse.orderpoint:0
@@ -619,32 +655,33 @@ msgstr "Diversos"
#. module: procurement
#: view:stock.warehouse.orderpoint:0
msgid "Locations"
-msgstr ""
+msgstr "Localizações"
#. module: procurement
#: selection:procurement.order,procure_method:0
msgid "from stock"
-msgstr ""
+msgstr "de stock"
#. module: procurement
#: view:stock.warehouse.orderpoint:0
msgid "General Information"
-msgstr ""
+msgstr "Informação genérica"
#. module: procurement
#: view:procurement.order:0
msgid "Run Procurement"
-msgstr ""
+msgstr "Executar o aprovisionamento"
#. module: procurement
#: selection:procurement.order,state:0
msgid "Done"
-msgstr ""
+msgstr "Concluído"
#. module: procurement
#: help:stock.warehouse.orderpoint,qty_multiple:0
msgid "The procurement quantity will by rounded up to this multiple."
msgstr ""
+"A quantidade do aprovisionamento será arredondada para este múltiplo."
#. module: procurement
#: view:make.procurement:0
@@ -659,7 +696,7 @@ msgstr "Cancelar"
#. module: procurement
#: field:stock.warehouse.orderpoint,logic:0
msgid "Reordering Mode"
-msgstr ""
+msgstr "Modo de reordenação"
#. module: procurement
#: field:procurement.order,origin:0
@@ -674,7 +711,7 @@ msgstr "Não urgente"
#. module: procurement
#: model:ir.model,name:procurement.model_procurement_order_compute_all
msgid "Compute all schedulers"
-msgstr ""
+msgstr "Executar todos os planeadores"
#. module: procurement
#: view:procurement.order:0
@@ -684,7 +721,7 @@ msgstr "Atual"
#. module: procurement
#: view:board.board:0
msgid "Procurements in Exception"
-msgstr ""
+msgstr "Aprovisionamentos em exceção"
#. module: procurement
#: view:procurement.order:0
@@ -697,7 +734,7 @@ msgstr "Detalhes"
#: model:ir.actions.act_window,name:procurement.procurement_exceptions
#: model:ir.ui.menu,name:procurement.menu_stock_procurement_action
msgid "Procurement Exceptions"
-msgstr ""
+msgstr "Exceções de aprovisionamento"
#. module: procurement
#: model:ir.actions.act_window,name:procurement.act_procurement_2_stock_warehouse_orderpoint
@@ -707,12 +744,12 @@ msgstr ""
#: model:ir.ui.menu,name:procurement.menu_stock_order_points
#: view:stock.warehouse.orderpoint:0
msgid "Minimum Stock Rules"
-msgstr ""
+msgstr "Regras de stock mínimo"
#. module: procurement
#: field:procurement.order,close_move:0
msgid "Close Move at end"
-msgstr ""
+msgstr "Fechar movimento no fim"
#. module: procurement
#: view:procurement.order:0
@@ -746,7 +783,7 @@ msgstr "mínimo"
#. module: procurement
#: view:stock.warehouse.orderpoint:0
msgid "Quantity Rules"
-msgstr ""
+msgstr "Regras de quantidade"
#. module: procurement
#: selection:procurement.order,state:0
@@ -756,17 +793,17 @@ msgstr "Em execução"
#. module: procurement
#: field:stock.warehouse.orderpoint,product_uom:0
msgid "Product UOM"
-msgstr ""
+msgstr "UdM do artigo"
#. module: procurement
#: model:process.node,name:procurement.process_node_serviceonorder0
msgid "Make to Order"
-msgstr ""
+msgstr "Produzir por encomenda"
#. module: procurement
#: view:procurement.order:0
msgid "UOM"
-msgstr ""
+msgstr "UdM"
#. module: procurement
#: selection:procurement.order,state:0
@@ -800,11 +837,13 @@ msgid ""
"This wizard will plan the procurement for this product. This procurement may "
"generate task, production orders or purchase orders."
msgstr ""
+"Este assistente vai planear o aprovisionamento para este artigo. Este "
+"aprovisionamento pode gerar uma tarefa, uma ordem de produção ou de compra."
#. module: procurement
#: view:res.company:0
msgid "MRP & Logistics Scheduler"
-msgstr ""
+msgstr "Planeador de produção e logistica"
#. module: procurement
#: field:mrp.property,name:0
@@ -820,20 +859,20 @@ msgstr "máximo"
#. module: procurement
#: field:procurement.order,product_uos:0
msgid "Product UoS"
-msgstr ""
+msgstr "UdV do artigo"
#. module: procurement
#: code:addons/procurement/procurement.py:353
#, python-format
msgid "from stock: products assigned."
-msgstr ""
+msgstr "de stock: produtos atribuidos."
#. module: procurement
#: model:ir.actions.act_window,name:procurement.action_compute_schedulers
#: model:ir.ui.menu,name:procurement.menu_stock_proc_schedulers
#: view:procurement.order.compute.all:0
msgid "Compute Schedulers"
-msgstr ""
+msgstr "Executar planeadores"
#. module: procurement
#: model:ir.actions.act_window,help:procurement.procurement_exceptions
@@ -853,12 +892,12 @@ msgstr ""
#. module: procurement
#: field:procurement.order,product_uom:0
msgid "Product UoM"
-msgstr ""
+msgstr "UdM do artigo"
#. module: procurement
#: view:procurement.order:0
msgid "Search Procurement"
-msgstr ""
+msgstr "Pesquisar aprovisionamento"
#. module: procurement
#: help:res.company,schedule_range:0
@@ -876,15 +915,15 @@ msgstr "Muito urgente"
#. module: procurement
#: field:procurement.orderpoint.compute,automatic:0
msgid "Automatic Orderpoint"
-msgstr ""
+msgstr "Ponto de encomenda automático"
#. module: procurement
#: view:procurement.order:0
msgid "Procurement Details"
-msgstr ""
+msgstr "Detalhes do aprovisionamento"
#. module: procurement
#: code:addons/procurement/schedulers.py:180
#, python-format
msgid "SCHEDULER"
-msgstr ""
+msgstr "PLANEADOR"
diff --git a/addons/procurement/procurement.py b/addons/procurement/procurement.py
index 8734758dd03..5ee3662b5a6 100644
--- a/addons/procurement/procurement.py
+++ b/addons/procurement/procurement.py
@@ -63,7 +63,6 @@ mrp_property()
class StockMove(osv.osv):
_inherit = 'stock.move'
-
_columns= {
'procurements': fields.one2many('procurement.order', 'move_id', 'Procurements'),
}
@@ -154,11 +153,11 @@ class procurement_order(osv.osv):
return {'value': v}
return {}
- def check_product(self, cr, uid, ids):
+ def check_product(self, cr, uid, ids, context=None):
""" Checks product type.
@return: True or False
"""
- return all(procurement.product_id.type in ('product', 'consu') for procurement in self.browse(cr, uid, ids))
+ return all(proc.product_id.type in ('product', 'consu') for proc in self.browse(cr, uid, ids, context=context))
def check_move_cancel(self, cr, uid, ids, context=None):
""" Checks if move is cancelled or not.
@@ -174,9 +173,9 @@ class procurement_order(osv.osv):
""" Checks if move is done or not.
@return: True or False.
"""
- if not context:
- context = {}
- return all(not procurement.move_id or procurement.move_id.state == 'done' for procurement in self.browse(cr, uid, ids, context=context))
+ return all(proc.product_id.type == 'service' or (proc.move_id and proc.move_id.state == 'done') \
+ for proc in self.browse(cr, uid, ids, context=context))
+
#
# This method may be overrided by objects that override procurement.order
# for computing their own purpose
@@ -258,26 +257,25 @@ class procurement_order(osv.osv):
def check_produce(self, cr, uid, ids, context=None):
""" Checks product type.
- @return: True or Product Id.
+ @return: True or False
"""
- res = True
user = self.pool.get('res.users').browse(cr, uid, uid, context=context)
for procurement in self.browse(cr, uid, ids, context=context):
- if procurement.product_id.product_tmpl_id.supply_method <> 'produce':
- partner_list = sorted([(partner_id.sequence, partner_id) for partner_id in procurement.product_id.seller_ids if partner_id])
- if partner_list:
- partner = partner_list and partner_list[0] and partner_list[0][1] and partner_list[0][1].name or False
- if user.company_id and user.company_id.partner_id:
- if partner.id == user.company_id.partner_id.id:
- return True
+ product = procurement.product_id
+ #TOFIX: if product type is 'service' but supply_method is 'buy'.
+ if product.supply_method <> 'produce':
+ supplier = product.seller_id
+ if supplier and user.company_id and user.company_id.partner_id:
+ if supplier.id == user.company_id.partner_id.id:
+ continue
return False
- if procurement.product_id.product_tmpl_id.type=='service':
- res = res and self.check_produce_service(cr, uid, procurement, context)
+ if product.type=='service':
+ res = self.check_produce_service(cr, uid, procurement, context)
else:
- res = res and self.check_produce_product(cr, uid, procurement, context)
+ res = self.check_produce_product(cr, uid, procurement, context)
if not res:
return False
- return res
+ return True
def check_buy(self, cr, uid, ids):
""" Checks product type.
@@ -483,7 +481,7 @@ class StockPicking(osv.osv):
if move.state == 'done' and move.procurements:
for procurement in move.procurements:
wf_service.trg_validate(user, 'procurement.order',
- procurement.id, 'button_check', cursor)
+ procurement.id, 'button_check', cursor)
return res
StockPicking()
diff --git a/addons/procurement/procurement_workflow.xml b/addons/procurement/procurement_workflow.xml
index 23b0a08af78..53b6608fa6f 100644
--- a/addons/procurement/procurement_workflow.xml
+++ b/addons/procurement/procurement_workflow.xml
@@ -50,12 +50,14 @@
produce_check
+
produce_servicefunctionaction_produce_assign_service()
+
ready
@@ -163,18 +165,28 @@
check_produce()
-
-
-
- not check_product()
-
+
-
+ True
+
+
+
+
+
+
+
+ not check_product()
+
@@ -184,6 +196,7 @@
+
diff --git a/addons/procurement/security/ir.model.access.csv b/addons/procurement/security/ir.model.access.csv
index a09115daecf..0d5f22895e4 100644
--- a/addons/procurement/security/ir.model.access.csv
+++ b/addons/procurement/security/ir.model.access.csv
@@ -1,10 +1,9 @@
-"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
-"access_procurement","procurement.order","model_procurement_order","base.group_user",1,0,0,0
-"access_procurement_stock_manager","procurement.order stock.manager","model_procurement_order","stock.group_stock_manager",1,1,1,1
-"access_procurement_stock_user","procurement.order stock.user","model_procurement_order","stock.group_stock_user",1,1,1,1
-"access_stock_warehouse_orderpoint","stock.warehouse.orderpoint","model_stock_warehouse_orderpoint","stock.group_stock_user",1,0,0,0
-"access_stock_warehouse_orderpoint_system","stock.warehouse.orderpoint system","model_stock_warehouse_orderpoint","stock.group_stock_manager",1,1,1,1
-"access_mrp_property_group","mrp.property.group","model_mrp_property_group","stock.group_stock_manager",1,1,1,1
-"access_mrp_property","mrp.property","model_mrp_property","stock.group_stock_manager",1,1,1,1
-"access_mrp_property_group","mrp.property.group","model_mrp_property_group","base.group_user",1,0,0,0
-"access_mrp_property","mrp.property","model_mrp_property","base.group_user",1,0,0,0
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+access_procurement,procurement.order,model_procurement_order,base.group_user,1,0,0,0
+access_procurement_stock_user,procurement.order stock.user,model_procurement_order,stock.group_stock_user,1,1,1,1
+access_stock_warehouse_orderpoint,stock.warehouse.orderpoint,model_stock_warehouse_orderpoint,stock.group_stock_user,1,0,0,0
+access_stock_warehouse_orderpoint_system,stock.warehouse.orderpoint system,model_stock_warehouse_orderpoint,stock.group_stock_manager,1,1,1,1
+access_mrp_property_group,mrp.property.group,model_mrp_property_group,stock.group_stock_manager,1,1,1,1
+access_mrp_property,mrp.property,model_mrp_property,stock.group_stock_manager,1,1,1,1
+access_mrp_property_group,mrp.property.group,model_mrp_property_group,base.group_user,1,0,0,0
+access_mrp_property,mrp.property,model_mrp_property,base.group_user,1,0,0,0
diff --git a/addons/procurement/test/procurement.yml b/addons/procurement/test/procurement.yml
new file mode 100644
index 00000000000..f769715e572
--- /dev/null
+++ b/addons/procurement/test/procurement.yml
@@ -0,0 +1,89 @@
+-
+ For test the procurement process, First I have to apply a minimum stock rule on product
+-
+ I create minimum stock rule for product.
+-
+ !record {model: stock.warehouse.orderpoint, id: stock_warehouse_orderpoint_op0}:
+ company_id: base.main_company
+ location_id: stock.stock_location_stock
+ logic: max
+ name: OP/00008
+ product_id: product.product_product_cpu2
+ product_max_qty: 15.0
+ product_min_qty: 5.0
+ product_uom: product.product_uom_kgm
+ qty_multiple: 1
+ warehouse_id: stock.warehouse0
+-
+ Check product quantity and update it, if needed for apply a minimum stock rule.
+-
+ !python {model: product.product}: |
+ product = self.browse(cr, uid, ref('product.product_product_cpu2'))
+ if product.virtual_available < 5.0:
+ change_qty = self.pool.get('stock.change.product.qty')
+ id = change_qty.create(cr, uid, {'location_id' : ref('stock.stock_location_stock'), 'new_quantity': 4, 'product_id': product.id})
+ change_qty.change_product_qty(cr, uid, [id], {'active_model':'product.product', 'active_id': product.id, 'active_ids':[product.id]})
+ assert product.qty_available == 4,"Product quantity is not updated."
+ assert product.virtual_available < 5.0,'Virtual stock have more quantities.'
+-
+ I run the scheduler.
+-
+ !python {model: procurement.order}: |
+ self.run_scheduler(cr, uid)
+-
+ I check that procurement order is based on minimum stock rule.
+-
+ !python {model: procurement.order}: |
+ proc_ids = self.search(cr, uid, [('product_id','=', ref('product.product_product_cpu2'))])
+ assert proc_ids, 'No Procurement created.'
+ proc_order = self.browse(cr, uid, proc_ids)[0]
+ assert proc_order.product_qty == 11.0,"Procurement product quantity is not corresponded."
+-
+ I check product quantity.
+-
+ !python {model: product.product}: |
+ product = self.browse(cr, uid, ref('product.product_product_cpu2'))
+ assert product.virtual_available == 15.0,"After run the scheduler product's virtual stock is not updated."
+-
+ For test the Procurement Request wizard, Again I have to update product quantity.
+-
+ !python {model: product.product}: |
+ mk_procure = self.pool.get('make.procurement')
+ procur_order = self.pool.get('procurement.order')
+ product = self.browse(cr, uid, ref('product.product_product_cpu2'))
+
+ context.update({'active_model': 'product.product','active_id':ref('product.product_product_cpu2')})
+ values = {'warehouse_id': ref('base.main_company'), 'uom_id': ref('product.product_uom_unit'), 'qty': 5}
+ id = mk_procure.create(cr, uid, values, context)
+ procurement = mk_procure.make_procurement(cr, uid, [id], context)
+ assert product.virtual_available == 20.0, 'Virtual stock should be updated'
+
+ proc_id = procurement.get('res_id')
+ for procurement in procur_order.browse(cr, uid, [proc_id]):
+ if procurement.state == 'confirmed':
+ assert procurement.state == 'confirmed',"Procurement state should be 'Confirmed'."
+ assert procurement.product_id.id == ref('product.product_product_cpu2'),"Product is not correspond."
+ assert procurement.product_qty == 5,"Product Quantity is not correspond."
+ assert procurement.product_uom.id == ref('product.product_uom_unit'),"Product's UOM is not correspond."
+ context.update({'proc': proc_id})
+-
+ I run the scheduler.
+-
+ !python {model: procurement.order}: |
+ self.run_scheduler(cr, uid)
+-
+ I check the current state of procurement.
+-
+ !python {model: procurement.order}: |
+ proc_id = context.get('proc')
+ proc = self.browse(cr, uid, [proc_id])[0]
+ assert proc.state == 'ready' or 'exception',"Procurement should be in Ready or Exception state"
+#-
+# I compute minimum stock.
+# [Note. Commented out because it spawns a thread that may query the db after tests have been reverted.]
+#-
+# !python {model: procurement.orderpoint.compute}: |
+# proc_id = context.get('proc')
+# context.update({'active_model': 'procurement.order', 'active_id': proc_id})
+# id = self.create(cr, uid, {'automatic': True}, context)
+# self.procure_calculation(cr, uid, [id], context)
diff --git a/addons/product/i18n/pt.po b/addons/product/i18n/pt.po
index 1c4bd145d6d..33a6361d03b 100644
--- a/addons/product/i18n/pt.po
+++ b/addons/product/i18n/pt.po
@@ -7,14 +7,15 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev_rc3\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
-"PO-Revision-Date: 2010-12-15 06:12+0000\n"
-"Last-Translator: OpenERP Administrators \n"
+"PO-Revision-Date: 2011-12-10 12:01+0000\n"
+"Last-Translator: António Anacleto (www.biztek.cv) "
+"\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-05 05:19+0000\n"
-"X-Generator: Launchpad (build 14231)\n"
+"X-Launchpad-Export-Date: 2011-12-11 05:36+0000\n"
+"X-Generator: Launchpad (build 14450)\n"
#. module: product
#: model:product.template,name:product.product_product_ram512_product_template
@@ -1748,7 +1749,7 @@ msgstr "Produtos por Categoria"
#. module: product
#: model:ir.actions.act_window,name:product.product_category_action_form
#: model:ir.ui.menu,name:product.menu_product_category_action_form
-msgid "Product Categories"
+msgid "Products Categories"
msgstr "Categorias de Produtos"
#. module: product
@@ -1862,7 +1863,7 @@ msgstr ""
#. module: product
#: model:product.template,description:product.product_product_cpu1_product_template
msgid "This product is configured with example of push/pull flows"
-msgstr ""
+msgstr "Este produto está configurado com exemplo de fluxos puxe/empurre"
#. module: product
#: field:product.packaging,length:0
diff --git a/addons/product/pricelist_view.xml b/addons/product/pricelist_view.xml
index 73151e8853f..3ddfe1e6900 100644
--- a/addons/product/pricelist_view.xml
+++ b/addons/product/pricelist_view.xml
@@ -166,7 +166,6 @@
tree,form{"default_type":"sale", "search_default_type":"sale"}
- [('type','=','sale')]A price list contains rules to be evaluated in order to compute the purchase or sales price for all the partners assigned to a price list. Price lists have several versions (2010, 2011, Promotion of February 2010, etc.) and each version has several rules. Example: the customer price of a product category will be based on the supplier price multiplied by 1.80.
@@ -177,7 +176,6 @@
tree,form{"default_type":"purchase", "search_default_type":"purchase"}
- [('type','=','purchase')]A price list contains rules to be evaluated in order to compute the purchase or sales price for all the partners assigned to a price list. Price lists have several versions (2010, 2011, Promotion of February 2010, etc.) and each version has several rules. Example: the customer price of a product category will be based on the supplier price multiplied by 1.80.product
+
+ SPAN100
+ produce
+
+
+
+ Shelf Panel
+ product
+
+ WOOD002buy
@@ -455,6 +465,19 @@
+
+ WOOD010
+ buy
+ 7.0
+
+
+ Wood 10mm
+
+
+ product
+
+
+
PROJproduce
@@ -509,7 +532,7 @@
RPAN100
- buy
+ produce10.0
@@ -548,7 +571,7 @@
RCK100
- buy
+ produce5.0
diff --git a/addons/product/product_view.xml b/addons/product/product_view.xml
index 6d9483f81ab..38b9d2d0ed1 100644
--- a/addons/product/product_view.xml
+++ b/addons/product/product_view.xml
@@ -56,7 +56,7 @@
-
+
@@ -100,9 +100,10 @@
-
-
+
+
@@ -637,8 +638,9 @@
-
+
diff --git a/addons/product/security/ir.model.access.csv b/addons/product/security/ir.model.access.csv
index 72c51639849..b5cd20854d9 100644
--- a/addons/product/security/ir.model.access.csv
+++ b/addons/product/security/ir.model.access.csv
@@ -1,19 +1,19 @@
-"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
-"access_product_uom_categ_user","product.uom.categ.user","model_product_uom_categ","base.group_user",1,0,0,0
-"access_product_uom_user","product.uom.user","model_product_uom","base.group_user",1,0,0,0
-"access_product_ul_user","product.ul.user","model_product_ul","base.group_user",1,0,0,0
-"access_product_category_user","product.category.user","model_product_category","base.group_user",1,0,0,0
-"access_product_template_user","product.template.user","model_product_template","base.group_user",1,0,0,0
-"access_product_packaging_user","product.packaging.user","model_product_packaging","base.group_user",1,0,0,0
-"access_product_supplierinfo_user","product.supplierinfo.user","model_product_supplierinfo","base.group_user",1,0,0,0
-"access_pricelist_partnerinfo_user","pricelist.partnerinfo.user","model_pricelist_partnerinfo","base.group_user",1,0,0,0
-"access_product_price_type_user","product.price.type.user","model_product_price_type","base.group_user",1,0,0,0
-"access_product_pricelist_type_user","product.pricelist.type.user","model_product_pricelist_type","base.group_user",1,0,0,0
-"access_product_pricelist_user","product.pricelist.user","model_product_pricelist","base.group_user",1,0,0,0
-"access_product_pricelist_version_user","product.pricelist.version.user","model_product_pricelist_version","base.group_user",1,0,0,0
-"access_product_pricelist_item_user","product.pricelist.item.user","model_product_pricelist_item","base.group_user",1,0,0,0
-"access_product_pricelist_type_partner_manager","product.pricelist.type partner manager","model_product_pricelist_type","base.group_partner_manager",1,0,0,0
-"access_product_pricelist_partner_manager","product.pricelist partner manager","model_product_pricelist","base.group_partner_manager",1,0,0,0
-"access_product_product_employee","product.product employee","model_product_product","base.group_user",1,0,0,0
-"access_product_template_sale_manager","product.template salemanager","model_product_template","base.group_sale_manager",1,1,1,1
-"access_product_product_sale_manager","product.product salemanager","model_product_product","base.group_sale_manager",1,1,1,1
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+access_product_uom_categ_user,product.uom.categ.user,model_product_uom_categ,base.group_user,1,0,0,0
+access_product_uom_user,product.uom.user,model_product_uom,base.group_user,1,0,0,0
+access_product_ul_user,product.ul.user,model_product_ul,base.group_user,1,0,0,0
+access_product_category_user,product.category.user,model_product_category,base.group_user,1,0,0,0
+access_product_template_user,product.template.user,model_product_template,base.group_user,1,0,0,0
+access_product_packaging_user,product.packaging.user,model_product_packaging,base.group_user,1,0,0,0
+access_product_supplierinfo_user,product.supplierinfo.user,model_product_supplierinfo,base.group_user,1,0,0,0
+access_pricelist_partnerinfo_user,pricelist.partnerinfo.user,model_pricelist_partnerinfo,base.group_user,1,0,0,0
+access_product_price_type_user,product.price.type.user,model_product_price_type,base.group_user,1,0,0,0
+access_product_pricelist_type_user,product.pricelist.type.user,model_product_pricelist_type,base.group_user,1,0,0,0
+access_product_pricelist_user,product.pricelist.user,model_product_pricelist,base.group_user,1,0,0,0
+access_product_pricelist_version_user,product.pricelist.version.user,model_product_pricelist_version,base.group_user,1,0,0,0
+access_product_pricelist_item_user,product.pricelist.item.user,model_product_pricelist_item,base.group_user,1,0,0,0
+access_product_pricelist_type_partner_manager,product.pricelist.type partner manager,model_product_pricelist_type,base.group_partner_manager,1,0,0,0
+access_product_pricelist_partner_manager,product.pricelist partner manager,model_product_pricelist,base.group_partner_manager,1,0,0,0
+access_product_product_employee,product.product employee,model_product_product,base.group_user,1,0,0,0
+access_product_template_sale_manager,product.template salemanager,model_product_template,base.group_sale_manager,1,1,1,1
+access_product_product_sale_manager,product.product salemanager,model_product_product,base.group_sale_manager,1,1,1,1
diff --git a/addons/product/security/product_security.xml b/addons/product/security/product_security.xml
index d9f14a13225..5c993b9cd61 100644
--- a/addons/product/security/product_security.xml
+++ b/addons/product/security/product_security.xml
@@ -3,14 +3,8 @@
- Useability / Product UoS View
-
-
-
- Sales / Manager
-
-
- Sales / User
+ Product UoS View
+
@@ -21,7 +15,8 @@
- Useability / Product Variant
+ Product Variant
+
diff --git a/addons/product_manufacturer/__openerp__.py b/addons/product_manufacturer/__openerp__.py
index 3b60b21979c..b2b2592b338 100644
--- a/addons/product_manufacturer/__openerp__.py
+++ b/addons/product_manufacturer/__openerp__.py
@@ -18,7 +18,7 @@
#
##############################################################################
{
- "name" : "Products Attributes & Manufacturers",
+ "name" : "Products Manufacturers",
"version" : "1.0",
"author" : "OpenERP SA",
'category': 'Purchase Management',
diff --git a/addons/product_manufacturer/security/ir.model.access.csv b/addons/product_manufacturer/security/ir.model.access.csv
index b06d5d3ea96..aab8e0748fe 100644
--- a/addons/product_manufacturer/security/ir.model.access.csv
+++ b/addons/product_manufacturer/security/ir.model.access.csv
@@ -1,2 +1,2 @@
-"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
-"access_product_manufacturer_attribute","product.manufacturer.attribute","model_product_manufacturer_attribute",base.group_user,1,1,1,1
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+access_product_manufacturer_attribute,product.manufacturer.attribute,model_product_manufacturer_attribute,base.group_user,1,1,1,1
diff --git a/addons/product_margin/security/ir.model.access.csv b/addons/product_margin/security/ir.model.access.csv
index 0343f29f43a..4a08a4aa60d 100644
--- a/addons/product_margin/security/ir.model.access.csv
+++ b/addons/product_margin/security/ir.model.access.csv
@@ -1 +1 @@
-"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
diff --git a/addons/product_visible_discount/__openerp__.py b/addons/product_visible_discount/__openerp__.py
index c49565f8e29..5e240a5ac0b 100644
--- a/addons/product_visible_discount/__openerp__.py
+++ b/addons/product_visible_discount/__openerp__.py
@@ -18,7 +18,7 @@
#
##############################################################################
{
- "name": "Visible Discounts on SO",
+ "name": "Prices Visible Discounts",
"version": "1.0",
"author": "OpenERP SA",
'category': 'Sales Management',
diff --git a/addons/profile_tools/__openerp__.py b/addons/profile_tools/__openerp__.py
index 3036b038d3f..18403d646f7 100644
--- a/addons/profile_tools/__openerp__.py
+++ b/addons/profile_tools/__openerp__.py
@@ -25,7 +25,7 @@
"version" : "1.0",
"depends" : ["base", "base_setup"],
"author" : "OpenERP SA",
- "category" : "Tools",
+ "category" : "Hidden/Dependency",
'complexity': "easy",
"description": """
Installer for extra Hidden like lunch, survey, idea, share, etc.
diff --git a/addons/profile_tools/i18n/hr.po b/addons/profile_tools/i18n/hr.po
new file mode 100644
index 00000000000..eaaed3f8e40
--- /dev/null
+++ b/addons/profile_tools/i18n/hr.po
@@ -0,0 +1,153 @@
+# Croatian translation for openobject-addons
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2011-01-11 11:15+0000\n"
+"PO-Revision-Date: 2011-12-12 10:10+0000\n"
+"Last-Translator: Tomislav Bosnjakovic \n"
+"Language-Team: Croatian \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-12-13 05:02+0000\n"
+"X-Generator: Launchpad (build 14458)\n"
+
+#. module: profile_tools
+#: help:misc_tools.installer,idea:0
+msgid "Promote ideas of the employees, votes and discussion on best ideas."
+msgstr ""
+"Promoviranje ideja zaposlenika, glasovanje i rasprava o najboljim idejama."
+
+#. module: profile_tools
+#: help:misc_tools.installer,share:0
+msgid ""
+"Allows you to give restricted access to your OpenERP documents to external "
+"users, such as customers, suppliers, or accountants. You can share any "
+"OpenERP Menu such as your project tasks, support requests, invoices, etc."
+msgstr ""
+"Dopušta vam davanje ograničenog pristupa vašim OpenERP dokumentima vanjskim "
+"korisnicima, poput kupaca, dobavljača ili računovođe. Možete podjeliti bilo "
+"koji OpenERP izbornik poput zadatka projekta, zahtejvi za podrškom, računi, "
+"itd."
+
+#. module: profile_tools
+#: help:misc_tools.installer,lunch:0
+msgid "A simple module to help you to manage Lunch orders."
+msgstr ""
+
+#. module: profile_tools
+#: field:misc_tools.installer,subscription:0
+msgid "Recurring Documents"
+msgstr "Ponavljajući dokumenti"
+
+#. module: profile_tools
+#: model:ir.model,name:profile_tools.model_misc_tools_installer
+msgid "misc_tools.installer"
+msgstr "misc_tools.installer"
+
+#. module: profile_tools
+#: model:ir.module.module,description:profile_tools.module_meta_information
+msgid ""
+"Installs tools for lunch,survey,subscription and audittrail\n"
+" module\n"
+" "
+msgstr ""
+"Instaliraj alate za lansiranje, upitnike, pretplatu i audittrail modul\n"
+" "
+
+#. module: profile_tools
+#: view:misc_tools.installer:0
+msgid ""
+"Extra Tools are applications that can help you improve your organization "
+"although they are not key for company management."
+msgstr ""
+"Dodatni alati su aplikacije koje vam mogu pomoći u poboljšanju organizacije "
+"iako nisu ključni za upravljanje društvom."
+
+#. module: profile_tools
+#: view:misc_tools.installer:0
+msgid "Configure"
+msgstr "Podešavanje"
+
+#. module: profile_tools
+#: help:misc_tools.installer,survey:0
+msgid "Allows you to organize surveys."
+msgstr "Omogućuje organiziranje istraživanja"
+
+#. module: profile_tools
+#: model:ir.module.module,shortdesc:profile_tools.module_meta_information
+msgid "Miscellaneous Tools"
+msgstr "Razni alati"
+
+#. module: profile_tools
+#: help:misc_tools.installer,pad:0
+msgid ""
+"This module creates a tighter integration between a Pad instance of your "
+"choosing and your OpenERP Web Client by letting you easily link pads to "
+"OpenERP objects via OpenERP attachments."
+msgstr ""
+
+#. module: profile_tools
+#: field:misc_tools.installer,lunch:0
+msgid "Lunch"
+msgstr ""
+
+#. module: profile_tools
+#: view:misc_tools.installer:0
+msgid "Extra Tools Configuration"
+msgstr "Podešavanje dodatnih alata"
+
+#. module: profile_tools
+#: field:misc_tools.installer,idea:0
+msgid "Ideas Box"
+msgstr "Kutija za ideje"
+
+#. module: profile_tools
+#: help:misc_tools.installer,subscription:0
+msgid "Helps to generate automatically recurring documents."
+msgstr "Pomaže u generiranju automatskih ponavljajućih dokumenata"
+
+#. module: profile_tools
+#: model:ir.actions.act_window,name:profile_tools.action_misc_tools_installer
+msgid "Tools Configuration"
+msgstr "Podešavanje alata"
+
+#. module: profile_tools
+#: field:misc_tools.installer,pad:0
+msgid "Collaborative Note Pads"
+msgstr ""
+
+#. module: profile_tools
+#: field:misc_tools.installer,survey:0
+msgid "Survey"
+msgstr "Upitnik"
+
+#. module: profile_tools
+#: view:misc_tools.installer:0
+msgid "Configure Extra Tools"
+msgstr ""
+
+#. module: profile_tools
+#: field:misc_tools.installer,progress:0
+msgid "Configuration Progress"
+msgstr "Napredak konfiguracije"
+
+#. module: profile_tools
+#: field:misc_tools.installer,config_logo:0
+msgid "Image"
+msgstr "Slika"
+
+#. module: profile_tools
+#: view:misc_tools.installer:0
+msgid "title"
+msgstr "naziv"
+
+#. module: profile_tools
+#: field:misc_tools.installer,share:0
+msgid "Web Share"
+msgstr "Djeljenje na webu"
diff --git a/addons/profile_tools/security/ir.model.access.csv b/addons/profile_tools/security/ir.model.access.csv
index 0343f29f43a..4a08a4aa60d 100644
--- a/addons/profile_tools/security/ir.model.access.csv
+++ b/addons/profile_tools/security/ir.model.access.csv
@@ -1 +1 @@
-"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
diff --git a/addons/profile_tools/static/src/img/icon.png b/addons/profile_tools/static/src/img/icon.png
new file mode 100644
index 00000000000..d6ba0866777
Binary files /dev/null and b/addons/profile_tools/static/src/img/icon.png differ
diff --git a/addons/project/__openerp__.py b/addons/project/__openerp__.py
index 84cde80e0a3..1b25c9d15cc 100644
--- a/addons/project/__openerp__.py
+++ b/addons/project/__openerp__.py
@@ -62,12 +62,13 @@ Dashboard for project members that includes:
'project_demo.xml',
],
'test':[
- 'test/test_project.yml',
- 'test/test_project_delegation.yml',
+ 'test/project_demo.yml',
+ 'test/project_process.yml',
+ 'test/task_process.yml',
],
'installable': True,
'active': False,
- 'core': True,
+ 'application': True,
'certificate': '0075116868317',
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/project/board_project_view.xml b/addons/project/board_project_view.xml
index 50fa1b4f613..88424be85fa 100644
--- a/addons/project/board_project_view.xml
+++ b/addons/project/board_project_view.xml
@@ -83,11 +83,10 @@
-
+
-
diff --git a/addons/project/project.py b/addons/project/project.py
index 6602017a0a6..f682319f017 100644
--- a/addons/project/project.py
+++ b/addons/project/project.py
@@ -114,12 +114,6 @@ class project(osv.osv):
if task.project_id: result[task.project_id.id] = True
return result.keys()
- def _get_project_work(self, cr, uid, ids, context=None):
- result = {}
- for work in self.pool.get('project.task.work').browse(cr, uid, ids, context=context):
- if work.task_id and work.task_id.project_id: result[work.task_id.project_id.id] = True
- return result.keys()
-
def unlink(self, cr, uid, ids, *args, **kwargs):
for proj in self.browse(cr, uid, ids):
if proj.tasks:
@@ -360,7 +354,7 @@ def Project():
working_days = %s
resource = %s
""" % (
- project.id,
+ project.id,
project.date_start, working_days,
'|'.join(['User_'+str(x) for x in puids])
)
@@ -879,14 +873,24 @@ class task(osv.osv):
self.write(cr, uid, ids, {'state': 'draft'}, context=context)
return True
+
+ def _delegate_task_attachments(self, cr, uid, task_id, delegated_task_id, context=None):
+ attachment = self.pool.get('ir.attachment')
+ attachment_ids = attachment.search(cr, uid, [('res_model', '=', self._name), ('res_id', '=', task_id)], context=context)
+ new_attachment_ids = []
+ for attachment_id in attachment_ids:
+ new_attachment_ids.append(attachment.copy(cr, uid, attachment_id, default={'res_id': delegated_task_id}, context=context))
+ return new_attachment_ids
+
+
def do_delegate(self, cr, uid, ids, delegate_data={}, context=None):
"""
Delegate Task to another users.
"""
assert delegate_data['user_id'], _("Delegated User should be specified")
- delegrated_tasks = {}
+ delegated_tasks = {}
for task in self.browse(cr, uid, ids, context=context):
- delegrated_task_id = self.copy(cr, uid, task.id, {
+ delegated_task_id = self.copy(cr, uid, task.id, {
'name': delegate_data['name'],
'project_id': delegate_data['project_id'] and delegate_data['project_id'][0] or False,
'user_id': delegate_data['user_id'] and delegate_data['user_id'][0] or False,
@@ -897,6 +901,7 @@ class task(osv.osv):
'child_ids': [],
'work_ids': []
}, context=context)
+ self._delegate_task_attachments(cr, uid, task.id, delegated_task_id, context=context)
newname = delegate_data['prefix'] or ''
task.write({
'remaining_hours': delegate_data['planned_hours_me'],
@@ -910,8 +915,8 @@ class task(osv.osv):
message = _("The task '%s' has been delegated to %s.") % (delegate_data['name'], delegate_data['user_id'][1])
self.log(cr, uid, task.id, message)
- delegrated_tasks[task.id] = delegrated_task_id
- return delegrated_tasks
+ delegated_tasks[task.id] = delegated_task_id
+ return delegated_tasks
def do_pending(self, cr, uid, ids, context={}):
self.write(cr, uid, ids, {'state': 'pending'}, context=context)
@@ -920,21 +925,24 @@ class task(osv.osv):
self.log(cr, uid, id, message)
return True
- def set_remaining_time_1(self, cr, uid, ids, context=None):
- self.write(cr, uid, ids, {'remaining_hours': 1.0}, context=context)
+ def set_remaining_time(self, cr, uid, ids, remaining_time=1.0, context=None):
+ for task in self.browse(cr, uid, ids, context=context):
+ if (task.state=='draft') or (task.planned_hours==0.0):
+ self.write(cr, uid, [task.id], {'planned_hours': remaining_time}, context=context)
+ self.write(cr, uid, ids, {'remaining_hours': remaining_time}, context=context)
return True
+ def set_remaining_time_1(self, cr, uid, ids, context=None):
+ return self.set_remaining_time(cr, uid, ids, 1.0, context)
+
def set_remaining_time_2(self, cr, uid, ids, context=None):
- self.write(cr, uid, ids, {'remaining_hours': 2.0}, context=context)
- return True
+ return self.set_remaining_time(cr, uid, ids, 2.0, context)
def set_remaining_time_5(self, cr, uid, ids, context=None):
- self.write(cr, uid, ids, {'remaining_hours': 5.0}, context=context)
- return True
+ return self.set_remaining_time(cr, uid, ids, 5.0, context)
def set_remaining_time_10(self, cr, uid, ids, context=None):
- self.write(cr, uid, ids, {'remaining_hours': 10.0}, context=context)
- return True
+ return self.set_remaining_time(cr, uid, ids, 10.0, context)
def set_kanban_state_blocked(self, cr, uid, ids, context=None):
self.write(cr, uid, ids, {'kanban_state': 'blocked'}, context=context)
@@ -979,6 +987,7 @@ class task(osv.osv):
self.pool.get('project.task.history').create(cr, uid, {
'task_id': task.id,
'remaining_hours': task.remaining_hours,
+ 'planned_hours': task.planned_hours,
'kanban_state': task.kanban_state,
'type_id': task.type_id.id,
'state': task.state,
@@ -1096,7 +1105,7 @@ class account_analytic_account(osv.osv):
if vals.get('child_ids', False) and context.get('analytic_project_copy', False):
vals['child_ids'] = []
return super(account_analytic_account, self).create(cr, uid, vals, context=context)
-
+
def unlink(self, cr, uid, ids, *args, **kwargs):
project_obj = self.pool.get('project.project')
analytic_ids = project_obj.search(cr, uid, [('analytic_account_id','in',ids)])
@@ -1158,7 +1167,8 @@ class project_task_history(osv.osv):
'end_date': fields.function(_get_date, string='End Date', type="date", store={
'project.task.history': (_get_related_date, None, 20)
}),
- 'remaining_hours': fields.float('Remaining Hours', digits=(16,2)),
+ 'remaining_hours': fields.float('Remaining Time', digits=(16,2)),
+ 'planned_hours': fields.float('Planned Time', digits=(16,2)),
'user_id': fields.many2one('res.users', 'Responsible'),
}
_defaults = {
@@ -1186,7 +1196,7 @@ class project_task_history_cumulative(osv.osv):
id as history_id,
date+generate_series(0, CAST((coalesce(end_date,DATE 'tomorrow')::date - date)AS integer)-1) as date,
task_id, type_id, user_id, kanban_state, state,
- remaining_hours
+ remaining_hours, planned_hours
FROM
project_task_history
) as history
diff --git a/addons/project/project_data.xml b/addons/project/project_data.xml
index a3bfe9be673..b7b59911fa4 100644
--- a/addons/project/project_data.xml
+++ b/addons/project/project_data.xml
@@ -1,6 +1,18 @@
+
+
+
+ Project
+ project.project
+
+
+
+ Project task
+ project.task
+
+
Projects
diff --git a/addons/project/project_view.xml b/addons/project/project_view.xml
index c8fe92f4194..22fc175246e 100644
--- a/addons/project/project_view.xml
+++ b/addons/project/project_view.xml
@@ -378,6 +378,7 @@
type="object" class="oe_kanban_button">
+ !
@@ -488,11 +489,6 @@
-
-
diff --git a/addons/project/report/project_cumulative.xml b/addons/project/report/project_cumulative.xml
index aff90aea94e..89667992f0a 100644
--- a/addons/project/report/project_cumulative.xml
+++ b/addons/project/report/project_cumulative.xml
@@ -25,6 +25,18 @@
graph
+
+
+
+
+
+
+
+ project.task.history.burndown.graph
+ project.task.history.burndown
+ graph
+
+
@@ -32,12 +44,13 @@
+
project.task.history.cumulative.searchproject.task.history.cumulativesearch
-
+
@@ -69,13 +82,28 @@
project.task.history.cumulativeformgraph,tree
+
- {"search_default_open":1, "search_default_this_month": 1}
+ {"search_default_open":1, "search_default_this_month": 1, "search_default_project_id": project_id}
+
+ Burndown Chart
+ project.task.history.cumulative
+ form
+ graph,tree
+
+
+ {"search_default_open":1, "search_default_this_month": 1, "search_default_project_id": project_id}
+
+
+
+
diff --git a/addons/project/report/project_report_view.xml b/addons/project/report/project_report_view.xml
index bf828d6b231..5af8706108f 100644
--- a/addons/project/report/project_report_view.xml
+++ b/addons/project/report/project_report_view.xml
@@ -150,7 +150,7 @@
formtree,graph
- {'search_default_year':1,'search_default_month':1,'search_default_project':1,'group_by_no_leaf':1,'group_by':[]}
+ {'search_default_year':1,'search_default_project':1,'group_by_no_leaf':1,'group_by':[]}This report allows you to analyse the performance of your projects and users. You can analyse the quantities of tasks, the hours spent compared to the planned hours, the average number of days to open or close a task, etc.
@@ -269,28 +269,5 @@
-
-
- Projects: Planned Vs Total hours
- project.vs.hours
- form
- graph,tree
- {}
- [('user_id','=',uid),('state','=','open')]
-
-
-
-
-
- tree
-
-
-
-
-
- graph
-
-
-
diff --git a/addons/project/security/ir.model.access.csv b/addons/project/security/ir.model.access.csv
index 955a6ef0c97..633c5164484 100644
--- a/addons/project/security/ir.model.access.csv
+++ b/addons/project/security/ir.model.access.csv
@@ -1,26 +1,18 @@
-"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
-"access_project_project_manager","project.project manager","model_project_project","project.group_project_manager",1,1,1,1
-"access_account_analytic_account_manager","account.analytic.account","analytic.model_account_analytic_account","project.group_project_manager",1,1,1,1
-"access_project_project","project.project","model_project_project","project.group_project_user",1,1,1,1
-"access_account_analytic_account","account.analytic.account","analytic.model_account_analytic_account","project.group_project_user",1,1,1,1
-"access_project_task_type_user","project.task.type user","model_project_task_type","project.group_project_user",1,1,1,1
-"access_project_task_type","project.task.type","model_project_task_type","project.group_project_manager",1,1,1,1
-"access_project_task_manager","project.task manager","model_project_task","project.group_project_manager",1,1,1,1
-"access_project_task","project.task","model_project_task","project.group_project_user",1,1,1,1
-"access_project_task_work","project.task.work","model_project_task_work","project.group_project_user",1,1,1,1
-"access_project_task_work_manager","project.task.work.manager","model_project_task_work","project.group_project_manager",1,1,1,1
-"access_report_project_task_user","report.project.task.user","model_report_project_task_user","project.group_project_manager",1,1,1,1
-"access_project_vs_hours","project.vs.hours","model_project_vs_hours","project.group_project_user",1,1,1,1
-"access_task_by_days","task.by.days","model_task_by_days","project.group_project_user",1,1,1,1
-"access_partner_task user","base.res.partner user","base.model_res_partner","project.group_project_user",1,0,0,0
-"access_partner_task manager","base.res.partner manager","base.model_res_partner","project.group_project_manager",1,0,0,0
-"access_partner_address_task user","base.res.partner.address user","base.model_res_partner_address","project.group_project_user",1,0,0,0
-"access_partner_address_task manager","base.res.partner.address manager","base.model_res_partner_address","project.group_project_manager",1,0,0,0
-"access_task_on_partner","project.task on partners","model_project_task","base.group_user",1,0,0,0
-"access_project_on_partner","project.project on partners","model_project_project","base.group_user",1,0,0,0
-"access_project_vs_hours_manager","project.vs.hours.manager","model_project_vs_hours","project.group_project_manager",1,1,1,1
-"access_project_task_sale_user","project.task salesman","model_project_task","base.group_sale_salesman",1,0,0,0
-"access_project_project_sale_user","project.project salesman","model_project_project","base.group_sale_salesman",1,0,0,0
-"access_account_analytic_line_project","account.analytic.line project","analytic.model_account_analytic_line","project.group_project_manager",1,1,1,1
-"access_project_task_history","project.task.history project","project.model_project_task_history","project.group_project_user",1,1,1,0
-"access_project_task_history_cumulative","project.task.history project","project.model_project_task_history_cumulative","project.group_project_manager",1,0,0,0
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+access_project_project,project.project,model_project_project,project.group_project_user,1,1,1,1
+access_account_analytic_account,account.analytic.account,analytic.model_account_analytic_account,project.group_project_user,1,1,1,1
+access_project_task_type_user,project.task.type user,model_project_task_type,project.group_project_user,1,1,1,1
+access_project_task,project.task,model_project_task,project.group_project_user,1,1,1,1
+access_project_task_work,project.task.work,model_project_task_work,project.group_project_user,1,1,1,1
+access_report_project_task_user,report.project.task.user,model_report_project_task_user,project.group_project_manager,1,1,1,1
+access_project_vs_hours,project.vs.hours,model_project_vs_hours,project.group_project_user,1,1,1,1
+access_task_by_days,task.by.days,model_task_by_days,project.group_project_user,1,1,1,1
+access_partner_task user,base.res.partner user,base.model_res_partner,project.group_project_user,1,0,0,0
+access_partner_address_task user,base.res.partner.address user,base.model_res_partner_address,project.group_project_user,1,0,0,0
+access_task_on_partner,project.task on partners,model_project_task,base.group_user,1,0,0,0
+access_project_on_partner,project.project on partners,model_project_project,base.group_user,1,0,0,0
+access_project_task_sale_user,project.task salesman,model_project_task,base.group_sale_salesman,1,0,0,0
+access_project_project_sale_user,project.project salesman,model_project_project,base.group_sale_salesman,1,0,0,0
+access_account_analytic_line_project,account.analytic.line project,analytic.model_account_analytic_line,project.group_project_manager,1,1,1,1
+access_project_task_history,project.task.history project,project.model_project_task_history,project.group_project_user,1,1,1,0
+access_project_task_history_cumulative,project.task.history project,project.model_project_task_history_cumulative,project.group_project_manager,1,0,0,0
diff --git a/addons/project/security/project_security.xml b/addons/project/security/project_security.xml
index 62f74f51d1b..f1e3a6e9b74 100644
--- a/addons/project/security/project_security.xml
+++ b/addons/project/security/project_security.xml
@@ -3,18 +3,16 @@
- Project / User
+ User
+
- Project / Manager
+ Manager
+
-
- Sales / User
-
-
diff --git a/addons/project/static/src/img/icon.png b/addons/project/static/src/img/icon.png
new file mode 100644
index 00000000000..8dc1bc78fa4
Binary files /dev/null and b/addons/project/static/src/img/icon.png differ
diff --git a/addons/project/test/project_demo.yml b/addons/project/test/project_demo.yml
new file mode 100644
index 00000000000..3bcae52e238
--- /dev/null
+++ b/addons/project/test/project_demo.yml
@@ -0,0 +1,12 @@
+-
+ !record {model: project.project, id: project_integrate_openerp, view: False}:
+ partner_id: base.res_partner_agrolait
+-
+ !record {model: project.task, id: project_task_1, view: False}:
+ remaining_hours: 10.00
+-
+ !record {model: project.task, id: project_task_1, view: False}:
+ planned_hours: 10.00
+-
+ !record {model: project.task, id: project_task_1, view: False}:
+ project_id: project_integrate_openerp
\ No newline at end of file
diff --git a/addons/project/test/project_process.yml b/addons/project/test/project_process.yml
new file mode 100644
index 00000000000..3c51c464b1f
--- /dev/null
+++ b/addons/project/test/project_process.yml
@@ -0,0 +1,70 @@
+-
+ In order to Test Process of Project Management,
+-
+ I create duplicate template.
+-
+ !python {model: project.project}: |
+ new_template = self.duplicate_template(cr, uid, [ref("project_integrate_openerp")])
+ assert new_template, "duplicate template is not created"
+ template = self.browse(cr, uid, new_template['res_id'], context=context)
+ assert template.state == 'open', "Duplicate template must be in open state."
+-
+ I convert template into real Project.
+-
+ !python {model: project.project}: |
+ self.reset_project(cr, uid, [ref("project_integrate_openerp")])
+-
+ I check project details after convert from template.
+-
+ !assert {model: project.project, id: project_integrate_openerp, severity: error, string: Project should be active}:
+ - state == "open"
+-
+ I put project in pending.
+-
+ !python {model: project.project}: |
+ self.set_pending(cr, uid, [ref("project_integrate_openerp")])
+-
+ I check state after put in pending.
+-
+ !assert {model: project.project, id: project_integrate_openerp, severity: error, string: Project should be in pending state}:
+ - state == "pending"
+-
+ I re-open the project.
+-
+ !python {model: project.project}: |
+ self.set_open(cr, uid, [ref("project_integrate_openerp")])
+-
+ I check state after reopen.
+-
+ !assert {model: project.project, id: project_integrate_openerp, severity: error, string: Project should be open.}:
+ - state == "open"
+-
+ I close the project.
+-
+ !python {model: project.project}: |
+ self.set_done(cr, uid, [ref("project_integrate_openerp")])
+-
+ I check state after closed.
+-
+ !assert {model: project.project, id: project_integrate_openerp, severity: error, string: Project should be close.}:
+ - state == "close"
+-
+ I set project into template.
+-
+ !python {model: project.project}: |
+ self.set_template(cr, uid, [ref("project_integrate_openerp")])
+-
+ I schedule tasks of project.
+-
+ !python {model: project.project}: |
+ self.schedule_tasks(cr, uid, [ref("project_integrate_openerp")], context=context)
+-
+ I copy the tasks of project.
+-
+ !python {model: project.project}: |
+ self.template_copy(cr, uid, ref("project_integrate_openerp"))
+-
+ I cancel Project.
+-
+ !python {model: project.project}: |
+ self.set_cancel(cr, uid, [ref("project_project_9")])
\ No newline at end of file
diff --git a/addons/project/test/task_process.yml b/addons/project/test/task_process.yml
new file mode 100644
index 00000000000..73250de2963
--- /dev/null
+++ b/addons/project/test/task_process.yml
@@ -0,0 +1,76 @@
+-
+ I put task in pending due to specification is not clear.
+-
+ !python {model: project.task}: |
+ self.do_pending(cr, uid, [ref("project_task_1")])
+ context.update({"active_id": ref("project_task_1")})
+-
+ I check state of task after put in pending.
+-
+ !assert {model: project.task, id: project_task_1, severity: error, string: task should be in pending state}:
+ - state == "pending"
+-
+ !record {model: project.task.delegate, id: delegate_id}:
+ user_id: res_users_analyst
+ planned_hours: 12.0
+ planned_hours_me: 2.0
+-
+ Now I delegate task to team member.
+-
+ !python {model: project.task.delegate}: |
+ self.delegate(cr, uid, [ref("delegate_id")], {"active_id": ref("project_task_1")})
+-
+ I check delegated task details.
+-
+ !python {model: project.task}: |
+ task = self.browse(cr, uid, ref("project_task_1"), context=context)
+ assert task.planned_hours == 2.0, "Planning hours is not correct after delegated."
+ assert task.state == "pending", "Task should be in Pending after delegated."
+-
+ I re-open the task.
+-
+ !python {model: project.task}: |
+ self.do_reopen(cr, uid, [ref("project_task_1")])
+-
+ I check reopened task details.
+-
+ !assert {model: project.task, id: project_task_1, severity: error, string: task should be open.}:
+ - state == "open"
+-
+ I change the stage of task to next stage.
+-
+ !python {model: project.task}: |
+ self.next_type(cr, uid, [ref("project_task_1")])
+-
+ !record {model: project.task.reevaluate, id: reevaluate_id}:
+ remaining_hours : 120
+-
+ I reevaluate task with remaining hours.
+-
+ !python {model: project.task.reevaluate}: |
+ self.compute_hours(cr, uid, [ref("reevaluate_id")], {"active_id": ref("project_task_1")})
+-
+ I check remaining hours after reevaluated task.
+-
+ !assert {model: project.task, id: project_task_1, severity: error, string: task should be reevaluated}:
+ - remaining_hours == 120.0
+-
+ I close the task.
+-
+ !python {model: project.task}: |
+ self.action_close(cr, uid, [ref("project_task_1")])
+-
+ I check state after closed.
+-
+ !assert {model: project.task, id: project_task_1, severity: error, string: task is in open state}:
+ - state == "done"
+-
+ I change the stage of task to previous stage.
+-
+ !python {model: project.task}: |
+ self.prev_type(cr, uid, [ref("project_task_1")])
+-
+ I cancel Task.
+-
+ !python {model: project.task}: |
+ self.do_cancel(cr, uid, [ref("project_task_2")])
\ No newline at end of file
diff --git a/addons/project/test/test_project.yml b/addons/project/test/test_project.yml
deleted file mode 100644
index f79c2a34224..00000000000
--- a/addons/project/test/test_project.yml
+++ /dev/null
@@ -1,296 +0,0 @@
--
- Test project template feature
--
- Create project 'OpenERP Training Programme'
--
- !record {model: project.project, id: project_project_openerptrainingprogramme0}:
- company_id: base.main_company
- name: OpenERP Training Programme
--
- Create task 'Technical Training' for this project
--
- !record {model: project.task, id: project_task_technicaltraining0}:
- date_start: !eval time.strftime('%Y-%m-%d %H:%M:%S')
- name: Technical Training
- planned_hours: 30.0
- project_id: project_project_openerptrainingprogramme0
- remaining_hours: 30.0
- state: draft
--
- Create task 'Functional Training' for this project
--
- !record {model: project.task, id: project_task_functionaltraining0}:
- date_start: !eval time.strftime('%Y-%m-%d %H:%M:%S')
- name: Functional Training
- planned_hours: 30.0
- project_id: project_project_openerptrainingprogramme0
- remaining_hours: 30.0
- state: draft
--
- Set project as project template
--
- !python {model: project.project}: |
- self.set_template(cr, uid, [ref("project_project_openerptrainingprogramme0")],
- {"lang": "en_US", "active_model": "ir.ui.menu", "active_ids": [ref("project.menu_open_view_project_all")],
- "tz": False, "active_id": ref("project.menu_open_view_project_all"), })
--
- Check if project in template state
--
- !assert {model: project.project, id: project_project_openerptrainingprogramme0, severity: error, string: Project is in template state}:
- - state == "template"
--
- Create new project based on this template
--
- !python {model: project.project}: |
- new_prj = self.duplicate_template(cr, uid, [ref("project_project_openerptrainingprogramme0")],
- {"lang": "en_US", "active_model": "ir.ui.menu", "active_ids": [ref("project.menu_open_view_project_all")],
- "tz": False, "active_id": ref("project.menu_open_view_project_all"), })
- if not new_prj:
- raise Exception( "New project based on template not created")
- new_id = new_prj['res_id']
- new_prj = self.read(cr, uid, [new_id], ['name', 'state'])[0]
- state = new_prj['state']
- name = new_prj['name']
- assert state == 'open', "Project in %s state. Project created from template project must be in open state"%state
--
- Reset project template to normal project
--
- !python {model: project.project}: |
- self.reset_project(cr, uid, [ref("project_project_openerptrainingprogramme0")], {"lang": "en_US", "active_ids":
- [ref("project.menu_open_view_project_all")], "tz": False, "active_model":
- "ir.ui.menu", "project_id": False, "active_id": ref("project.menu_open_view_project_all"),
- })
--
- Check if project in open state
--
- !assert {model: project.project, id: project_project_openerptrainingprogramme0, severity: error, string: Project is in open state}:
- - state == "open"
--
- Test for different project-states
--
- Keep project pending
--
- !python {model: project.project}: |
- self.set_pending(cr, uid, [ref("project_project_openerptrainingprogramme0")], {"lang": "en_US", "active_ids":
- [ref("project.menu_open_view_project_all")], "tz": False, "active_model":
- "ir.ui.menu", "project_id": False, "active_id": ref("project.menu_open_view_project_all"),
- })
--
- Check if project in pending state
--
- !assert {model: project.project, id: project_project_openerptrainingprogramme0, severity: error, string: Project is in pending state}:
- - state == "pending"
--
- Cancel the project
--
- !python {model: project.project}: |
- self.set_cancel(cr, uid, [ref("project_project_openerptrainingprogramme0")], {"lang": "en_US", "active_ids":
- [ref("project.menu_open_view_project_all")], "tz": False, "active_model":
- "ir.ui.menu", "project_id": False, "active_id": ref("project.menu_open_view_project_all"),
- })
--
- Check if project in cancel state
--
- !assert {model: project.project, id: project_project_openerptrainingprogramme0, severity: error, string: Project is in cancel state}:
- - state == "cancelled"
--
- Re-open the project
--
- !python {model: project.project}: |
- self.set_open(cr, uid, [ref("project_project_openerptrainingprogramme0")], {"lang": "en_US", "active_ids": [ref("project.menu_open_view_project_all")],
- "tz": False, "active_model": "ir.ui.menu", "project_id": False, "active_id":
- ref("project.menu_open_view_project_all"), })
--
- Check if project in open state
--
- !assert {model: project.project, id: project_project_openerptrainingprogramme0, severity: error, string: Project is in open state}:
- - state == "open"
--
- Test for task work allocation
--
- As i cancelled my project before, i check if the task 'Technical Training' is in cancelled state
--
- !assert {model: project.task, id: project_task_technicaltraining0, severity: error, string: Task is in cancelled state}:
- - state == "cancelled"
--
- Now in order to reactivate the task 'Technical Training', i click on the "Reactivate" button and fill the remaining hour field
--
- !record {model: project.task.reevaluate, id: project_task_technicaltraining_remainingwiz0}:
- remaining_hours: 30.0
-- |
- I click the apply button
--
- !python {model: project.task.reevaluate}: |
- self.compute_hours(cr, uid, [ref('project_task_technicaltraining_remainingwiz0')], {'active_id': ref("project_task_technicaltraining0"),'button_reactivate': True})
-- |
- Check if task 'Technical Training' in open state and for other initial values
--
- !assert {model: project.task, id: project_task_technicaltraining0, severity: error, string: Project is in open state}:
- - state == "open"
- - planned_hours == 30
- - remaining_hours == 30
- - delay_hours == 0.0
- - effective_hours == 0.0
--
- Make a work task entry 'Training on OpenERP modules, models and classes' of 10 hours
--
- !record {model: project.task, id: project_task_technicaltraining0, context:{'no_analytic_entry':True}}:
- work_ids:
- - date: !eval time.strftime('%Y-%m-%d %H:%M:%S')
- hours: 10.0
- name: Training on OpenERP modules, models and classes
- user_id: base.user_root
--
- Check for effective hours and remaining hours, effective_hours must be equal to 10
--
- !assert {model: project.task, id: project_task_technicaltraining0, severity: error, string: After work task of 10 hours effective_hours must be equal to 10}:
- - remaining_hours == 20
- - effective_hours == 10.0
--
- Make a work task entry 'Training on OpenERP xml views' of 10 hours
--
- !record {model: project.task, id: project_task_technicaltraining0, context:{'no_analytic_entry':True}}:
- work_ids:
- - date: !eval time.strftime('%Y-%m-%d %H:%M:%S')
- hours: 10.0
- name: Training on OpenERP xml views
- user_id: base.user_root
--
- Check for effective hours and remaining hours, effective_hours must be equal to 20
--
- !assert {model: project.task, id: project_task_technicaltraining0, severity: error, string: After one more work task of 10 hours effective_hours must be equal to 20}:
- - remaining_hours == 10
- - effective_hours == 20.0
--
- Make a work task entry 'Training on workflows' of 10 hours
--
- !record {model: project.task, id: project_task_technicaltraining0, context:{'no_analytic_entry':True}}:
- work_ids:
- - date: !eval time.strftime('%Y-%m-%d %H:%M:%S')
- hours: 10.0
- name: Training on workflows
- user_id: base.user_root
--
- Check for effective hours and remaining hours, effective_hours must be equal to 30
--
- !assert {model: project.task, id: project_task_technicaltraining0, severity: error, string: After one more work task of 10 hours effective_hours must be equal to 30}:
- - remaining_hours == 0
- - effective_hours == 30.0
--
- Set remaining hours of 10 hours for reevaluating the task
--
- !record {model: project.task.reevaluate, id: config_compute_remaining_0}:
- remaining_hours: 10.0
--
- Reevaluate the task
--
- !python {model: project.task.reevaluate}: |
- self.compute_hours(cr, uid, [ref("config_compute_remaining_0")], {"lang": "en_US",
- "project_id": False, "tz": False, "active_model": "project.task", "search_default_project_id":
- False, "search_default_user_id": 1, "search_default_current": 1, "active_ids":
- [ref("project_task_technicaltraining0")], "active_id": ref("project_task_technicaltraining0"), })
-
--
- Check for effective hours and remaining hours, remaining_hours must be 10 while planned_hours remains 30
--
- !assert {model: project.task, id: project_task_technicaltraining0, severity: error, string: After reevaluating the task with 10 hours remaining_hours must be 10 while planned_hours remains 30}:
- - planned_hours == 30
- - remaining_hours == 10.0
- - effective_hours == 30.0
--
- Make a work task entry 'Training on reports and wizards' of 10 hours
--
- !record {model: project.task, id: project_task_technicaltraining0, context:{'no_analytic_entry':True}}:
- work_ids:
- - date: !eval time.strftime('%Y-%m-%d %H:%M:%S')
- hours: 10.0
- name: Training on reports and wizards
- user_id: base.user_root
--
- Check for effective hours and remaining hours
--
- !assert {model: project.task, id: project_task_technicaltraining0, severity: error, string: After one more work task of 10 hours effective_hours must be equal to 40 while planned_hours remains 30}:
- - planned_hours == 30
- - remaining_hours == 0
- - effective_hours == 40.0
--
- Close the task
--
- !python {model: project.task}: |
- self.do_close(cr, uid, [ref("project_task_technicaltraining0")], {'mail_send': False})
--
- Check if task in done state
--
- !assert {model: project.task, id: project_task_technicaltraining0, severity: error, string: Task is in done state}:
- - state == "done"
-
-
--
- Test for task reactivation
--
- Reactivate task
--
- !record {model: project.task.reevaluate, id: config_compute_remaining_1}:
- remaining_hours: 10.0
--
- Reevaluate the task with 10 hours remaining
--
- !python {model: project.task.reevaluate}: |
- self.compute_hours(cr, uid, [ref("config_compute_remaining_1")], {"lang": "en_US",
- "project_id": False, "tz": False, "button_reactivate": True, "active_model":
- "project.task", "search_default_project_id": False, "search_default_user_id":
- 1, "search_default_current": 1, "active_ids": [ref("project_task_technicaltraining0")], "active_id": ref("project_task_technicaltraining0"),
- })
--
- Check for effective hours and remaining hours, remaining_hours must be 10 while planned_hours remains 30
--
- !assert {model: project.task, id: project_task_technicaltraining0, severity: error, string: After reevaluating the task with 10 hours remaining_hours must be 10 while planned_hours remains 30}:
- - planned_hours == 30
- - remaining_hours == 10.0
- - effective_hours == 40.0
--
- Make a work task entry 'Training on yml' of 5 hours
--
- !record {model: project.task, id: project_task_technicaltraining0, context:{'no_analytic_entry':True}}:
- work_ids:
- - date: !eval time.strftime('%Y-%m-%d %H:%M:%S')
- hours: 5.0
- name: Training on yml
- user_id: base.user_root
--
- Check for effective hours and remaining hours, remaining_hours must be 5, effective_hours must be 45
--
- !assert {model: project.task, id: project_task_technicaltraining0, severity: error, string: After work task of 5 hours effective_hours must be equal to 45 and remaining_hours is 5}:
- - planned_hours == 30
- - remaining_hours == 5.0
- - effective_hours == 45.0
--
- Close the task
--
- !python {model: project.task}: |
- self.do_close(cr, uid, [ref("project_task_technicaltraining0")], {'mail_send': False})
--
- Check if task in done state
--
- !assert {model: project.task, id: project_task_technicaltraining0, severity: error}:
- - state == "done"
--
- Check for effective hours and remaining hours
--
- !assert {model: project.task, id: project_task_technicaltraining0, severity: error, string: After closing the task planned_hours must remain 30 effective_hours must be 45 and remaining hours must be 0}:
- - planned_hours == 30
- - remaining_hours == 0.0
- - effective_hours == 45.0
--
- Close project 'OpenERP Training Programme'
--
- !python {model: project.project}: |
- self.set_done(cr, uid, [ref("project_project_openerptrainingprogramme0")], {"lang": "en_US", "active_ids": [ref("project.menu_open_view_project_all")],
- "tz": False, "active_model": "ir.ui.menu", "project_id": False, "active_id":
- ref("project.menu_open_view_project_all"), })
--
- Check if project in close state
--
- !assert {model: project.project, id: project_project_openerptrainingprogramme0, severity: error, string: "Project must be in closed state"}:
- - state == "close"
-
diff --git a/addons/project/test/test_project_delegation.yml b/addons/project/test/test_project_delegation.yml
deleted file mode 100644
index 02bc9afaae8..00000000000
--- a/addons/project/test/test_project_delegation.yml
+++ /dev/null
@@ -1,230 +0,0 @@
--
- This scenario tests the delegation process. Closing all the delegated tasks(task delegation at multiple levels) transits the parent task from pending to open state.
--
- Creating a project OpenERP Documentation
--
- !record {model: project.project, id: project_project_openerpdocumentation0}:
- company_id: base.main_company
- name: OpenERP Documentation
-
--
- Creating a task 'Develop book for Technical and Functional reference'
--
- !record {model: project.task, id: project_task_documentation_book}:
- name: Develop book for Technical and Functional reference
- planned_hours: 20.0
- project_id: project_project_openerpdocumentation0
- remaining_hours: 20.0
- state: draft
-
--
- Open the task
--
- !python {model: project.task}: |
- self.do_open(cr, uid, [ref("project_task_documentation_book")],
- {"lang": "en_US", "active_model": "ir.ui.menu", "active_ids": [ref("project.menu_action_view_task")],
- "tz": False, "active_id": ref("project.menu_action_view_task"), })
-
--
- Creating a task 'Publish the References'
--
- !record {model: project.task, id: project_task_publish_book}:
- name: Publish the References
- planned_hours: 10.0
- project_id: project_project_openerpdocumentation0
- remaining_hours: 10.0
- state: draft
-
--
- Open the task
--
- !python {model: project.task}: |
- self.do_open(cr, uid, [ref("project_task_publish_book")],
- {"lang": "en_US", "active_model": "ir.ui.menu", "active_ids": [ref("project.menu_action_view_task")],
- "tz": False, "active_id": ref("project.menu_action_view_task"), })
-
--
- Test the delegate wizard
--
- Creating a delegate task 'Publish the References' of 15 hours, renaming parent task to 'CHECK Publish the References' of 1 hour
--
- !record {model: project.task.delegate, id: project_task_publish_book_delegate}:
- name: Publish the References
- new_task_description: aaa
- planned_hours: 15.0
- planned_hours_me: 1.0
- prefix: 'CHECK: Publish the References'
- state: pending
- user_id: base.user_demo
-
--
- Validating the delegate task
--
- !python {model: project.task.delegate}: |
- self.delegate(cr, uid, [ref("project_task_publish_book_delegate")],
- {"lang": "en_US", "active_model": "project.task", "tz": False, "record_id":
- 4, "active_ids": [ref("project_task_publish_book")], "active_id": ref("project_task_publish_book"),
- })
-
--
- Check if parent task 'CHECK Publish the References' is in pending state
--
- !assert {model: project.task, id: project_task_publish_book, severity: error, string: "Task must be in pending state after delegation"}:
- - state == "pending"
--
- Creating a delegate task 'Prepare a book that gives functional overview of OpenERP'
--
- !record {model: project.task, id: project_task_delegate_openerp_tutorial}:
- name: Prepare a book that gives functional overview of OpenERP
- planned_hours: 30.0
- project_id: project.project_project_openerpdocumentation0
- remaining_hours: 30.0
- state: draft
-
--
- Open the task
--
- !python {model: project.task}: |
- self.do_open(cr, uid, [ref("project_task_delegate_openerp_tutorial")],
- {"lang": "en_US", "active_model": "ir.ui.menu", "active_ids": [ref("project.menu_action_view_task")],
- "tz": False, "active_id": ref("project.menu_action_view_task"), })
-
--
- Creating a delegate task 'Prepare a technical reference for creating your modules'
--
- !record {model: project.task, id: project_task_delegate_developer_book}:
- name: Prepare a technical reference for creating your modules
- planned_hours: 30.0
- project_id: project_project_openerpdocumentation0
- remaining_hours: 30.0
- state: draft
-
--
- Open the task
--
- !python {model: project.task}: |
- self.do_open(cr, uid, [ref("project_task_delegate_developer_book")],
- {"lang": "en_US", "active_model": "ir.ui.menu", "active_ids": [ref("project.menu_action_view_task")],
- "tz": False, "active_id": ref("project.menu_action_view_task"), })
-
--
- Delegate task 'Develop book for Technical and Functional reference' to these tasks and make it pending
--
- !record {model: project.task, id: project_task_documentation_book}:
- child_ids:
- - project.project_task_delegate_openerp_tutorial
- - project.project_task_delegate_developer_book
- planned_hours: 20.0
- state: pending
-
--
- Creating a delegate task 'Prepare documentation for Module Development'
--
- !record {model: project.task, id: project_task_delegate_module_develop}:
- name: Prepare documentation for Module Development
- planned_hours: 30.0
- project_id: project.project_project_openerpdocumentation0
- remaining_hours: 30.0
- state: draft
-
-
--
- Creating a delegate 'Prepare documentation for Business Process Development'
--
- !record {model: project.task, id: project_task_delegate_business_process_develop}:
- name: Prepare documentation for Business Process Development
- planned_hours: 30.0
- project_id: project_project_openerpdocumentation0
- remaining_hours: 30.0
- state: draft
-
--
- Delegate task 'Prepare a technical reference for creating your modules' to these tasks and make it pending
--
- !record {model: project.task, id: project_task_delegate_developer_book}:
- child_ids:
- - project.project_task_delegate_module_develop
- - project.project_task_delegate_business_process_develop
- planned_hours: 20.0
- state: pending
-
--
- Open the task
--
- !python {model: project.task}: |
- self.do_open(cr, uid, [ref("project_task_delegate_module_develop")],
- {"lang": "en_US", "active_model": "ir.ui.menu", "active_ids": [ref("project.menu_action_view_task")],
- "tz": False, "active_id": ref("project.menu_action_view_task"), })
-
--
- Open the task
--
- !python {model: project.task}: |
- self.do_open(cr, uid, [ref("project_task_delegate_business_process_develop")],
- {"lang": "en_US", "active_model": "ir.ui.menu", "active_ids": [ref("project.menu_action_view_task")],
- "tz": False, "active_id": ref("project.menu_action_view_task"), })
-
--
- Check if 'Prepare a technical reference for creating your modules' in pending state
--
- !assert {model: project.task, id: project_task_delegate_developer_book, severity: error, string: Task must be in pending state}:
- - state == "pending"
-
--
- Close the child task 'Prepare documentation for Module Development'
--
- !python {model: project.task}: |
- self.do_close(cr, uid, [ref("project_task_delegate_module_develop")], {"lang": "en_US",
- "active_ids": [ref("project.menu_action_view_task")], "tz": False, "active_model":
- "ir.ui.menu", "section_id": False, "search_default_project_id": False, "search_default_user_id":
- 1, "search_default_current": 1, "mail_send": False, "active_id": ref("project.menu_action_view_task"),
- })
-
--
- Close the child task 'Prepare documentation for Business Process Development'
--
- !python {model: project.task}: |
- self.do_close(cr, uid, [ref("project_task_delegate_business_process_develop")], {"lang": "en_US",
- "active_ids": [ref("project.menu_action_view_task")], "tz": False, "active_model":
- "ir.ui.menu", "section_id": False, "search_default_project_id": False, "search_default_user_id":
- 1, "search_default_current": 1, "mail_send": False, "active_id": ref("project.menu_action_view_task"),
- })
-
--
- Parent task 'Prepare a technical reference for creating your modules' task must now be in open state
--
- !assert {model: project.task, id: project_task_delegate_developer_book, severity: error, string: Task is in done state}:
- - state == "open"
-
-
--
- Check if task 'Develop book for Technical and Functional reference' in pending state
--
- !assert {model: project.task, id: project_task_documentation_book, severity: error, string: Task is in pending state}:
- - state == "pending"
-
--
- Close the child task 'Prepare a technical reference for creating your modules'
--
- !python {model: project.task}: |
- self.do_close(cr, uid, [ref("project_task_delegate_developer_book")], {"lang": "en_US",
- "active_ids": [ref("project.menu_action_view_task")], "tz": False, "active_model":
- "ir.ui.menu", "section_id": False, "search_default_project_id": False, "search_default_user_id":
- 1, "search_default_current": 1, "mail_send": False, "active_id": ref("project.menu_action_view_task"),
- })
-
--
- Close the child task 'Prepare a book that gives functional overview of OpenERP'
--
- !python {model: project.task}: |
- self.do_close(cr, uid, [ref("project_task_delegate_openerp_tutorial")], {"lang": "en_US",
- "active_ids": [ref("project.menu_action_view_task")], "tz": False, "active_model":
- "ir.ui.menu", "section_id": False, "search_default_project_id": False, "search_default_user_id":
- 1, "search_default_current": 1, "mail_send": False, "active_id": ref("project.menu_action_view_task"),
- })
-
--
- Parent task 'Develop book for Technical and Functional reference' must be now in open state
--
- !assert {model: project.task, id: project_task_documentation_book, severity: error, string: Task is in done state}:
- - state == "open"
diff --git a/addons/project/wizard/project_task_delegate.py b/addons/project/wizard/project_task_delegate.py
index efadc3f124b..544165dc02b 100644
--- a/addons/project/wizard/project_task_delegate.py
+++ b/addons/project/wizard/project_task_delegate.py
@@ -63,25 +63,25 @@ class project_task_delegate(osv.osv_memory):
task_name =tools.ustr(task.name)
if 'project_id' in fields:
- res.update({'project_id': task.project_id and task.project_id.id})
+ res['project_id'] = int(task.project_id.id) if task.project_id else False
if 'name' in fields:
if task_name.startswith(_('CHECK: ')):
newname = tools.ustr(task_name).replace(_('CHECK: '), '')
else:
newname = tools.ustr(task_name or '')
- res.update({'name': newname})
+ res['name'] = newname
if 'planned_hours' in fields:
- res.update({'planned_hours': task.remaining_hours or 0.0})
+ res['planned_hours'] = task.remaining_hours or 0.0
if 'prefix' in fields:
if task_name.startswith(_('CHECK: ')):
newname = tools.ustr(task_name).replace(_('CHECK: '), '')
else:
newname = tools.ustr(task_name or '')
prefix = _('CHECK: %s') % newname
- res.update({'prefix': prefix})
+ res['prefix'] = prefix
if 'new_task_description' in fields:
- res.update({'new_task_description': task.description})
+ res['new_task_description'] = task.description
return res
diff --git a/addons/project_caldav/i18n/hr.po b/addons/project_caldav/i18n/hr.po
new file mode 100644
index 00000000000..ddd7ab55739
--- /dev/null
+++ b/addons/project_caldav/i18n/hr.po
@@ -0,0 +1,576 @@
+# Croatian translation for openobject-addons
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2011-01-11 11:15+0000\n"
+"PO-Revision-Date: 2011-12-19 17:39+0000\n"
+"Last-Translator: Goran Kliska \n"
+"Language-Team: Croatian \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-12-20 04:50+0000\n"
+"X-Generator: Launchpad (build 14538)\n"
+
+#. module: project_caldav
+#: help:project.task,exdate:0
+msgid ""
+"This property defines the list of date/time exceptions for a recurring "
+"calendar component."
+msgstr ""
+
+#. module: project_caldav
+#: field:project.task,we:0
+msgid "Wed"
+msgstr "Sri"
+
+#. module: project_caldav
+#: selection:project.task,rrule_type:0
+msgid "Monthly"
+msgstr "Mjesečno"
+
+#. module: project_caldav
+#: help:project.task,recurrency:0
+msgid "Recurrent Meeting"
+msgstr "Ponavljajući sastanak"
+
+#. module: project_caldav
+#: selection:project.task,week_list:0
+msgid "Sunday"
+msgstr "Nedjelja"
+
+#. module: project_caldav
+#: selection:project.task,byday:0
+msgid "Fourth"
+msgstr "Četvrti"
+
+#. module: project_caldav
+#: field:project.task,show_as:0
+msgid "Show as"
+msgstr "Prikaži kao"
+
+#. module: project_caldav
+#: view:project.task:0
+msgid "Assignees details"
+msgstr ""
+
+#. module: project_caldav
+#: field:project.task,day:0
+#: selection:project.task,select1:0
+msgid "Date of month"
+msgstr "Dan u mjesecu"
+
+#. module: project_caldav
+#: selection:project.task,class:0
+msgid "Public"
+msgstr "Javni"
+
+#. module: project_caldav
+#: field:project.task,base_calendar_url:0
+msgid "Caldav URL"
+msgstr ""
+
+#. module: project_caldav
+#: selection:project.task,month_list:0
+msgid "March"
+msgstr "Ožujak"
+
+#. module: project_caldav
+#: constraint:project.task:0
+msgid "Error ! You cannot create recursive tasks."
+msgstr ""
+
+#. module: project_caldav
+#: selection:project.task,week_list:0
+msgid "Friday"
+msgstr "Petak"
+
+#. module: project_caldav
+#: field:project.task,allday:0
+msgid "All Day"
+msgstr "Cijeli dan"
+
+#. module: project_caldav
+#: selection:project.task,show_as:0
+msgid "Free"
+msgstr "Slobodno"
+
+#. module: project_caldav
+#: field:project.task,mo:0
+msgid "Mon"
+msgstr "Pon"
+
+#. module: project_caldav
+#: model:ir.model,name:project_caldav.model_project_task
+msgid "Task"
+msgstr "Zadatak"
+
+#. module: project_caldav
+#: selection:project.task,byday:0
+msgid "Last"
+msgstr "Posljednji"
+
+#. module: project_caldav
+#: selection:project.task,freq:0
+msgid "Days"
+msgstr "Dana"
+
+#. module: project_caldav
+#: selection:project.task,freq:0
+msgid "No Repeat"
+msgstr ""
+
+#. module: project_caldav
+#: selection:project.task,rrule_type:0
+msgid "Yearly"
+msgstr ""
+
+#. module: project_caldav
+#: view:project.task:0
+msgid "Recurrency Option"
+msgstr ""
+
+#. module: project_caldav
+#: field:project.task,tu:0
+msgid "Tue"
+msgstr ""
+
+#. module: project_caldav
+#: field:project.task,end_date:0
+msgid "Repeat Until"
+msgstr ""
+
+#. module: project_caldav
+#: field:project.task,organizer:0
+#: field:project.task,organizer_id:0
+msgid "Organizer"
+msgstr ""
+
+#. module: project_caldav
+#: help:project.task,edit_all:0
+msgid "Edit all Occurrences of recurrent Meeting."
+msgstr ""
+
+#. module: project_caldav
+#: field:project.task,sa:0
+msgid "Sat"
+msgstr ""
+
+#. module: project_caldav
+#: field:project.task,attendee_ids:0
+msgid "Attendees"
+msgstr ""
+
+#. module: project_caldav
+#: field:project.task,su:0
+msgid "Sun"
+msgstr ""
+
+#. module: project_caldav
+#: selection:project.task,select1:0
+msgid "Day of month"
+msgstr ""
+
+#. module: project_caldav
+#: field:project.task,location:0
+msgid "Location"
+msgstr ""
+
+#. module: project_caldav
+#: view:project.task:0
+msgid "Mail TO"
+msgstr ""
+
+#. module: project_caldav
+#: selection:project.task,freq:0
+msgid "Weeks"
+msgstr ""
+
+#. module: project_caldav
+#: field:project.task,select1:0
+msgid "Option"
+msgstr ""
+
+#. module: project_caldav
+#: selection:project.task,class:0
+msgid "Confidential"
+msgstr ""
+
+#. module: project_caldav
+#: selection:project.task,freq:0
+msgid "Hours"
+msgstr ""
+
+#. module: project_caldav
+#: field:project.task,recurrent_uid:0
+msgid "Recurrent ID"
+msgstr ""
+
+#. module: project_caldav
+#: selection:project.task,month_list:0
+msgid "July"
+msgstr ""
+
+#. module: project_caldav
+#: field:project.task,th:0
+msgid "Thu"
+msgstr ""
+
+#. module: project_caldav
+#: selection:project.task,end_type:0
+msgid "Forever"
+msgstr ""
+
+#. module: project_caldav
+#: help:project.task,count:0
+msgid "Repeat x times"
+msgstr ""
+
+#. module: project_caldav
+#: selection:project.task,rrule_type:0
+msgid "Daily"
+msgstr ""
+
+#. module: project_caldav
+#: field:project.task,class:0
+msgid "Mark as"
+msgstr ""
+
+#. module: project_caldav
+#: field:project.task,count:0
+msgid "Repeat"
+msgstr ""
+
+#. module: project_caldav
+#: help:project.task,rrule_type:0
+msgid "Let the event automatically repeat at that interval"
+msgstr ""
+
+#. module: project_caldav
+#: selection:project.task,byday:0
+msgid "First"
+msgstr ""
+
+#. module: project_caldav
+#: code:addons/project_caldav/project_caldav.py:67
+#, python-format
+msgid "Tasks"
+msgstr ""
+
+#. module: project_caldav
+#: selection:project.task,month_list:0
+msgid "September"
+msgstr ""
+
+#. module: project_caldav
+#: selection:project.task,month_list:0
+msgid "December"
+msgstr ""
+
+#. module: project_caldav
+#: selection:project.task,week_list:0
+msgid "Tuesday"
+msgstr ""
+
+#. module: project_caldav
+#: field:project.task,month_list:0
+msgid "Month"
+msgstr ""
+
+#. module: project_caldav
+#: model:ir.module.module,shortdesc:project_caldav.module_meta_information
+msgid "CalDAV for task management"
+msgstr ""
+
+#. module: project_caldav
+#: field:project.task,vtimezone:0
+msgid "Timezone"
+msgstr ""
+
+#. module: project_caldav
+#: selection:project.task,rrule_type:0
+msgid "Weekly"
+msgstr ""
+
+#. module: project_caldav
+#: field:project.task,edit_all:0
+msgid "Edit All"
+msgstr ""
+
+#. module: project_caldav
+#: field:project.task,fr:0
+msgid "Fri"
+msgstr ""
+
+#. module: project_caldav
+#: help:project.task,location:0
+msgid "Location of Event"
+msgstr ""
+
+#. module: project_caldav
+#: field:project.task,rrule:0
+msgid "Recurrent Rule"
+msgstr ""
+
+#. module: project_caldav
+#: view:project.task:0
+msgid "From"
+msgstr ""
+
+#. module: project_caldav
+#: view:project.task:0
+msgid "Reminder"
+msgstr ""
+
+#. module: project_caldav
+#: model:ir.module.module,description:project_caldav.module_meta_information
+msgid " Synchronize between Project task and Caldav Vtodo."
+msgstr ""
+
+#. module: project_caldav
+#: view:project.task:0
+msgid "Assignees Detail"
+msgstr ""
+
+#. module: project_caldav
+#: selection:project.task,month_list:0
+msgid "August"
+msgstr ""
+
+#. module: project_caldav
+#: selection:project.task,week_list:0
+msgid "Monday"
+msgstr ""
+
+#. module: project_caldav
+#: selection:project.task,byday:0
+msgid "Third"
+msgstr ""
+
+#. module: project_caldav
+#: selection:project.task,month_list:0
+msgid "June"
+msgstr ""
+
+#. module: project_caldav
+#: field:project.task,write_date:0
+msgid "Write Date"
+msgstr ""
+
+#. module: project_caldav
+#: selection:project.task,month_list:0
+msgid "November"
+msgstr ""
+
+#. module: project_caldav
+#: selection:project.task,month_list:0
+msgid "October"
+msgstr ""
+
+#. module: project_caldav
+#: selection:project.task,month_list:0
+msgid "January"
+msgstr ""
+
+#. module: project_caldav
+#: selection:project.task,freq:0
+msgid "Months"
+msgstr ""
+
+#. module: project_caldav
+#: selection:project.task,week_list:0
+msgid "Wednesday"
+msgstr ""
+
+#. module: project_caldav
+#: view:project.task:0
+msgid "Repeat Times"
+msgstr ""
+
+#. module: project_caldav
+#: selection:project.task,end_type:0
+msgid "End date"
+msgstr ""
+
+#. module: project_caldav
+#: view:project.task:0
+msgid "To"
+msgstr ""
+
+#. module: project_caldav
+#: field:project.task,recurrent_id:0
+msgid "Recurrent ID date"
+msgstr ""
+
+#. module: project_caldav
+#: field:project.task,freq:0
+msgid "Frequency"
+msgstr ""
+
+#. module: project_caldav
+#: help:project.task,interval:0
+msgid "Repeat every (Days/Week/Month/Year)"
+msgstr ""
+
+#. module: project_caldav
+#: view:project.task:0
+msgid "of"
+msgstr ""
+
+#. module: project_caldav
+#: selection:project.task,show_as:0
+msgid "Busy"
+msgstr ""
+
+#. module: project_caldav
+#: field:project.task,interval:0
+msgid "Repeat every"
+msgstr ""
+
+#. module: project_caldav
+#: selection:project.task,end_type:0
+msgid "Fix amout of times"
+msgstr ""
+
+#. module: project_caldav
+#: field:project.task,recurrency:0
+msgid "Recurrent"
+msgstr ""
+
+#. module: project_caldav
+#: view:project.task:0
+#: field:project.task,rrule_type:0
+msgid "Recurrency"
+msgstr ""
+
+#. module: project_caldav
+#: selection:project.task,week_list:0
+msgid "Thursday"
+msgstr ""
+
+#. module: project_caldav
+#: field:project.task,exrule:0
+msgid "Exception Rule"
+msgstr ""
+
+#. module: project_caldav
+#: view:project.task:0
+msgid "Other"
+msgstr ""
+
+#. module: project_caldav
+#: view:project.task:0
+msgid "Details"
+msgstr ""
+
+#. module: project_caldav
+#: help:project.task,exrule:0
+msgid ""
+"Defines a rule or repeating pattern of time to exclude from the recurring "
+"rule."
+msgstr ""
+
+#. module: project_caldav
+#: selection:project.task,freq:0
+msgid "Years"
+msgstr ""
+
+#. module: project_caldav
+#: help:project.task,rrule:0
+msgid ""
+"Defines a rule or repeating pattern for recurring events\n"
+"e.g.: Every other month on the last Sunday of the month for 10 occurrences: "
+" FREQ=MONTHLY;INTERVAL=2;COUNT=10;BYDAY=-1SU"
+msgstr ""
+
+#. module: project_caldav
+#: selection:project.task,month_list:0
+msgid "May"
+msgstr ""
+
+#. module: project_caldav
+#: view:project.task:0
+msgid "Assign Task"
+msgstr ""
+
+#. module: project_caldav
+#: view:project.task:0
+msgid "Recurrency Rule"
+msgstr ""
+
+#. module: project_caldav
+#: selection:project.task,month_list:0
+msgid "February"
+msgstr ""
+
+#. module: project_caldav
+#: field:project.task,exdate:0
+msgid "Exception Date/Times"
+msgstr ""
+
+#. module: project_caldav
+#: field:project.task,alarm_id:0
+#: field:project.task,base_calendar_alarm_id:0
+msgid "Alarm"
+msgstr ""
+
+#. module: project_caldav
+#: selection:project.task,month_list:0
+msgid "April"
+msgstr ""
+
+#. module: project_caldav
+#: field:project.task,week_list:0
+msgid "Weekday"
+msgstr ""
+
+#. module: project_caldav
+#: field:project.task,byday:0
+msgid "By day"
+msgstr ""
+
+#. module: project_caldav
+#: view:project.task:0
+msgid "The"
+msgstr ""
+
+#. module: project_caldav
+#: help:project.task,alarm_id:0
+msgid "Set an alarm at this time, before the event occurs"
+msgstr ""
+
+#. module: project_caldav
+#: selection:project.task,class:0
+msgid "Private"
+msgstr ""
+
+#. module: project_caldav
+#: selection:project.task,byday:0
+msgid "Second"
+msgstr ""
+
+#. module: project_caldav
+#: field:project.task,end_type:0
+msgid "Way to end reccurency"
+msgstr ""
+
+#. module: project_caldav
+#: field:project.task,date:0
+#: field:project.task,duration:0
+msgid "Duration"
+msgstr ""
+
+#. module: project_caldav
+#: selection:project.task,week_list:0
+msgid "Saturday"
+msgstr ""
+
+#. module: project_caldav
+#: selection:project.task,byday:0
+msgid "Fifth"
+msgstr ""
diff --git a/addons/project_caldav/project_caldav_view.xml b/addons/project_caldav/project_caldav_view.xml
index 0d566be4619..c88892eae11 100644
--- a/addons/project_caldav/project_caldav_view.xml
+++ b/addons/project_caldav/project_caldav_view.xml
@@ -57,20 +57,6 @@
-
-
- project.task.caldav.form2
- project.task
-
- form
-
-
-
-
-
-
-
- project.task.caldav.form3
diff --git a/addons/project_gtd/__openerp__.py b/addons/project_gtd/__openerp__.py
index f0c50dbe553..7dae4706b70 100644
--- a/addons/project_gtd/__openerp__.py
+++ b/addons/project_gtd/__openerp__.py
@@ -57,10 +57,10 @@ performing those tasks.
],
'demo_xml': ['project_gtd_demo.xml'],
'test':[
- 'test/gtd_test.yml'
+ 'test/task_timebox.yml'
],
'installable': True,
- 'core': True,
+ 'application': True,
'active': False,
'certificate': '0043525236301',
}
diff --git a/addons/project_gtd/security/ir.model.access.csv b/addons/project_gtd/security/ir.model.access.csv
index 8e85047c51c..d85ac8a5d0c 100644
--- a/addons/project_gtd/security/ir.model.access.csv
+++ b/addons/project_gtd/security/ir.model.access.csv
@@ -1,5 +1,5 @@
-"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
-"access_project_gtd_context_user","project.gtd.context project user","model_project_gtd_context","project.group_project_user",1,0,0,0
-"access_project_gtd_timebox_user","project.gtd.timebox project user","model_project_gtd_timebox","project.group_project_user",1,0,0,0
-"access_project_gtd_context_manager","project.gtd.context project manager","model_project_gtd_context","project.group_project_manager",1,1,1,1
-"access_project_gtd_timebox_manager","project.gtd.timebox project manager","model_project_gtd_timebox","project.group_project_manager",1,1,1,1
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+access_project_gtd_context_user,project.gtd.context project user,model_project_gtd_context,project.group_project_user,1,0,0,0
+access_project_gtd_timebox_user,project.gtd.timebox project user,model_project_gtd_timebox,project.group_project_user,1,0,0,0
+access_project_gtd_context_manager,project.gtd.context project manager,model_project_gtd_context,project.group_project_manager,1,1,1,1
+access_project_gtd_timebox_manager,project.gtd.timebox project manager,model_project_gtd_timebox,project.group_project_manager,1,1,1,1
diff --git a/addons/project_gtd/static/src/img/icon.png b/addons/project_gtd/static/src/img/icon.png
new file mode 100644
index 00000000000..2f888a90a60
Binary files /dev/null and b/addons/project_gtd/static/src/img/icon.png differ
diff --git a/addons/project_gtd/test/gtd_test.yml b/addons/project_gtd/test/gtd_test.yml
deleted file mode 100644
index 0583bc7e8e0..00000000000
--- a/addons/project_gtd/test/gtd_test.yml
+++ /dev/null
@@ -1,78 +0,0 @@
--
- Create a task 'Develop time management module' with weekly timebox
--
- !record {model: project.task, id: project_task_developtimemanagementmodule0}:
- name: Develop time management module
- planned_hours: 15.0
- project_id: project.project_project_22
- remaining_hours: 15.0
- state: draft
- timebox_id: project_gtd.timebox_weekly
-
-
--
- Open the task
--
- !python {model: project.task}: |
- self.do_open(cr, uid, [ref("project_task_developtimemanagementmodule0")], {"lang":
- "en_US", "project_id": False, "tz": False, "active_model": "ir.ui.menu",
- "department_id": False, "section_id": False, "search_default_project_id":
- False, "search_default_user_id": 1, "search_default_current": 1, "active_ids":
- [ref("project.menu_action_view_task")], "active_id": ref("project.menu_action_view_task"),
- })
-
--
- Create time box for next week
--
- !record {model: project.gtd.timebox, id: project_gtd_timebox_nextweek0}:
- name: Next Week
- sequence: 0.0
-
--
- Create time box for tomorrow
--
- !record {model: project.gtd.timebox, id: project_gtd_timebox_tomorrow1}:
- name: Tomorrow
- sequence: 0.0
-
--
- Planify the task from weekly timebox to tomorrow timebox
--
- !record {model: project.timebox.fill.plan, id: project_timebox_fill_plan_0}:
- task_ids:
- - project_task_developtimemanagementmodule0
- timebox_id: project_gtd.timebox_weekly
- timebox_to_id: project_gtd_timebox_tomorrow1
-
-
--
- Set the task to tomorrow timebox
--
- !python {model: project.timebox.fill.plan}: |
- self.process(cr, uid, [ref("project_timebox_fill_plan_0")], {"lang": "en_US",
- "project_id": False, "tz": False, "active_model": "project.gtd.timebox",
- "department_id": False, "section_id": False, "record_id": 1, "active_ids":
- [ref("project_gtd.timebox_daily")], "active_id": ref("project_gtd.timebox_daily"),
- })
-
--
- Check if task set to tomorrow timebox
--
- !assert {model: project.task, id: project_task_developtimemanagementmodule0, string: Task set to tomorrow timebox}:
- - timebox_id.id == ref("project_gtd_timebox_tomorrow1")
-
--
- Empty Timebox for tomorrow
--
- !python {model: project.timebox.empty}: |
- self._empty(cr, uid, {"lang": "en_US",
- "project_id": False, "tz": False, "active_model": "project.gtd.timebox",
- "department_id": False, "section_id": False, "record_id": 1, "active_ids":
- [ref("project_gtd_timebox_tomorrow1")], "active_id": ref("project_gtd_timebox_tomorrow1"),
- })
-
--
- Check task 'Develop time management module' is no more in tomorrow timebox
--
- !assert {model: project.task, id: project_task_developtimemanagementmodule0, string: Task is not in tomorrow timebox}:
- - timebox_id.id != ref("project_gtd_timebox_tomorrow1")
diff --git a/addons/project_gtd/test/task_timebox.yml b/addons/project_gtd/test/task_timebox.yml
new file mode 100644
index 00000000000..8efa7219b21
--- /dev/null
+++ b/addons/project_gtd/test/task_timebox.yml
@@ -0,0 +1,45 @@
+-
+ In order to test the process of Timebox in Project Management module,
+ I set my task from Daily to Weekly Timebox through Plannify Timebox
+-
+ !record {model: project.timebox.fill.plan, id: plan_id}:
+ task_ids: [project.project_task_10]
+ timebox_id: timebox_daily
+ timebox_to_id: timebox_weekly
+-
+ I set the task from Daily Timebox to Weekly Timebox
+-
+ !python {model: project.timebox.fill.plan}: |
+ self.process(cr, uid, [ref("plan_id")])
+-
+ I check task is set to Weekly Timebox
+-
+ !assert {model: project.task, id: project.project_task_10, string: Task should be set to weekly timebox}:
+ - timebox_id.id == ref("timebox_weekly")
+-
+ I Empty the Weekly Timebox
+-
+ !python {model: project.timebox.empty}: |
+ self._empty(cr, uid, {"active_model": "project.gtd.timebox",
+ "active_ids":[ref("timebox_weekly")],
+ "active_id": ref("timebox_weekly"),
+ })
+-
+ I check task 'Develop Module in Sale Management' is no more in Weekly Timebox
+-
+ !assert {model: project.task, id: project.project_task_10 , string: Task is not in Weekly Timebox }:
+ - timebox_id.id != ref("timebox_weekly")
+-
+ I set Previous Timebox on task
+-
+ !python {model: project.task}: |
+ previous_timebox = self.prev_timebox(cr, uid, [ref("project.project_task_10")],
+ {'active_ids': [ref("project_gtd.menu_open_gtd_timebox_tree")],})
+ assert previous_timebox == True, "I set Previous Timebox on task"
+-
+ I set Next Timebox on task
+-
+ !python {model: project.task}: |
+ next_timebox = self.next_timebox(cr, uid, [ref("project.project_task_10")],
+ {'active_ids': [ref("project_gtd.menu_open_gtd_timebox_tree")],})
+ assert next_timebox == True, "I set Next Timebox on task"
\ No newline at end of file
diff --git a/addons/project_issue/__openerp__.py b/addons/project_issue/__openerp__.py
index 4f06222d76c..012f9b5e799 100644
--- a/addons/project_issue/__openerp__.py
+++ b/addons/project_issue/__openerp__.py
@@ -54,12 +54,14 @@ and decide on their status as they evolve.
],
'demo_xml': ['project_issue_demo.xml'],
'test': [
- 'test/convert_issue_to_task.yml',
- 'test/test_project_issue_states.yml'
+ 'test/subscribe_issue.yml',
+ 'test/issue_process.yml',
+ 'test/cancel_issue.yml',
+ 'test/issue_demo.yml'
],
'installable': True,
'active': False,
- 'core': True,
+ 'application': True,
'certificate' : '001236490750848623845',
}
diff --git a/addons/project_issue/board_project_issue_view.xml b/addons/project_issue/board_project_issue_view.xml
index 216f01eba9f..4553276057f 100644
--- a/addons/project_issue/board_project_issue_view.xml
+++ b/addons/project_issue/board_project_issue_view.xml
@@ -56,14 +56,14 @@
board.boardform
-
-
+
+
-
+
@@ -80,7 +80,7 @@
@@ -147,12 +147,12 @@
form
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/addons/project_issue/i18n/hr.po b/addons/project_issue/i18n/hr.po
new file mode 100644
index 00000000000..0b778e24777
--- /dev/null
+++ b/addons/project_issue/i18n/hr.po
@@ -0,0 +1,958 @@
+# Croatian translation for openobject-addons
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2011-01-11 11:15+0000\n"
+"PO-Revision-Date: 2011-12-19 17:35+0000\n"
+"Last-Translator: Goran Kliska \n"
+"Language-Team: Croatian \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-12-20 04:50+0000\n"
+"X-Generator: Launchpad (build 14538)\n"
+
+#. module: project_issue
+#: field:project.issue.report,delay_open:0
+msgid "Avg. Delay to Open"
+msgstr ""
+
+#. module: project_issue
+#: view:project.issue:0
+#: view:project.issue.report:0
+msgid "Group By..."
+msgstr "Grupiraj po..."
+
+#. module: project_issue
+#: field:project.issue,working_hours_open:0
+msgid "Working Hours to Open the Issue"
+msgstr ""
+
+#. module: project_issue
+#: constraint:project.project:0
+msgid "Error! project start-date must be lower then project end-date."
+msgstr ""
+
+#. module: project_issue
+#: field:project.issue,date_open:0
+msgid "Opened"
+msgstr "Otvoren"
+
+#. module: project_issue
+#: field:project.issue.report,opening_date:0
+msgid "Date of Opening"
+msgstr "Datum otvaranja"
+
+#. module: project_issue
+#: selection:project.issue.report,month:0
+msgid "March"
+msgstr "Ožujak"
+
+#. module: project_issue
+#: field:project.issue,progress:0
+msgid "Progress (%)"
+msgstr "Progres (%)"
+
+#. module: project_issue
+#: field:project.issue,company_id:0
+#: view:project.issue.report:0
+#: field:project.issue.report,company_id:0
+msgid "Company"
+msgstr "Organizacija"
+
+#. module: project_issue
+#: field:project.issue,email_cc:0
+msgid "Watchers Emails"
+msgstr "Emailovi promatrača"
+
+#. module: project_issue
+#: view:project.issue.report:0
+msgid "Close Working hours"
+msgstr ""
+
+#. module: project_issue
+#: model:ir.model,name:project_issue.model_project_issue_version
+msgid "project.issue.version"
+msgstr ""
+
+#. module: project_issue
+#: field:project.issue,day_open:0
+msgid "Days to Open"
+msgstr "Dana za otvaranje"
+
+#. module: project_issue
+#: code:addons/project_issue/project_issue.py:360
+#, python-format
+msgid ""
+"You cannot escalate this issue.\n"
+"The relevant Project has not configured the Escalation Project!"
+msgstr ""
+
+#. module: project_issue
+#: constraint:project.project:0
+msgid "Error! You cannot assign escalation to the same project!"
+msgstr "Greška! Ne možete dodjeliti eskalaciju istom projektu!"
+
+#. module: project_issue
+#: view:project.issue.report:0
+msgid "Date Closed"
+msgstr "Datum zatvaranja"
+
+#. module: project_issue
+#: view:project.issue.report:0
+#: field:project.issue.report,day:0
+msgid "Day"
+msgstr "Dan"
+
+#. module: project_issue
+#: view:project.issue:0
+msgid "Add Internal Note"
+msgstr ""
+
+#. module: project_issue
+#: field:project.issue,task_id:0
+#: view:project.issue.report:0
+#: field:project.issue.report,task_id:0
+msgid "Task"
+msgstr "Zadatak"
+
+#. module: project_issue
+#: view:board.board:0
+msgid "Issues By Stage"
+msgstr ""
+
+#. module: project_issue
+#: field:project.issue,partner_mobile:0
+msgid "Mobile"
+msgstr ""
+
+#. module: project_issue
+#: field:project.issue,message_ids:0
+msgid "Messages"
+msgstr ""
+
+#. module: project_issue
+#: model:ir.model,name:project_issue.model_project_project
+#: view:project.issue:0
+#: field:project.issue,project_id:0
+#: view:project.issue.report:0
+#: field:project.issue.report,project_id:0
+msgid "Project"
+msgstr ""
+
+#. module: project_issue
+#: model:ir.actions.act_window,name:project_issue.action_view_my_open_project_issue_tree
+msgid "My Open Project issues"
+msgstr ""
+
+#. module: project_issue
+#: selection:project.issue,state:0
+#: selection:project.issue.report,state:0
+msgid "Cancelled"
+msgstr ""
+
+#. module: project_issue
+#: code:addons/project_issue/project_issue.py:360
+#, python-format
+msgid "Warning !"
+msgstr ""
+
+#. module: project_issue
+#: field:project.issue.report,date_closed:0
+msgid "Date of Closing"
+msgstr ""
+
+#. module: project_issue
+#: view:project.issue:0
+msgid "Issue Tracker Search"
+msgstr ""
+
+#. module: project_issue
+#: field:project.issue.report,working_hours_open:0
+msgid "Avg. Working Hours to Open"
+msgstr ""
+
+#. module: project_issue
+#: field:project.issue,date_action_next:0
+msgid "Next Action"
+msgstr ""
+
+#. module: project_issue
+#: help:project.project,project_escalation_id:0
+msgid ""
+"If any issue is escalated from the current Project, it will be listed under "
+"the project selected here."
+msgstr ""
+
+#. module: project_issue
+#: view:project.issue:0
+msgid "Extra Info"
+msgstr ""
+
+#. module: project_issue
+#: model:ir.actions.act_window,help:project_issue.action_project_issue_report
+msgid ""
+"This report on the project issues allows you to analyse the quality of your "
+"support or after-sales services. You can track the issues per age. You can "
+"analyse the time required to open or close an issue, the number of email to "
+"exchange and the time spent on average by issues."
+msgstr ""
+
+#. module: project_issue
+#: view:project.issue:0
+#: field:project.issue,partner_id:0
+#: view:project.issue.report:0
+#: field:project.issue.report,partner_id:0
+msgid "Partner"
+msgstr ""
+
+#. module: project_issue
+#: code:addons/project_issue/project_issue.py:473
+#, python-format
+msgid " (copy)"
+msgstr ""
+
+#. module: project_issue
+#: view:project.issue:0
+msgid "Previous"
+msgstr ""
+
+#. module: project_issue
+#: view:project.issue:0
+msgid "Statistics"
+msgstr ""
+
+#. module: project_issue
+#: view:project.issue:0
+msgid "Convert To Task"
+msgstr ""
+
+#. module: project_issue
+#: model:ir.actions.act_window,name:project_issue.action_project_issue_report
+#: model:ir.ui.menu,name:project_issue.menu_project_issue_report_tree
+#: view:project.issue.report:0
+msgid "Issues Analysis"
+msgstr ""
+
+#. module: project_issue
+#: field:project.issue.version,name:0
+msgid "Version Number"
+msgstr ""
+
+#. module: project_issue
+#: view:project.issue:0
+msgid "Next"
+msgstr ""
+
+#. module: project_issue
+#: view:project.issue:0
+#: field:project.issue,priority:0
+#: view:project.issue.report:0
+#: field:project.issue.report,priority:0
+msgid "Priority"
+msgstr ""
+
+#. module: project_issue
+#: view:project.issue:0
+msgid "Send New Email"
+msgstr ""
+
+#. module: project_issue
+#: view:project.issue:0
+#: field:project.issue,version_id:0
+#: view:project.issue.report:0
+#: field:project.issue.report,version_id:0
+msgid "Version"
+msgstr ""
+
+#. module: project_issue
+#: model:ir.module.module,shortdesc:project_issue.module_meta_information
+msgid "Issue Management in Project Management"
+msgstr ""
+
+#. module: project_issue
+#: view:board.board:0
+msgid "Pending Issues"
+msgstr ""
+
+#. module: project_issue
+#: view:project.issue.report:0
+msgid "Open Working Hours"
+msgstr ""
+
+#. module: project_issue
+#: model:ir.actions.act_window,name:project_issue.project_issue_categ_action
+msgid "Issue Categories"
+msgstr ""
+
+#. module: project_issue
+#: field:project.issue,email_from:0
+msgid "Email"
+msgstr ""
+
+#. module: project_issue
+#: field:project.issue,canal_id:0
+#: field:project.issue.report,canal_id:0
+msgid "Channel"
+msgstr ""
+
+#. module: project_issue
+#: selection:project.issue,priority:0
+#: selection:project.issue.report,priority:0
+msgid "Lowest"
+msgstr ""
+
+#. module: project_issue
+#: field:project.issue,create_date:0
+#: field:project.issue.report,creation_date:0
+msgid "Creation Date"
+msgstr ""
+
+#. module: project_issue
+#: model:ir.actions.act_window,name:project_issue.project_issue_version_action
+#: model:ir.ui.menu,name:project_issue.menu_project_issue_version_act
+msgid "Versions"
+msgstr ""
+
+#. module: project_issue
+#: field:project.issue,partner_phone:0
+msgid "Phone"
+msgstr ""
+
+#. module: project_issue
+#: view:project.issue:0
+msgid "Reset to Draft"
+msgstr ""
+
+#. module: project_issue
+#: view:project.issue:0
+msgid "Today"
+msgstr ""
+
+#. module: project_issue
+#: model:ir.actions.act_window,name:project_issue.open_board_project_issue
+#: model:ir.ui.menu,name:project_issue.menu_deshboard_project_issue
+msgid "Project Issue Dashboard"
+msgstr ""
+
+#. module: project_issue
+#: view:project.issue:0
+#: view:project.issue.report:0
+msgid "Done"
+msgstr ""
+
+#. module: project_issue
+#: selection:project.issue.report,month:0
+msgid "July"
+msgstr ""
+
+#. module: project_issue
+#: model:ir.ui.menu,name:project_issue.menu_project_issue_category_act
+msgid "Categories"
+msgstr ""
+
+#. module: project_issue
+#: view:project.issue:0
+#: view:project.issue.report:0
+#: field:project.issue.report,type_id:0
+msgid "Stage"
+msgstr ""
+
+#. module: project_issue
+#: view:project.issue:0
+msgid "History Information"
+msgstr ""
+
+#. module: project_issue
+#: model:ir.actions.act_window,name:project_issue.action_view_current_project_issue_tree
+#: model:ir.actions.act_window,name:project_issue.action_view_pending_project_issue_tree
+msgid "Project issues"
+msgstr ""
+
+#. module: project_issue
+#: view:project.issue:0
+msgid "Communication & History"
+msgstr ""
+
+#. module: project_issue
+#: view:project.issue.report:0
+msgid "My Open Project Issue"
+msgstr ""
+
+#. module: project_issue
+#: model:ir.actions.act_window,name:project_issue.action_view_my_project_issue_tree
+msgid "My Project Issues"
+msgstr ""
+
+#. module: project_issue
+#: view:project.issue:0
+msgid "Contact"
+msgstr ""
+
+#. module: project_issue
+#: view:board.board:0
+msgid "My Board"
+msgstr ""
+
+#. module: project_issue
+#: view:board.board:0
+msgid "My Issues"
+msgstr ""
+
+#. module: project_issue
+#: help:project.issue,canal_id:0
+msgid ""
+"The channels represent the different communication modes available with the "
+"customer. With each commercial opportunity, you can indicate the canall "
+"which is this opportunity source."
+msgstr ""
+
+#. module: project_issue
+#: model:ir.actions.act_window,help:project_issue.project_issue_version_action
+msgid ""
+"You can use the issues tracker in OpenERP to handle bugs in the software "
+"development project, to handle claims in after-sales services, etc. Define "
+"here the different versions of your products on which you can work on issues."
+msgstr ""
+
+#. module: project_issue
+#: code:addons/project_issue/project_issue.py:283
+#, python-format
+msgid "Tasks"
+msgstr ""
+
+#. module: project_issue
+#: field:project.issue.report,nbr:0
+msgid "# of Issues"
+msgstr ""
+
+#. module: project_issue
+#: selection:project.issue.report,month:0
+msgid "September"
+msgstr ""
+
+#. module: project_issue
+#: selection:project.issue.report,month:0
+msgid "December"
+msgstr ""
+
+#. module: project_issue
+#: view:project.issue:0
+msgid "Issue Tracker Tree"
+msgstr ""
+
+#. module: project_issue
+#: help:project.issue,assigned_to:0
+msgid "This is the current user to whom the related task have been assigned"
+msgstr ""
+
+#. module: project_issue
+#: view:project.issue:0
+#: view:project.issue.report:0
+#: field:project.issue.report,month:0
+msgid "Month"
+msgstr ""
+
+#. module: project_issue
+#: model:ir.model,name:project_issue.model_project_issue_report
+msgid "project.issue.report"
+msgstr ""
+
+#. module: project_issue
+#: code:addons/project_issue/project_issue.py:362
+#: view:project.issue:0
+#, python-format
+msgid "Escalate"
+msgstr ""
+
+#. module: project_issue
+#: model:crm.case.categ,name:project_issue.feature_request_categ
+msgid "Feature Requests"
+msgstr ""
+
+#. module: project_issue
+#: field:project.issue,write_date:0
+msgid "Update Date"
+msgstr ""
+
+#. module: project_issue
+#: model:ir.module.module,description:project_issue.module_meta_information
+msgid ""
+"\n"
+" This module provide Issues/Bugs Management in Project\n"
+" "
+msgstr ""
+
+#. module: project_issue
+#: view:project.issue:0
+#: field:project.issue,categ_id:0
+#: view:project.issue.report:0
+#: field:project.issue.report,categ_id:0
+msgid "Category"
+msgstr ""
+
+#. module: project_issue
+#: view:project.issue.report:0
+msgid "#Number of Project Issues"
+msgstr ""
+
+#. module: project_issue
+#: help:project.issue,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 ""
+
+#. module: project_issue
+#: selection:project.issue,state:0
+#: selection:project.issue.report,state:0
+msgid "Draft"
+msgstr ""
+
+#. module: project_issue
+#: selection:project.issue,priority:0
+#: selection:project.issue.report,priority:0
+msgid "Low"
+msgstr ""
+
+#. module: project_issue
+#: field:project.issue,date_closed:0
+#: selection:project.issue,state:0
+#: selection:project.issue.report,state:0
+msgid "Closed"
+msgstr ""
+
+#. module: project_issue
+#: field:project.issue.report,delay_close:0
+msgid "Avg. Delay to Close"
+msgstr ""
+
+#. module: project_issue
+#: view:project.issue:0
+#: selection:project.issue,state:0
+#: view:project.issue.report:0
+#: selection:project.issue.report,state:0
+msgid "Pending"
+msgstr ""
+
+#. module: project_issue
+#: view:project.issue:0
+msgid "Status"
+msgstr ""
+
+#. module: project_issue
+#: view:project.issue.report:0
+msgid "#Project Issues"
+msgstr ""
+
+#. module: project_issue
+#: view:board.board:0
+msgid "Current Issues"
+msgstr ""
+
+#. module: project_issue
+#: selection:project.issue.report,month:0
+msgid "August"
+msgstr ""
+
+#. module: project_issue
+#: selection:project.issue,priority:0
+#: selection:project.issue.report,priority:0
+msgid "Normal"
+msgstr ""
+
+#. module: project_issue
+#: view:project.issue:0
+msgid "Global CC"
+msgstr ""
+
+#. module: project_issue
+#: view:project.issue:0
+#: selection:project.issue,state:0
+msgid "To Do"
+msgstr ""
+
+#. module: project_issue
+#: selection:project.issue.report,month:0
+msgid "June"
+msgstr ""
+
+#. module: project_issue
+#: field:project.issue,day_close:0
+msgid "Days to Close"
+msgstr ""
+
+#. module: project_issue
+#: field:project.issue,active:0
+#: field:project.issue.version,active:0
+msgid "Active"
+msgstr ""
+
+#. module: project_issue
+#: selection:project.issue.report,month:0
+msgid "November"
+msgstr ""
+
+#. module: project_issue
+#: view:project.issue:0
+#: view:project.issue.report:0
+msgid "Extended Filters..."
+msgstr ""
+
+#. module: project_issue
+#: view:project.issue.report:0
+msgid "Search"
+msgstr ""
+
+#. module: project_issue
+#: selection:project.issue.report,month:0
+msgid "October"
+msgstr ""
+
+#. module: project_issue
+#: selection:project.issue.report,month:0
+msgid "January"
+msgstr ""
+
+#. module: project_issue
+#: view:project.issue:0
+msgid "Feature Tracker Tree"
+msgstr ""
+
+#. module: project_issue
+#: model:crm.case.categ,name:project_issue.bug_categ
+msgid "Bugs"
+msgstr ""
+
+#. module: project_issue
+#: view:board.board:0
+msgid "Issues By State"
+msgstr ""
+
+#. module: project_issue
+#: view:project.issue:0
+#: field:project.issue,date:0
+msgid "Date"
+msgstr ""
+
+#. module: project_issue
+#: field:project.issue,partner_address_id:0
+msgid "Partner Contact"
+msgstr ""
+
+#. module: project_issue
+#: field:project.issue,type_id:0
+msgid "Resolution"
+msgstr ""
+
+#. module: project_issue
+#: view:project.issue:0
+msgid "History"
+msgstr ""
+
+#. module: project_issue
+#: field:project.issue,assigned_to:0
+#: view:project.issue.report:0
+#: field:project.issue.report,assigned_to:0
+msgid "Assigned to"
+msgstr ""
+
+#. module: project_issue
+#: field:project.project,reply_to:0
+msgid "Reply-To Email Address"
+msgstr ""
+
+#. module: project_issue
+#: selection:project.issue,priority:0
+#: selection:project.issue.report,priority:0
+msgid "Highest"
+msgstr ""
+
+#. module: project_issue
+#: view:project.issue:0
+msgid "Attachments"
+msgstr ""
+
+#. module: project_issue
+#: view:project.issue:0
+msgid "Issue Tracker Form"
+msgstr ""
+
+#. module: project_issue
+#: view:project.issue:0
+#: field:project.issue,state:0
+#: view:project.issue.report:0
+#: field:project.issue.report,state:0
+msgid "State"
+msgstr ""
+
+#. module: project_issue
+#: view:project.issue:0
+msgid "General"
+msgstr ""
+
+#. module: project_issue
+#: view:project.issue.version:0
+msgid "Issue Version"
+msgstr ""
+
+#. module: project_issue
+#: view:project.issue:0
+msgid "Communication"
+msgstr ""
+
+#. module: project_issue
+#: view:project.issue:0
+msgid "Cancel"
+msgstr ""
+
+#. module: project_issue
+#: view:project.issue:0
+msgid "Close"
+msgstr ""
+
+#. module: project_issue
+#: view:project.issue:0
+#: selection:project.issue.report,state:0
+msgid "Open"
+msgstr ""
+
+#. module: project_issue
+#: model:ir.actions.act_window,name:project_issue.act_project_project_2_project_issue_all
+#: model:ir.actions.act_window,name:project_issue.project_issue_categ_act0
+#: model:ir.ui.menu,name:project_issue.menu_project_issue_track
+#: view:project.issue:0
+msgid "Issues"
+msgstr ""
+
+#. module: project_issue
+#: model:ir.actions.act_window,name:project_issue.action_project_issue_graph_stage
+#: model:ir.actions.act_window,name:project_issue.action_project_issue_graph_state
+#: model:ir.model,name:project_issue.model_project_issue
+#: model:ir.ui.menu,name:project_issue.menu_project_confi
+#: view:project.issue.report:0
+msgid "Project Issue"
+msgstr ""
+
+#. module: project_issue
+#: view:project.issue:0
+#: field:project.issue,user_id:0
+#: view:project.issue.report:0
+#: field:project.issue.report,user_id:0
+msgid "Responsible"
+msgstr ""
+
+#. module: project_issue
+#: help:project.issue,progress:0
+msgid "Computed as: Time Spent / Total Time."
+msgstr ""
+
+#. module: project_issue
+#: view:project.issue:0
+#: view:project.issue.report:0
+msgid "Current"
+msgstr ""
+
+#. module: project_issue
+#: model:ir.actions.act_window,help:project_issue.project_issue_categ_act0
+msgid ""
+"Issues such as system bugs, customer complaints, and material breakdowns are "
+"collected here. You can define the stages assigned when solving the project "
+"issue (analysis, development, done). With the mailgateway module, issues can "
+"be integrated through an email address (example: support@mycompany.com)"
+msgstr ""
+
+#. module: project_issue
+#: view:project.issue:0
+msgid "Details"
+msgstr ""
+
+#. module: project_issue
+#: help:project.issue,email_from:0
+msgid "These people will receive email."
+msgstr ""
+
+#. module: project_issue
+#: view:project.issue:0
+msgid "Reply"
+msgstr ""
+
+#. module: project_issue
+#: field:project.issue,name:0
+msgid "Issue"
+msgstr ""
+
+#. module: project_issue
+#: view:project.issue:0
+msgid "Feature Tracker Search"
+msgstr ""
+
+#. module: project_issue
+#: view:project.issue:0
+#: field:project.issue,description:0
+msgid "Description"
+msgstr ""
+
+#. module: project_issue
+#: field:project.issue,section_id:0
+msgid "Sales Team"
+msgstr ""
+
+#. module: project_issue
+#: selection:project.issue.report,month:0
+msgid "May"
+msgstr ""
+
+#. module: project_issue
+#: model:ir.actions.act_window,name:project_issue.action_project_issue_report
+#: model:ir.ui.menu,name:project_issue.menu_project_issue_report_tree
+msgid "Issue Analysis"
+msgstr ""
+
+#. module: project_issue
+#: view:project.issue.report:0
+msgid "Sale Team "
+msgstr ""
+
+#. module: project_issue
+#: view:project.issue.report:0
+#: field:project.issue.report,email:0
+msgid "# Emails"
+msgstr ""
+
+#. module: project_issue
+#: field:project.issue,partner_name:0
+msgid "Employee's Name"
+msgstr ""
+
+#. module: project_issue
+#: help:project.issue,state:0
+msgid ""
+"The state is set to 'Draft', when a case is created. "
+" \n"
+"If the case is in progress the state is set to 'Open'. "
+" \n"
+"When the case is over, the state is set to 'Done'. "
+" \n"
+"If the case needs to be reviewed then the state is set to 'Pending'."
+msgstr ""
+
+#. module: project_issue
+#: selection:project.issue.report,month:0
+msgid "February"
+msgstr ""
+
+#. module: project_issue
+#: code:addons/project_issue/project_issue.py:61
+#, python-format
+msgid "Issue '%s' has been opened."
+msgstr ""
+
+#. module: project_issue
+#: view:project.issue:0
+msgid "Feature description"
+msgstr ""
+
+#. module: project_issue
+#: field:project.project,project_escalation_id:0
+msgid "Project Escalation"
+msgstr ""
+
+#. module: project_issue
+#: help:project.issue,section_id:0
+msgid ""
+"Sales team to which Case belongs to. Define "
+"Responsible user and Email account for mail gateway."
+msgstr ""
+
+#. module: project_issue
+#: view:project.issue.report:0
+msgid "Month-1"
+msgstr ""
+
+#. module: project_issue
+#: code:addons/project_issue/project_issue.py:76
+#, python-format
+msgid "Issue '%s' has been closed."
+msgstr ""
+
+#. module: project_issue
+#: selection:project.issue.report,month:0
+msgid "April"
+msgstr ""
+
+#. module: project_issue
+#: view:project.issue:0
+msgid "References"
+msgstr ""
+
+#. module: project_issue
+#: field:project.issue,working_hours_close:0
+msgid "Working Hours to Close the Issue"
+msgstr ""
+
+#. module: project_issue
+#: field:project.issue,id:0
+msgid "ID"
+msgstr ""
+
+#. module: project_issue
+#: code:addons/project_issue/project_issue.py:377
+#, python-format
+msgid "No Title"
+msgstr ""
+
+#. module: project_issue
+#: help:project.issue.report,delay_close:0
+#: help:project.issue.report,delay_open:0
+msgid "Number of Days to close the project issue"
+msgstr ""
+
+#. module: project_issue
+#: view:project.issue.report:0
+#: field:project.issue.report,section_id:0
+msgid "Sale Team"
+msgstr ""
+
+#. module: project_issue
+#: field:project.issue.report,working_hours_close:0
+msgid "Avg. Working Hours to Close"
+msgstr ""
+
+#. module: project_issue
+#: selection:project.issue,priority:0
+#: selection:project.issue.report,priority:0
+msgid "High"
+msgstr ""
+
+#. module: project_issue
+#: field:project.issue,date_deadline:0
+msgid "Deadline"
+msgstr ""
+
+#. module: project_issue
+#: field:project.issue,date_action_last:0
+msgid "Last Action"
+msgstr ""
+
+#. module: project_issue
+#: view:project.issue.report:0
+#: field:project.issue.report,name:0
+msgid "Year"
+msgstr ""
+
+#. module: project_issue
+#: field:project.issue,duration:0
+msgid "Duration"
+msgstr ""
+
+#. module: project_issue
+#: view:board.board:0
+msgid "My Open Issues by Creation Date"
+msgstr ""
diff --git a/addons/project_issue/project_issue.py b/addons/project_issue/project_issue.py
index 655db2450f8..b950bfd0b34 100644
--- a/addons/project_issue/project_issue.py
+++ b/addons/project_issue/project_issue.py
@@ -314,7 +314,8 @@ class project_issue(crm.crm_case, osv.osv):
'description':bug.description,
'date_deadline': bug.date,
'project_id': bug.project_id.id,
- 'priority': bug.priority,
+ # priority must be in ['0','1','2','3','4'], while bug.priority is in ['1','2','3','4','5']
+ 'priority': str(int(bug.priority) - 1),
'user_id': bug.user_id.id,
'planned_hours': 0.0,
})
diff --git a/addons/project_issue/security/ir.model.access.csv b/addons/project_issue/security/ir.model.access.csv
index f5c39be7713..4708a6fdcd6 100644
--- a/addons/project_issue/security/ir.model.access.csv
+++ b/addons/project_issue/security/ir.model.access.csv
@@ -1,12 +1,11 @@
-"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
-"access_project_issue_all","project.issue","model_project_issue","project.group_project_manager",1,1,1,1
-"access_project_issue_user","project.issue","model_project_issue","project.group_project_user",1,1,1,1
-"access_project_issue_report_all","project.issue.report","model_project_issue_report","project.group_project_manager",1,1,1,1
-"access_crm_case_categ_id","crm.case.categ","crm.model_crm_case_categ","project.group_project_manager",1,1,1,1
-"access_project_issue_version_project","project_issue_version manager","model_project_issue_version","project.group_project_manager",1,1,1,1
-"access_project_issue_version_project_user","project_issue_version user","model_project_issue_version","project.group_project_user",1,0,0,0
-"access_mail_message_project_manager","mail.message.manager","mail.model_mail_message","project.group_project_manager",1,1,1,1
-"access_resource_calendar_project_manager","resource.calendar.project.manager","resource.model_resource_calendar","project.group_project_manager",1,1,1,1
-"access_project_issue_report_user","project.issue.report user","model_project_issue_report","project.group_project_user",1,0,0,0
-"access_mail_message_issue_project_user","mail.message.user","mail.model_mail_message","project.group_project_user",1,1,1,0
-"access_crm_case_section","crm.case.section","crm.model_crm_case_section","project.group_project_user",1,0,0,0
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+access_project_issue_user,project.issue,model_project_issue,project.group_project_user,1,1,1,1
+access_project_issue_report_all,project.issue.report,model_project_issue_report,project.group_project_manager,1,1,1,1
+access_crm_case_categ_id,crm.case.categ,crm.model_crm_case_categ,project.group_project_manager,1,1,1,1
+access_project_issue_version_project,project_issue_version manager,model_project_issue_version,project.group_project_manager,1,1,1,1
+access_project_issue_version_project_user,project_issue_version user,model_project_issue_version,project.group_project_user,1,0,0,0
+access_mail_message_project_manager,mail.message.manager,mail.model_mail_message,project.group_project_manager,1,1,1,1
+access_resource_calendar_project_manager,resource.calendar.project.manager,resource.model_resource_calendar,project.group_project_manager,1,1,1,1
+access_project_issue_report_user,project.issue.report user,model_project_issue_report,project.group_project_user,1,0,0,0
+access_mail_message_issue_project_user,mail.message.user,mail.model_mail_message,project.group_project_user,1,1,1,0
+access_crm_case_section,crm.case.section,crm.model_crm_case_section,project.group_project_user,1,0,0,0
diff --git a/addons/project_issue/static/src/img/icon.png b/addons/project_issue/static/src/img/icon.png
new file mode 100644
index 00000000000..20723a81a57
Binary files /dev/null and b/addons/project_issue/static/src/img/icon.png differ
diff --git a/addons/project_issue/test/cancel_issue.yml b/addons/project_issue/test/cancel_issue.yml
new file mode 100644
index 00000000000..ff05d923ed0
--- /dev/null
+++ b/addons/project_issue/test/cancel_issue.yml
@@ -0,0 +1,60 @@
+-
+ In order to test process of issue tracking in OpenERP, I cancel the unqualified Issue.
+-
+ !python {model: project.issue}: |
+ self.case_cancel(cr, uid, [ref("crm_case_buginaccountsmodule0")])
+-
+ I check the issue is in cancel state.
+-
+ !assert {model: project.issue, id: crm_case_buginaccountsmodule0, severity: error, string: Issue is in cancel state}:
+ - state == 'cancel'
+-
+ I re-open the Issue.
+-
+ !python {model: project.issue}: |
+ self.case_open(cr, uid, [ref("crm_case_buginaccountsmodule0")])
+-
+ I check the state of issue after open it.
+-
+ !assert {model: project.issue, id: crm_case_buginaccountsmodule0, severity: error, string: Issue is in open state}:
+ - state == 'open'
+-
+ I put the issue in pending state.
+-
+ !python {model: project.issue}: |
+ self.case_pending(cr, uid, [ref("crm_case_buginaccountsmodule0")])
+-
+ I check the state of issue after put it in pending state.
+-
+ !assert {model: project.issue, id: crm_case_buginaccountsmodule0, severity: error, string: Issue should be in pending state}:
+ - state == 'pending'
+-
+ I cancel the issue is in pending state.
+-
+ !python {model: project.issue}: |
+ self.case_cancel(cr, uid, [ref("crm_case_buginaccountsmodule0")])
+-
+ I check the issue is in cancel state.
+-
+ !assert {model: project.issue, id: crm_case_buginaccountsmodule0, severity: error, string: Issue is in cancel state}:
+ - state == 'cancel'
+-
+ I close Issue.
+-
+ !python {model: project.issue}: |
+ self.case_close(cr, uid, [ref("crm_case_buginaccountsmodule0")])
+-
+ I check state of Issue after close.
+-
+ !assert {model: project.issue, id: crm_case_buginaccountsmodule0, severity: error, string: Issue is in done state}:
+ - state == 'done'
+-
+ I cancel the issue is in done state.
+-
+ !python {model: project.issue}: |
+ self.case_cancel(cr, uid, [ref("crm_case_buginaccountsmodule0")])
+-
+ I check the issue is in cancel state.
+-
+ !assert {model: project.issue, id: crm_case_buginaccountsmodule0, severity: error, string: Issue is in cancel state}:
+ - state == 'cancel'
\ No newline at end of file
diff --git a/addons/project_issue/test/convert_issue_to_task.yml b/addons/project_issue/test/convert_issue_to_task.yml
deleted file mode 100644
index 13ddef69251..00000000000
--- a/addons/project_issue/test/convert_issue_to_task.yml
+++ /dev/null
@@ -1,32 +0,0 @@
--
- Create an issue
--
- !record {model: project.issue, id: project_issue_onchangeevent0}:
- categ_id: project_issue.bug_categ
- name: on_change event does not pass context to the method
- project_id: project.project_project_22
- working_hours_close: 0.0
- working_hours_open: 0.0
-
--
- Check there is no task attached to issue
--
- !assert {model: project.issue, id: project_issue_onchangeevent0, string: There must not be any task attached to issue}:
- - task_id.id == False
-
--
- Convert issue to task
--
- !python {model: project.issue}: |
- self.convert_issue_task(cr, uid, [ref("project_issue_onchangeevent0")],
- {"lang": "en_US", "project_id": False, "tz": False, "active_model": "ir.ui.menu",
- "department_id": False, "section_id": False, "search_default_project_id":
- False, "search_default_my_bugs": 1, "search_default_user_id": 1, "search_default_current_bugs":
- 1, "active_ids": [ref("project_issue.menu_project_issue_track")], "active_id":
- ref("project_issue.menu_project_issue_track"), })
-
--
- Check there is a task attached to issue
--
- !assert {model: project.issue, id: project_issue_onchangeevent0, string: After creating a task for the issue there must be a task attached to it}:
- - task_id.id != False
diff --git a/addons/project_issue/test/issue.eml b/addons/project_issue/test/issue.eml
new file mode 100644
index 00000000000..32659bbd7da
--- /dev/null
+++ b/addons/project_issue/test/issue.eml
@@ -0,0 +1,45 @@
+Return-Path:
+X-Original-To: abc@mycompany.com
+Delivered-To: abc@mycompany.com
+Received: by mail1.mycompany.com (Postfix, from userid 10002)
+ id 3955EBFACA; Tue, 29 Nov 2011 08:14:47 +0100 (CET)
+X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail1.mycompany.com
+X-Spam-Level:
+X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM,
+ RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1
+Received: from nm39-vm6.bullet.mail.ne1.yahoo.com (nm39-vm6.bullet.mail.ne1.yahoo.com [98.138.229.166])
+ by mail1.mycompany.com (Postfix) with SMTP id 0D074BF53A
+ for ; Tue, 29 Nov 2011 08:14:44 +0100 (CET)
+Received: from [98.138.90.54] by nm39.bullet.mail.ne1.yahoo.com with NNFMP; 29 Nov 2011 07:13:26 -0000
+Received: from [98.138.84.39] by tm7.bullet.mail.ne1.yahoo.com with NNFMP; 29 Nov 2011 07:13:26 -0000
+Received: from [127.0.0.1] by smtp107.mail.ne1.yahoo.com with NNFMP; 29 Nov 2011 07:13:26 -0000
+DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.in; s=s1024; t=1322550806; bh=LFefFqrky41IufKZHP8a86obZoBPxyX1aafgWNcrw7U=; h=X-Yahoo-Newman-Id:X-Yahoo-Newman-Property:X-YMail-OSG:X-Yahoo-SMTP:Received:Message-ID:Date:From:User-Agent:MIME-Version:To:Subject:Content-Type:Content-Transfer-Encoding; b=NB8bd6b4Uk3/3fKhdzbcqFEZGPpKyotLeE0xh8H08rcFEahMFfY5uXgsYZsUFvTLCKfTyQWh/oPTVxHeUTGY/Y5MzAnndghX6S0mzlFtmW2dwLMqdWxQLZwU7EhbyYF9PCHicsmtlUVyo7Ou5ePSviqC0SOyCJJVWwzWlv5W9Zg=
+X-Yahoo-Newman-Id: 152218.10448.bm@smtp107.mail.ne1.yahoo.com
+X-Yahoo-Newman-Property: ymail-3
+X-YMail-OSG: i4zQqJUVM1mab8kxoCTmgMwxw9th.MdiJzmc4Ffbno7QGkl
+ acotmc0pGoiw_GrhwReSA6uNIveeAUi9WA6NniWAElxbUzGIQplTBHjRhdqF
+ d_rLG1Yn71DYxllLCZC8xoRzumVHw.kue0ymrl4D0VO.lEeyXbbYoz.TpAvu
+ ZASBwSV_mESEUu96bb1esfOjI_2MhibMNmt.2egkOG6LS3AcDkVWXJb.VpQe
+ yZieJ5djjUx9uu4HModjROSUWHKm3Qd5ZwvG.3s1JvHNNvPC3Mo6x.DXi_rj
+ d70J2pruXhJ9ZnbNooZiSHkrhaugWV.kquq6475ZxKP6Tu7G8iUgZUkHWCf.
+ aEdBFl2.4RanSkMohEfbNtwpXUQ0eDDOOPatHFB27JSP0jw--
+X-Yahoo-SMTP: oNtzSBqswBAqJIGYOgyGesyleENrhUEtEgBkQ053
+Received: from [192.168.1.30] (Robert_Adersen@180.211.100.2 with plain)
+ by smtp107.mail.ne1.yahoo.com with SMTP; 28 Nov 2011 23:13:25 -0800 PST
+Message-ID: <4ED48611.6070605@yahoo.in>
+Date: Tue, 29 Nov 2011 12:43:21 +0530
+From: Robert Adersen
+User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.17) Gecko/20110424 Thunderbird/3.1.10
+MIME-Version: 1.0
+To: abc@mycompany.com
+Subject: Error in the account module
+Content-Type: text/plain; charset=ISO-8859-1; format=flowed
+Content-Transfer-Encoding: 7bit
+
+Hello Sir,
+
+I am using the openerp v6.1 and i have problem in hr module, so try to
+check it and solve my problem.
+
+thanks
+Robert Adersen
diff --git a/addons/project_issue/test/issue_demo.yml b/addons/project_issue/test/issue_demo.yml
new file mode 100644
index 00000000000..1ad26e6db73
--- /dev/null
+++ b/addons/project_issue/test/issue_demo.yml
@@ -0,0 +1,8 @@
+-
+ !record {model: project.issue, id: project_task_1, view: False}:
+ task_id: 'project.project_task_17'
+ name: 'Error in account module'
+-
+ !record {model: project.issue, id: project01, view: False}:
+ project_id: 'project.project_project_9'
+ name: 'OpenERP Integration'
diff --git a/addons/project_issue/test/issue_process.yml b/addons/project_issue/test/issue_process.yml
new file mode 100644
index 00000000000..d5900bb1b4f
--- /dev/null
+++ b/addons/project_issue/test/issue_process.yml
@@ -0,0 +1,57 @@
+-
+ In order to test process of issue tracking in OpenERP, I Open the Issue.
+-
+ !python {model: project.issue}: |
+ self.case_open(cr, uid, [ref("crm_case_buginaccountsmodule0")])
+-
+ I check state of Issue after opened it.
+-
+ !assert {model: project.issue, id: crm_case_buginaccountsmodule0, severity: error, string: Issue should be in open state}:
+ - state == 'open'
+-
+ Now I put Issue in pending due to need more information.
+-
+ !python {model: project.issue}: |
+ self.case_pending(cr, uid, [ref("crm_case_buginaccountsmodule0")])
+-
+ I check state after put in pending.
+-
+ !assert {model: project.issue, id: crm_case_buginaccountsmodule0, severity: error, string: Issue should be in pending state}:
+ - state == 'pending'
+-
+ I send mail to get more details.
+-
+ !python {model: mail.compose.message }: |
+ ctx = context.copy()
+ ctx.update({'active_model': 'project.issue', 'active_id': ref("crm_case_buginaccountsmodule0"), 'active_ids': [ref("crm_case_buginaccountsmodule0")]})
+ vals = self.default_get(cr, uid , [], context=ctx)
+ try:
+ new_id = self.create(cr, uid, {'email_from': 'support@mycompany.com','email_to': 'Robert_Adersen@yahoo.com', 'subject': 'Regarding error in account module we nees more details'})
+ self.send_mail(cr, uid, [new_id], context=ctx)
+ except Exception, e:
+ pass
+-
+ After getting sufficient details, I re-open Issue from pending state.
+-
+ !python {model: project.issue}: |
+ self.case_open(cr, uid, [ref("crm_case_buginaccountsmodule0")])
+-
+ I check state of Issue after re-opened.
+-
+ !assert {model: project.issue, id: crm_case_buginaccountsmodule0, severity: error, string: Issue should be in open state}:
+ - state == 'open'
+-
+ I create Task for Issue.
+-
+ !python {model: project.issue}: |
+ self.convert_issue_task(cr, uid, [ref("crm_case_buginaccountsmodule0")])
+-
+ I close Issue after resolving it
+-
+ !python {model: project.issue}: |
+ self.case_close(cr, uid, [ref("crm_case_buginaccountsmodule0")])
+-
+ I Check state of Issue after closed.
+-
+ !assert {model: project.issue, id: crm_case_buginaccountsmodule0, severity: error, string: Issue should be in done state}:
+ - state == 'done'
diff --git a/addons/project_issue/test/subscribe_issue.yml b/addons/project_issue/test/subscribe_issue.yml
new file mode 100644
index 00000000000..4ba472b41ed
--- /dev/null
+++ b/addons/project_issue/test/subscribe_issue.yml
@@ -0,0 +1,17 @@
+-
+ In Order to test process of Issue in OpenERP, Custmer send the issue by email.
+-
+ !python {model: mail.thread}: |
+ import addons
+ request_file = open(addons.get_module_resource('project_issue','test', 'issue.eml'),'rb')
+ request_message = request_file.read()
+ self.message_process(cr, uid, 'project.issue', request_message)
+-
+ After getting the mail, I check details of new issue of that customer.
+-
+ !python {model: project.issue}: |
+ issue_ids = self.search(cr, uid, [('email_from', '=', 'Robert Adersen ')])
+ assert issue_ids and len(issue_ids), "issue is not created after getting request"
+ issue = self.browse(cr, uid, issue_ids[0], context=context)
+ assert not issue.partner_id, "Customer should be a new"
+ assert issue.name == "Error in the account module", "Subject does not match"
\ No newline at end of file
diff --git a/addons/project_issue/test/test_project_issue_states.yml b/addons/project_issue/test/test_project_issue_states.yml
deleted file mode 100644
index ee48c9a9df0..00000000000
--- a/addons/project_issue/test/test_project_issue_states.yml
+++ /dev/null
@@ -1,112 +0,0 @@
--
- Create an issue
--
- !record {model: project.issue, id: project_issue_stockmovedates0}:
- categ_id: project_issue.bug_categ
- name: Stock Move dates
- project_id: project.project_project_22
- working_hours_close: 0.0
- working_hours_open: 0.0
--
- Check if issue in 'draft' state
--
- !assert {model: project.issue, id: project_issue_stockmovedates0, severity: error, string: Issue is in draft state}:
- - state == 'draft'
-
--
- Open the issue
--
- !python {model: project.issue}: |
- self.case_open(cr, uid, [ref("project_issue_stockmovedates0")], {"lang":
- "en_US", "active_ids": [ref("project_issue.menu_project_issue_track")], "tz":
- False, "active_model": "ir.ui.menu", "search_default_project_id": False, "search_default_my_bugs":
- 1, "search_default_user_id": 1, "search_default_current_bugs": 1, "project_id":
- False, "active_id": ref("project_issue.menu_project_issue_track"), })
--
- Check if issue in 'open' state
--
- !assert {model: project.issue, id: project_issue_stockmovedates0, severity: error, string: Issue is in open state}:
- - state == 'open'
-
--
- Keep issue pending
--
- !python {model: project.issue}: |
- self.case_pending(cr, uid, [ref("project_issue_stockmovedates0")],
- {"lang": "en_US", "active_ids": [ref("project_issue.menu_project_issue_track")],
- "tz": False, "active_model": "ir.ui.menu", "search_default_project_id":
- False, "search_default_my_bugs": 1, "search_default_user_id": 1, "search_default_current_bugs":
- 1, "project_id": False, "active_id": ref("project_issue.menu_project_issue_track"),
- })
--
- Check if issue in 'pending' state
--
- !assert {model: project.issue, id: project_issue_stockmovedates0, severity: error, string: Issue is in pending state}:
- - state == 'pending'
-
-
--
- Open the issue
--
- !python {model: project.issue}: |
- self.case_open(cr, uid, [ref("project_issue_stockmovedates0")], {"lang":
- "en_US", "active_ids": [ref("project_issue.menu_project_issue_track")], "tz":
- False, "active_model": "ir.ui.menu", "search_default_project_id": False, "search_default_my_bugs":
- 1, "search_default_user_id": 1, "search_default_current_bugs": 1, "project_id":
- False, "active_id": ref("project_issue.menu_project_issue_track"), })
--
- Check if issue in 'open' state
--
- !assert {model: project.issue, id: project_issue_stockmovedates0, severity: error, string: Issue is in open state}:
- - state == 'open'
-
-
--
- Cancel the issue
--
- !python {model: project.issue}: |
- self.case_cancel(cr, uid, [ref("project_issue_stockmovedates0")],
- {"lang": "en_US", "active_ids": [ref("project_issue.menu_project_issue_track")],
- "tz": False, "active_model": "ir.ui.menu", "search_default_project_id":
- False, "search_default_my_bugs": 1, "search_default_user_id": 1, "search_default_current_bugs":
- 1, "project_id": False, "active_id": ref("project_issue.menu_project_issue_track"),
- })
--
- Check if issue in 'cancel' state
--
- !assert {model: project.issue, id: project_issue_stockmovedates0, severity: error, string: Issue is in cancel state}:
- - state == 'cancel'
-
-
--
- Reset the issue
--
- !python {model: project.issue}: |
- self.case_reset(cr, uid, [ref("project_issue_stockmovedates0")],
- {"lang": "en_US", "active_ids": [ref("project_issue.menu_project_issue_track")],
- "tz": False, "active_model": "ir.ui.menu", "search_default_project_id":
- False, "search_default_my_bugs": 1, "search_default_user_id": 1, "search_default_current_bugs":
- 1, "project_id": False, "active_id": ref("project_issue.menu_project_issue_track"),
- })
--
- Check if issue in 'draft' state
--
- !assert {model: project.issue, id: project_issue_stockmovedates0, severity: error, string: Issue is in draft state}:
- - state == 'draft'
-
-
--
- Close the issue
--
- !python {model: project.issue}: |
- self.case_close(cr, uid, [ref("project_issue_stockmovedates0")],
- {"lang": "en_US", "active_ids": [ref("project_issue.menu_project_issue_track")],
- "tz": False, "active_model": "ir.ui.menu", "search_default_project_id":
- False, "search_default_my_bugs": 1, "search_default_user_id": 1, "search_default_current_bugs":
- 1, "project_id": False, "active_id": ref("project_issue.menu_project_issue_track"),
- })
--
- Check if issue in 'done' state
--
- !assert {model: project.issue, id: project_issue_stockmovedates0, severity: error, string: Issue is in done state}:
- - state == 'done'
diff --git a/addons/project_issue_sheet/i18n/hr.po b/addons/project_issue_sheet/i18n/hr.po
new file mode 100644
index 00000000000..a300e7ec625
--- /dev/null
+++ b/addons/project_issue_sheet/i18n/hr.po
@@ -0,0 +1,77 @@
+# Croatian translation for openobject-addons
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2011-01-11 11:15+0000\n"
+"PO-Revision-Date: 2011-12-12 09:54+0000\n"
+"Last-Translator: Tomislav Bosnjakovic \n"
+"Language-Team: Croatian \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-12-13 05:02+0000\n"
+"X-Generator: Launchpad (build 14458)\n"
+
+#. module: project_issue_sheet
+#: model:ir.module.module,description:project_issue_sheet.module_meta_information
+msgid ""
+"\n"
+" This module adds the Timesheet support for the "
+"Issues/Bugs Management in Project\n"
+" "
+msgstr ""
+
+#. module: project_issue_sheet
+#: model:ir.model,name:project_issue_sheet.model_account_analytic_line
+msgid "Analytic Line"
+msgstr "Analitičke stavke"
+
+#. module: project_issue_sheet
+#: model:ir.model,name:project_issue_sheet.model_project_issue
+msgid "Project Issue"
+msgstr ""
+
+#. module: project_issue_sheet
+#: model:ir.model,name:project_issue_sheet.model_hr_analytic_timesheet
+msgid "Timesheet Line"
+msgstr "Stavka kontrolne kartice"
+
+#. module: project_issue_sheet
+#: view:project.issue:0
+msgid "Timesheet"
+msgstr "Kontrolna kartica"
+
+#. module: project_issue_sheet
+#: field:project.issue,analytic_account_id:0
+msgid "Analytic Account"
+msgstr "Analitički konto"
+
+#. module: project_issue_sheet
+#: view:project.issue:0
+msgid "Worklogs"
+msgstr ""
+
+#. module: project_issue_sheet
+#: field:account.analytic.line,create_date:0
+msgid "Create Date"
+msgstr "Datum kreiranja"
+
+#. module: project_issue_sheet
+#: field:project.issue,timesheet_ids:0
+msgid "Timesheets"
+msgstr "Kontrolne kartice"
+
+#. module: project_issue_sheet
+#: model:ir.module.module,shortdesc:project_issue_sheet.module_meta_information
+msgid "Add the Timesheet support for Issue Management in Project Management"
+msgstr ""
+
+#. module: project_issue_sheet
+#: field:hr.analytic.timesheet,issue_id:0
+msgid "Issue"
+msgstr ""
diff --git a/addons/project_issue_sheet/security/ir.model.access.csv b/addons/project_issue_sheet/security/ir.model.access.csv
index 0e6c92c038b..a524f4cf05f 100644
--- a/addons/project_issue_sheet/security/ir.model.access.csv
+++ b/addons/project_issue_sheet/security/ir.model.access.csv
@@ -1,15 +1,15 @@
-"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
-"access_hr_timesheet_sheet_sheet_project_user","hr_timesheet_sheet.sheet user","hr_timesheet_sheet.model_hr_timesheet_sheet_sheet","project.group_project_user",1,1,1,0
-"access_hr_analytic_timesheet_project_user","hr_analytic_timesheet user","hr_timesheet_sheet.model_hr_analytic_timesheet","project.group_project_user",1,1,1,0
-"access_hr_analytic_timesheet_project_manager","hr_analytic_timesheet manager","hr_timesheet_sheet.model_hr_analytic_timesheet","project.group_project_manager",1,0,0,0
-"access_hr_timesheet_sheet_sheet_project_manager","hr_timesheet_sheet.sheet manager","hr_timesheet_sheet.model_hr_timesheet_sheet_sheet","project.group_project_manager",1,0,0,0
-"access_hr_analytic_timesheet_project_manager","account.analytic.line.timesheet.project.manager","account.model_account_analytic_line","project.group_project_manager",1,1,1,1
-"access_account_analytic_journal_project_manager","account.analytic.journal.project.manager","account.model_account_analytic_journal","project.group_project_manager",1,1,1,1
-"access_account_fiscalyear_project_manager","account.fiscalyear.project.manager","account.model_account_fiscalyear","project.group_project_manager",1,1,1,1
-"access_hr_timesheet_invoice_factor_project_manager","hr_timesheet_invoice.factor.project.manager","hr_timesheet_invoice.model_hr_timesheet_invoice_factor","project.group_project_manager",1,1,1,1
-"access_account_invoice_project_manager","account.invoice.project.manager","account.model_account_invoice","project.group_project_manager",1,1,1,1
-"access_analytic_account_line_project_user","analytic_account_line_timesheet user","analytic.model_account_analytic_line","project.group_project_user",1,1,1,0
-"access_account_analytic_journal_project_user","account.analytic.journal.project.user","account.model_account_analytic_journal","project.group_project_user",1,1,1,0
-"access_account_fiscalyear_project_user","account.fiscalyear.project.user","account.model_account_fiscalyear","project.group_project_user",1,1,1,0
-"access_hr_timesheet_invoice_factor_project_user","hr_timesheet_invoice.factor.project.user","hr_timesheet_invoice.model_hr_timesheet_invoice_factor","project.group_project_user",1,1,1,0
-"access_account_invoice_project_user","account.invoice.project.user","account.model_account_invoice","project.group_project_user",1,1,1,0
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+access_hr_timesheet_sheet_sheet_project_user,hr_timesheet_sheet.sheet user,hr_timesheet_sheet.model_hr_timesheet_sheet_sheet,project.group_project_user,1,1,1,0
+access_hr_analytic_timesheet_project_user,hr_analytic_timesheet user,hr_timesheet_sheet.model_hr_analytic_timesheet,project.group_project_user,1,1,1,0
+access_hr_analytic_timesheet_project_manager,hr_analytic_timesheet manager,hr_timesheet_sheet.model_hr_analytic_timesheet,project.group_project_manager,1,0,0,0
+access_hr_timesheet_sheet_sheet_project_manager,hr_timesheet_sheet.sheet manager,hr_timesheet_sheet.model_hr_timesheet_sheet_sheet,project.group_project_manager,1,0,0,0
+access_hr_analytic_timesheet_project_manager,account.analytic.line.timesheet.project.manager,account.model_account_analytic_line,project.group_project_manager,1,1,1,1
+access_account_analytic_journal_project_manager,account.analytic.journal.project.manager,account.model_account_analytic_journal,project.group_project_manager,1,1,1,1
+access_account_fiscalyear_project_manager,account.fiscalyear.project.manager,account.model_account_fiscalyear,project.group_project_manager,1,1,1,1
+access_hr_timesheet_invoice_factor_project_manager,hr_timesheet_invoice.factor.project.manager,hr_timesheet_invoice.model_hr_timesheet_invoice_factor,project.group_project_manager,1,1,1,1
+access_account_invoice_project_manager,account.invoice.project.manager,account.model_account_invoice,project.group_project_manager,1,1,1,1
+access_analytic_account_line_project_user,analytic_account_line_timesheet user,analytic.model_account_analytic_line,project.group_project_user,1,1,1,0
+access_account_analytic_journal_project_user,account.analytic.journal.project.user,account.model_account_analytic_journal,project.group_project_user,1,1,1,0
+access_account_fiscalyear_project_user,account.fiscalyear.project.user,account.model_account_fiscalyear,project.group_project_user,1,1,1,0
+access_hr_timesheet_invoice_factor_project_user,hr_timesheet_invoice.factor.project.user,hr_timesheet_invoice.model_hr_timesheet_invoice_factor,project.group_project_user,1,1,1,0
+access_account_invoice_project_user,account.invoice.project.user,account.model_account_invoice,project.group_project_user,1,1,1,0
diff --git a/addons/project_long_term/__openerp__.py b/addons/project_long_term/__openerp__.py
index 3f4eccfc574..7d33a431f2a 100644
--- a/addons/project_long_term/__openerp__.py
+++ b/addons/project_long_term/__openerp__.py
@@ -43,14 +43,8 @@ Features
"init_xml": [],
"demo_xml": ["project_long_term_demo.xml"],
"test": [
- 'test/test_schedule_phases_case1.yml',
- 'test/schedule_project_phases.yml',
- 'test/schedule_project_tasks.yml',
- 'test/test_schedule_phases_case2.yml',
- 'test/project_schedule_consecutive_day.yml',
- 'test/project_schedule_without_wroking_hour.yml',
- 'test/phase_constraint.yml',
- 'test/test_schedule_tasks_case1.yml',
+ 'test/phase_process.yml',
+ 'test/task_process.yml',
],
"update_xml": [
"security/ir.model.access.csv",
@@ -60,7 +54,6 @@ Features
"wizard/project_compute_tasks_view.xml",
],
'installable': True,
- 'core': True,
'active': False,
'certificate': '001227470751077315069',
}
diff --git a/addons/project_long_term/i18n/hr.po b/addons/project_long_term/i18n/hr.po
new file mode 100644
index 00000000000..434470646c2
--- /dev/null
+++ b/addons/project_long_term/i18n/hr.po
@@ -0,0 +1,625 @@
+# Croatian translation for openobject-addons
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2011-01-11 11:15+0000\n"
+"PO-Revision-Date: 2011-12-12 09:44+0000\n"
+"Last-Translator: Tomislav Bosnjakovic \n"
+"Language-Team: Croatian \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-12-13 05:02+0000\n"
+"X-Generator: Launchpad (build 14458)\n"
+
+#. module: project_long_term
+#: model:ir.module.module,shortdesc:project_long_term.module_meta_information
+msgid "Long Term Project Management"
+msgstr "Upravljanje dugotrajnim projektima"
+
+#. module: project_long_term
+#: view:project.compute.phases:0
+msgid "Compute Scheduling of Phases"
+msgstr "Izračunaj planiranje faza"
+
+#. module: project_long_term
+#: view:project.phase:0
+#: field:project.phase,next_phase_ids:0
+msgid "Next Phases"
+msgstr "Sljedeće faze"
+
+#. module: project_long_term
+#: view:project.phase:0
+msgid "Project's Tasks"
+msgstr "Zadaci projekta"
+
+#. module: project_long_term
+#: model:ir.actions.act_window,name:project_long_term.act_project_phases
+msgid "Phases"
+msgstr "Faze"
+
+#. module: project_long_term
+#: view:project.phase:0
+#: view:project.resource.allocation:0
+msgid "Group By..."
+msgstr "Grupiraj po..."
+
+#. module: project_long_term
+#: constraint:project.project:0
+msgid "Error! project start-date must be lower then project end-date."
+msgstr ""
+"Greška! Početni datum projekta mora biti manji od završnog datuma projekta."
+
+#. module: project_long_term
+#: model:ir.actions.act_window,name:project_long_term.act_resouce_allocation
+#: view:project.resource.allocation:0
+msgid "Resources Allocation"
+msgstr "Alokacija resursa"
+
+#. module: project_long_term
+#: view:project.phase:0
+msgid "Displaying settings"
+msgstr "Postavke prikaza"
+
+#. module: project_long_term
+#: field:project.compute.phases,target_project:0
+msgid "Schedule"
+msgstr "Zakaži"
+
+#. module: project_long_term
+#: model:ir.module.module,description:project_long_term.module_meta_information
+msgid ""
+"\n"
+"\n"
+" Long Term Project management module that tracks planning, "
+"scheduling, resources allocation.\n"
+" Mainly used with Big project management.\n"
+" - Project Phases will be maintained by Manager of the project\n"
+" - Compute Phase Scheduling: Compute start date and end date of "
+"the phases which are in draft,open and pending state of the project given.\n"
+" If no project given then all the "
+"draft,open and pending state phases will be taken\n"
+" - Compute Task Scheduling: This works same as the scheduler "
+"button on project.phase. It takes the project as argument and computes all "
+"the open,draft and pending tasks\n"
+" - Schedule Tasks: All the tasks which are in draft,pending and "
+"open state are scheduled with taking the phase's start date\n"
+"\n"
+" "
+msgstr ""
+"\n"
+"\n"
+" Modul upravljanja dugotrajnim projektima prati planiranje, "
+"zakazivanje i alokaciju resursa.\n"
+" Uglavnom se koristi s Upravljanjem velikim projektima.\n"
+" - Faze projekta će održavati voditelj projekta\n"
+" - Izračunaj zakaizivanje faza: Uzračunaj početni datum i završni "
+"datum faza koje su u statusu nacrt,otvoreno i na čekanju za odabrani "
+"projekt.\n"
+" Ako nijeda projekt nije odabran tada "
+"će se uzeti sve faze u statusu nacrt, otvoreno i na čekanju \n"
+" - Izračunaj zakazivanje zadatka: RAdi na isti način kao i gumb "
+"za zakazivanje na fazama projekta. Uzima projekt kao argument i računa sve "
+"zadatke u statusu nacrt, otvoreno i na čekanju.\n"
+" - Zakaži zadatke: Svi azdaci u statusu nacrt, otvoreno i na "
+"čekanju se zakazuju uzimajući početni datum faze.\n"
+"\n"
+" "
+
+#. module: project_long_term
+#: constraint:project.task:0
+msgid "Error ! You cannot create recursive tasks."
+msgstr "Greška! Ne možete kreirati rekurzivne zadatke."
+
+#. module: project_long_term
+#: model:ir.ui.menu,name:project_long_term.menu_resouce_allocation
+msgid "Resource Allocations"
+msgstr "Alokacije resursa"
+
+#. module: project_long_term
+#: constraint:project.project:0
+msgid "Error! You cannot assign escalation to the same project!"
+msgstr "Greška! Ne možete dodjeliti eskalaciju istom projektu!"
+
+#. module: project_long_term
+#: code:addons/project_long_term/project_long_term.py:128
+#, python-format
+msgid "Day"
+msgstr "Dan"
+
+#. module: project_long_term
+#: model:ir.model,name:project_long_term.model_project_task
+msgid "Task"
+msgstr "Zadatak"
+
+#. module: project_long_term
+#: selection:project.compute.phases,target_project:0
+msgid "Compute a Single Project"
+msgstr "Izračunaj pojedinačni projekt"
+
+#. module: project_long_term
+#: view:project.phase:0
+#: field:project.phase,previous_phase_ids:0
+msgid "Previous Phases"
+msgstr "Prijašnje faze"
+
+#. module: project_long_term
+#: help:project.phase,product_uom:0
+msgid "UoM (Unit of Measure) is the unit of measurement for Duration"
+msgstr "JM (Jedinica mjere) je mjerna jedinica za trajanje"
+
+#. module: project_long_term
+#: help:project.phase,date_end:0
+msgid ""
+" It's computed by the scheduler according to the start date and the duration."
+msgstr " Planer računa prema datumu početka i trajanju."
+
+#. module: project_long_term
+#: model:ir.model,name:project_long_term.model_project_project
+#: field:project.compute.phases,project_id:0
+#: field:project.compute.tasks,project_id:0
+#: view:project.phase:0
+#: field:project.phase,project_id:0
+#: view:project.resource.allocation:0
+#: field:project.resource.allocation,project_id:0
+#: view:project.task:0
+msgid "Project"
+msgstr "Projekt"
+
+#. module: project_long_term
+#: code:addons/project_long_term/wizard/project_compute_phases.py:50
+#, python-format
+msgid "Error!"
+msgstr "Greška!"
+
+#. module: project_long_term
+#: selection:project.phase,state:0
+msgid "Cancelled"
+msgstr "Poništeno"
+
+#. module: project_long_term
+#: help:project.resource.allocation,date_end:0
+msgid "Ending Date"
+msgstr "Završni datum"
+
+#. module: project_long_term
+#: view:project.phase:0
+msgid "Planning"
+msgstr "Planiranje"
+
+#. module: project_long_term
+#: field:project.phase,constraint_date_end:0
+msgid "Deadline"
+msgstr "Krajnji rok"
+
+#. module: project_long_term
+#: view:project.compute.phases:0
+#: view:project.compute.tasks:0
+msgid "_Cancel"
+msgstr "_Otkaži"
+
+#. module: project_long_term
+#: model:ir.actions.act_window,name:project_long_term.action_project_compute_phases
+#: model:ir.ui.menu,name:project_long_term.menu_compute_phase
+msgid "Compute Phase Scheduling"
+msgstr "Izračunaj zakazivanje faze"
+
+#. module: project_long_term
+#: code:addons/project_long_term/project_long_term.py:190
+#, python-format
+msgid " (copy)"
+msgstr " (kopija)"
+
+#. module: project_long_term
+#: view:project.phase:0
+#: view:project.resource.allocation:0
+#: field:project.resource.allocation,useability:0
+msgid "Availability"
+msgstr "Raspoloživost"
+
+#. module: project_long_term
+#: view:project.phase:0
+#: field:project.phase,state:0
+msgid "State"
+msgstr "Status"
+
+#. module: project_long_term
+#: view:project.compute.phases:0
+#: view:project.compute.tasks:0
+msgid "C_ompute"
+msgstr "I_zračunaj"
+
+#. module: project_long_term
+#: view:project.compute.phases:0
+msgid "Compute Scheduling of phases for all or specified project"
+msgstr "Izračunaj zakazivanje faza za sve ili pojedini projekt"
+
+#. module: project_long_term
+#: field:project.phase,product_uom:0
+msgid "Duration UoM"
+msgstr "JM trajanja"
+
+#. module: project_long_term
+#: model:ir.actions.act_window,name:project_long_term.action_project_compute_tasks
+#: model:ir.ui.menu,name:project_long_term.menu_compute_tasks
+msgid "Compute Task Scheduling"
+msgstr "Izračunaj zakazivanje zadataka"
+
+#. module: project_long_term
+#: field:project.phase,constraint_date_start:0
+msgid "Minimum Start Date"
+msgstr "Minimalni početni datum"
+
+#. module: project_long_term
+#: model:ir.model,name:project_long_term.model_project_resource_allocation
+#: view:project.phase:0
+#: view:project.resource.allocation:0
+msgid "Project Resource Allocation"
+msgstr "Alokacija resursa projekta"
+
+#. module: project_long_term
+#: view:project.compute.tasks:0
+msgid "Compute Scheduling of Task"
+msgstr "Izračunaj zakazivanje zadatka"
+
+#. module: project_long_term
+#: model:ir.actions.act_window,name:project_long_term.act_project_resource
+#: model:ir.ui.menu,name:project_long_term.menu_pm_resources_project1
+#: model:ir.ui.menu,name:project_long_term.menu_view_resource
+#: view:project.resource.allocation:0
+msgid "Resources"
+msgstr "Resursi"
+
+#. module: project_long_term
+#: model:ir.actions.act_window,help:project_long_term.action_project_compute_phases
+msgid ""
+"To schedule phases of all or a specified project. It then open a gantt "
+"view.\n"
+"\t "
+msgstr ""
+"Za zakazivanje faza svih ili pojedinog projekta. Nakon toga otvara Gantt "
+"pogled.\n"
+"\t "
+
+#. module: project_long_term
+#: help:project.resource.allocation,date_start:0
+msgid "Starting Date"
+msgstr "Početni datum"
+
+#. module: project_long_term
+#: model:ir.actions.act_window,name:project_long_term.project_phase_task_list
+msgid "Related Tasks"
+msgstr "Vezani zadaci"
+
+#. module: project_long_term
+#: view:project.phase:0
+msgid "Dates"
+msgstr "Datumi"
+
+#. module: project_long_term
+#: help:project.resource.allocation,useability:0
+msgid ""
+"Availability of this resource for this project phase in percentage (=50%)"
+msgstr "Raspoloživost tog resursa za tu fazu projekta u postotku (=50%)"
+
+#. module: project_long_term
+#: help:project.phase,constraint_date_start:0
+msgid "force the phase to start after this date"
+msgstr "prisili početak faze nakon ovog datuma"
+
+#. module: project_long_term
+#: field:project.phase,task_ids:0
+msgid "Project Tasks"
+msgstr "Zadaci projekta"
+
+#. module: project_long_term
+#: field:project.phase,resource_ids:0
+msgid "Project Resources"
+msgstr "Resursi projekta"
+
+#. module: project_long_term
+#: view:project.schedule.tasks:0
+msgid "_Ok"
+msgstr "_U redu"
+
+#. module: project_long_term
+#: view:project.phase:0
+msgid "Schedule and Display info"
+msgstr "Zakaži i prikaži info"
+
+#. module: project_long_term
+#: help:project.phase,date_start:0
+msgid ""
+"It's computed by the scheduler according the project date or the end date of "
+"the previous phase."
+msgstr ""
+"Računa planer prema datumu projekta ili završnom datumu prethodne faze"
+
+#. module: project_long_term
+#: view:project.phase:0
+msgid "Month"
+msgstr "Mjesec"
+
+#. module: project_long_term
+#: constraint:project.phase:0
+msgid "Phase start-date must be lower than phase end-date."
+msgstr "Početni datum faze mora biti manje od završnog datuma faze."
+
+#. module: project_long_term
+#: model:ir.model,name:project_long_term.model_project_schedule_tasks
+msgid "project.schedule.tasks"
+msgstr "project.schedule.tasks"
+
+#. module: project_long_term
+#: model:ir.actions.act_window,help:project_long_term.act_project_phase
+msgid ""
+"A project can be split into the different phases. For each phase, you can "
+"define your resources allocation, describe different tasks and link your "
+"phase to previous and next phases, add date constraints for the automated "
+"scheduling. Use the long term planning in order to planify your available "
+"human resources, convert your phases into a series of tasks when you start "
+"working on the project."
+msgstr ""
+"Projekt je moguće podjeliti u različite faze. Za svaku fazu, možete "
+"definriati alokaciju resursa, opisati različite zadatke i povezati vašu fazu "
+"sa prethodnom i sljedećom fazom, dodati datumska ograničenja za automatsko "
+"zakazivanje. Koristite dugotrajno planiranje za vaše raspoložive ljudske "
+"resurse, pretvorite vaš faze u seriju zadataka nakon početka rada na "
+"projektu."
+
+#. module: project_long_term
+#: field:project.phase,date_start:0
+#: field:project.resource.allocation,date_start:0
+msgid "Start Date"
+msgstr "Početni datum"
+
+#. module: project_long_term
+#: view:project.phase:0
+msgid "Resource Allocation"
+msgstr "Alokacija resursa"
+
+#. module: project_long_term
+#: help:project.phase,constraint_date_end:0
+msgid "force the phase to finish before this date"
+msgstr "prisili završetak faze prije ovog datuma"
+
+#. module: project_long_term
+#: view:project.phase:0
+#: selection:project.phase,state:0
+msgid "Draft"
+msgstr "Nacrt"
+
+#. module: project_long_term
+#: view:project.phase:0
+#: selection:project.phase,state:0
+msgid "Pending"
+msgstr "Na čekanju"
+
+#. module: project_long_term
+#: field:project.resource.allocation,name:0
+msgid "unknown"
+msgstr "nepoznato"
+
+#. module: project_long_term
+#: field:project.resource.allocation,user_id:0
+msgid "User"
+msgstr "Korisnik"
+
+#. module: project_long_term
+#: view:project.phase:0
+msgid "Task Detail"
+msgstr "Pojedinosti o zadataku"
+
+#. module: project_long_term
+#: help:project.project,resource_calendar_id:0
+msgid "Timetable working hours to adjust the gantt diagram report"
+msgstr "Raspored radnih sati za prilagođavanje izvještaja Gantt dijagramom"
+
+#. module: project_long_term
+#: model:ir.model,name:project_long_term.model_project_compute_tasks
+msgid "Project Compute Tasks"
+msgstr "Izračun zadatka projekta"
+
+#. module: project_long_term
+#: view:project.phase:0
+msgid "Constraints"
+msgstr "Ograničenja"
+
+#. module: project_long_term
+#: help:project.phase,sequence:0
+msgid "Gives the sequence order when displaying a list of phases."
+msgstr "Daje redoslijed sekvence prilikom prikaza popisa faza."
+
+#. module: project_long_term
+#: model:ir.actions.act_window,name:project_long_term.act_project_phase
+#: model:ir.actions.act_window,name:project_long_term.act_project_phase_list
+#: model:ir.ui.menu,name:project_long_term.menu_project_phase
+#: model:ir.ui.menu,name:project_long_term.menu_project_phase_list
+#: view:project.phase:0
+#: field:project.project,phase_ids:0
+msgid "Project Phases"
+msgstr "Faze projekta"
+
+#. module: project_long_term
+#: view:project.phase:0
+#: selection:project.phase,state:0
+msgid "Done"
+msgstr "Izvršeno"
+
+#. module: project_long_term
+#: view:project.phase:0
+msgid "Cancel"
+msgstr "Odustani"
+
+#. module: project_long_term
+#: view:project.phase:0
+#: selection:project.phase,state:0
+msgid "In Progress"
+msgstr "U tijeku"
+
+#. module: project_long_term
+#: view:project.phase:0
+msgid "Remaining Hours"
+msgstr "Preostali sati"
+
+#. module: project_long_term
+#: view:project.phase:0
+#: field:project.phase,responsible_id:0
+msgid "Responsible"
+msgstr "Odgovoran"
+
+#. module: project_long_term
+#: model:ir.ui.menu,name:project_long_term.menu_view_resource_calendar
+#: field:project.project,resource_calendar_id:0
+msgid "Working Time"
+msgstr "Radno vrijeme"
+
+#. module: project_long_term
+#: view:project.phase:0
+msgid "Current"
+msgstr "Trenutni"
+
+#. module: project_long_term
+#: view:project.phase:0
+msgid "Start Phase"
+msgstr "Početna faza"
+
+#. module: project_long_term
+#: code:addons/project_long_term/wizard/project_compute_phases.py:50
+#, python-format
+msgid "Please Specify Project to be schedule"
+msgstr "Molim navedite projekt za zakazivanje"
+
+#. module: project_long_term
+#: view:project.phase:0
+#: field:project.phase,total_hours:0
+msgid "Total Hours"
+msgstr "Ukupni sati"
+
+#. module: project_long_term
+#: view:project.schedule.tasks:0
+msgid "Task Scheduling completed successfully."
+msgstr "Zakazivanje zdataka uspješno završeno"
+
+#. module: project_long_term
+#: view:project.compute.tasks:0
+msgid "Compute Scheduling of Task for specified project."
+msgstr "Izračunaj zakazivanje zadataka za odabrani projekt"
+
+#. module: project_long_term
+#: view:project.resource.allocation:0
+msgid "Phase"
+msgstr "Faza"
+
+#. module: project_long_term
+#: help:project.phase,state:0
+msgid ""
+"If the phase is created the state 'Draft'.\n"
+" If the phase is started, the state becomes 'In Progress'.\n"
+" If review is needed the phase is in 'Pending' state. "
+" \n"
+" If the phase is over, the states is set to 'Done'."
+msgstr ""
+"Ako je faza kreirana u statusu 'Nacrt'.\n"
+" AKo je faza započela, status se mijenja u 'U tijeku'.\n"
+" Ako je potreban pregled faza je u statusu 'Na čekanju'. "
+" \n"
+" Ako je faza završila, status je postavljen na 'Završeno'."
+
+#. module: project_long_term
+#: field:project.phase,date_end:0
+#: field:project.resource.allocation,date_end:0
+msgid "End Date"
+msgstr "Završni Datum"
+
+#. module: project_long_term
+#: view:project.resource.allocation:0
+#: field:project.resource.allocation,resource_id:0
+msgid "Resource"
+msgstr "Resurs"
+
+#. module: project_long_term
+#: field:project.phase,name:0
+msgid "Name"
+msgstr "Naziv"
+
+#. module: project_long_term
+#: view:project.phase:0
+msgid "Tasks Details"
+msgstr "Pojedinosti zadatka"
+
+#. module: project_long_term
+#: model:ir.ui.menu,name:project_long_term.menu_view_resource_calendar
+msgid "Working Period"
+msgstr "Razdoblje rada"
+
+#. module: project_long_term
+#: model:ir.model,name:project_long_term.model_resource_resource
+msgid "Resource Detail"
+msgstr "Pojedinosti resursa"
+
+#. module: project_long_term
+#: model:ir.ui.menu,name:project_long_term.menu_phase_schedule
+msgid "Scheduling"
+msgstr "Zakazivanje"
+
+#. module: project_long_term
+#: model:ir.model,name:project_long_term.model_project_phase
+#: view:project.phase:0
+#: field:project.resource.allocation,phase_id:0
+#: view:project.task:0
+#: field:project.task,phase_id:0
+msgid "Project Phase"
+msgstr "Faza projekta"
+
+#. module: project_long_term
+#: model:ir.model,name:project_long_term.model_project_compute_phases
+msgid "Project Compute Phases"
+msgstr "Izračun faza projekta"
+
+#. module: project_long_term
+#: field:project.schedule.tasks,msg:0
+msgid "Message"
+msgstr "Poruka"
+
+#. module: project_long_term
+#: constraint:project.phase:0
+msgid "Loops in phases not allowed"
+msgstr "Petlje u fazama nisu dozvoljene"
+
+#. module: project_long_term
+#: field:project.phase,sequence:0
+msgid "Sequence"
+msgstr "Sekvenca"
+
+#. module: project_long_term
+#: selection:project.compute.phases,target_project:0
+msgid "Compute All Projects"
+msgstr "Izračunaj sve projekte"
+
+#. module: project_long_term
+#: model:ir.ui.menu,name:project_long_term.menu_view_resource_calendar_leaves
+msgid "Resource Leaves"
+msgstr "Odsustva resursa"
+
+#. module: project_long_term
+#: model:ir.actions.act_window,name:project_long_term.action_project_schedule_tasks
+#: view:project.phase:0
+#: view:project.schedule.tasks:0
+msgid "Schedule Tasks"
+msgstr "Zakaži zadatke"
+
+#. module: project_long_term
+#: help:project.phase,duration:0
+msgid "By default in days"
+msgstr "Predefinirano u danima"
+
+#. module: project_long_term
+#: field:project.phase,duration:0
+msgid "Duration"
+msgstr "Trajanje"
diff --git a/addons/project_long_term/project_long_term.py b/addons/project_long_term/project_long_term.py
index ac0ad4b150a..1be274bc4f6 100644
--- a/addons/project_long_term/project_long_term.py
+++ b/addons/project_long_term/project_long_term.py
@@ -73,11 +73,6 @@ class project_phase(osv.osv):
return False
return True
- def _get_default_uom_id(self, cr, uid):
- model_data_obj = self.pool.get('ir.model.data')
- model_data_id = model_data_obj._get_id(cr, uid, 'product', 'uom_hour')
- return model_data_obj.read(cr, uid, [model_data_id], ['res_id'])[0]['res_id']
-
def _compute_progress(self, cr, uid, ids, field_name, arg, context=None):
res = {}
if not ids:
@@ -179,7 +174,7 @@ class project_phase(osv.osv):
'months': 'm', 'month':'month', 'm':'m',
'weeks': 'w', 'week': 'w', 'w':'w',
'hours': 'H', 'hour': 'H', 'h':'H',
- }.get(phase.product_uom.name.lower(), "h")
+ }.get(phase.product_uom.name.lower(), "H")
duration = str(phase.duration) + duration_uom
result += '''
def Phase_%s():
diff --git a/addons/project_long_term/project_long_term_demo.xml b/addons/project_long_term/project_long_term_demo.xml
index fe3f8c8e510..4cd6d5cdec4 100644
--- a/addons/project_long_term/project_long_term_demo.xml
+++ b/addons/project_long_term/project_long_term_demo.xml
@@ -5,6 +5,10 @@
This Demo data file Human Resources, Phases and Resources,Tasks allocation and also run scheduling of phase and tasks.
-->
+
+
+
+
@@ -13,6 +17,7 @@
30
+
@@ -37,9 +42,9 @@
-
+
-
+ Development and Integration
@@ -60,7 +65,7 @@
Deployement and Training
-
+ 10
diff --git a/addons/project_long_term/security/ir.model.access.csv b/addons/project_long_term/security/ir.model.access.csv
index 4382d27834e..6ca496f691d 100644
--- a/addons/project_long_term/security/ir.model.access.csv
+++ b/addons/project_long_term/security/ir.model.access.csv
@@ -1,9 +1,9 @@
-"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
-"access_project_phase","project.phase","model_project_phase","project.group_project_user",1,1,1,0
-"access_project_user_allocation","project.user.allocation","model_project_user_allocation","project.group_project_user",1,0,0,0
-"access_project_phase_manager","project.phase manager","model_project_phase","project.group_project_manager",1,1,1,1
-"access_project_user_allocation_manager","project.user.allocation manager","model_project_user_allocation","project.group_project_manager",1,1,1,1
-"access_resource_resource_user","user.user user","resource.model_resource_resource","project.group_project_user",1,0,0,0
-"access_resource_calendar_leaves_user","user.calendar.leaves user","resource.model_resource_calendar_leaves","project.group_project_user",1,1,1,1
-"access_resource_resource_manager","user.user manager","resource.model_resource_resource","project.group_project_manager",1,1,1,1
-"access_project_user_allocation_manager","project.user.allocation.manager","model_project_user_allocation","project.group_project_manager",1,1,1,1
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+access_project_phase,project.phase,model_project_phase,project.group_project_user,1,1,1,0
+access_project_user_allocation,project.user.allocation,model_project_user_allocation,project.group_project_user,1,0,0,0
+access_project_phase_manager,project.phase manager,model_project_phase,project.group_project_manager,1,1,1,1
+access_project_user_allocation_manager,project.user.allocation manager,model_project_user_allocation,project.group_project_manager,1,1,1,1
+access_resource_resource_user,user.user user,resource.model_resource_resource,project.group_project_user,1,0,0,0
+access_resource_calendar_leaves_user,user.calendar.leaves user,resource.model_resource_calendar_leaves,project.group_project_user,1,1,1,1
+access_resource_resource_manager,user.user manager,resource.model_resource_resource,project.group_project_manager,1,1,1,1
+access_project_user_allocation_manager,project.user.allocation.manager,model_project_user_allocation,project.group_project_manager,1,1,1,1
diff --git a/addons/project_long_term/test/phase_constraint.yml b/addons/project_long_term/test/phase_constraint.yml
deleted file mode 100644
index f4fa09e6e38..00000000000
--- a/addons/project_long_term/test/phase_constraint.yml
+++ /dev/null
@@ -1,118 +0,0 @@
--
- Given that I have a project 'Test Phases'.
--
- !record {model: project.project, id: project_project_developyamlproject0}:
- name: "Develop Yaml Project Module"
- date_start: !eval time.strftime('%Y-%m-%d')
- resource_calendar_id: resource.timesheet_group1
- members:
- - base.user_admin
--
- And I create three human ressources to work on this project, an analyst.
--
- !record {model: resource.resource, id: resource_resource_analyst1}:
- calendar_id: resource.timesheet_group1
- name: Analyst
- resource_type: user
- time_efficiency: 1.0
- user_id: base.user_admin
--
- I define a developer HR.
--
- !record {model: resource.resource, id: resource_resource_develop0}:
- calendar_id: resource.timesheet_group1
- name: Developer
- resource_type: user
- time_efficiency: 1.0
- user_id: base.user_admin
--
- I define a tester HR.
--
- !record {model: resource.resource, id: resource_resource_tester1}:
- calendar_id: resource.timesheet_group1
- name: tester
- resource_type: user
- time_efficiency: 1.0
- user_id: base.user_admin
--
- Then I create three phases for my projects; Analysis, Development, Testing.
--
- The first phase is 'Analysis' and has a duration of 6 days.
--
- !record {model: project.phase, id: project_phase_analysisflowforyaml0}:
- date_start: !eval time.strftime('%Y-%m-%d')
- duration: 6.0
- name: "Analysis"
- product_uom: product.uom_day
- project_id: project_project_developyamlproject0
- state: draft
-
--
- I update the constrain and the analysis phase to not start before 4 days.
--
- !python {model : project.phase }: |
- pass
- import datetime
- from dateutil.relativedelta import *
- start = datetime.date.today() + relativedelta(days=4)
- self.write(cr,uid, [(ref("project_phase_analysisflowforyaml0"))], {'constraint_date_start': start})
--
- The second phase is 'Development' and depend on the 'Analysis', with a duration of 6 days.
--
- !record {model: project.phase, id: project_phase_developyaml0}:
- duration: 6.0
- name: Development
- product_uom: product.uom_day
- project_id: project_project_developyamlproject0
- previous_phase_ids:
- - project_phase_analysisflowforyaml0
-
--
- I update the Constrain Date Start adn Date End for phase Develop yaml
--
- !python {model : project.phase }: |
- pass
- import datetime
- #from dateutil.relativedelta import *
- #start = datetime.date.today() - relativedelta(days=5)
- #end = datetime.date.today() + relativedelta(days=10)
- #self.write(cr,uid, [(ref("project_phase_developyaml0"))], {'constraint_date_start': start, 'constraint_date_end':end})
--
- The third phase is 'Testing' and depend on the 'Develop' phase, with a duration of 6 days.
--
- !record {model: project.phase, id: project_phase_testyaml0}:
- duration: 6.0
- name: Testing
- product_uom: product.uom_day
- project_id: project_project_developyamlproject0
- previous_phase_ids:
- - project_phase_developyaml0
--
- Then I launch the scheduler to compute starting and ending phases on all phases of this project.
--
- !record {model: project.compute.phases, id: project_compute_phases_0}:
- project_id: project_project_developyamlproject0
- target_project: one
--
- !python {model: project.project}: |
- self.schedule_phases(cr, uid, [ref("project_project_developyamlproject0")])
--
- After scheduling, I check the starting date and ending date on the phases are correct.
--
- !python {model: project.phase}: |
- import datetime
- from dateutil.relativedelta import *
- minstart = (datetime.date.today() + relativedelta(days=4)).strftime('%Y-%m-%d')
- minend = (datetime.date.today() + relativedelta(days=11)).strftime('%Y-%m-%d')
-
- phase1=self.browse(cr, uid, ref('project_phase_analysisflowforyaml0'))
- assert phase1.date_start>=minstart, 'Error, the Analysis phase '+phase1.date_start+' should start after '+str(minstart)
- assert phase1.date_end>=minend, 'Error, the Analysis phase should end after '+str(minend)
-
- phase2=self.browse(cr, uid, ref('project_phase_developyaml0'))
- assert phase2.date_start>=phase1.date_end, 'Error, the phase Development should start after the end of the Analysis phase'
-
- phase3=self.browse(cr, uid, ref('project_phase_testyaml0'))
- assert phase3.date_start>=phase2.date_end, 'Error, the phase Testing should start after the end of the Development phase'
- assert phase3.date_start= _convert(phase.date_end), "Phase does not start in proper date."
+ _check(next_phase, _convert, _check)
+ return True
+
+ for phase in project.phase_ids:
+
+ assert phase.date_start, "Start date should be computed."
+ assert phase.date_end, "End date should be computed."
+ if not phase.previous_phase_ids and phase.constraint_date_start:
+ assert _convert(phase.date_start) >= _convert(phase.constraint_date_start), "Phase does not start in proper date."
+ _check(phase, _convert, _check)
+-
+ I open phase.
+-
+ !python {model: project.phase}: |
+ self.set_open(cr, uid, [ref("project_phase_1")])
+-
+ I check state of phase after opened.
+-
+ !assert {model: project.phase, id: project_phase_1, severity: error, string: Phase should be in open state}:
+ - state == "open"
+-
+ I put phase in pending state.
+-
+ !python {model: project.phase}: |
+ self.set_pending(cr, uid, [ref("project_phase_1")])
+-
+ I check state of phase after put in pending.
+-
+ !assert {model: project.phase, id: project_phase_1, severity: error, string: Phase should be in pending state}:
+ - state == "pending"
+-
+ I make Phase in cancel state.
+-
+ !python {model: project.phase}: |
+ self.set_cancel(cr, uid, [ref("project_phase_1")])
+-
+ I check state of phase after cancelled.
+-
+ !assert {model: project.phase, id: project_phase_1, severity: error, string: Phase should be in cancel state}:
+ - state == "cancelled"
+-
+ I put again in draft phase.
+-
+ !python {model: project.phase}: |
+ self.set_draft(cr, uid, [ref("project_phase_1")])
+-
+ I close phase.
+-
+ !python {model: project.phase}: |
+ self.set_done(cr, uid, [ref("project_phase_1")])
+-
+ I check state of phase after closed.
+-
+ !assert {model: project.phase, id: project_phase_1, severity: error, string: Phase should be in done state}:
+ - state == "done"
diff --git a/addons/project_long_term/test/project_schedule_consecutive_day.yml b/addons/project_long_term/test/project_schedule_consecutive_day.yml
deleted file mode 100644
index cffe06a9ff9..00000000000
--- a/addons/project_long_term/test/project_schedule_consecutive_day.yml
+++ /dev/null
@@ -1,127 +0,0 @@
--
- Create a project 'Develop yaml Project Module'.
--
- !record {model: project.project, id: project_project_developyamlproject_2}:
- name: "Develop Yaml Project Module"
- date_start: !eval time.strftime('%Y-%m-%d')
- members:
- - base.user_admin
-
--
- I have set Working Time from Monday to Friday from 9am to 17pm.
--
- !record {model: resource.calendar, id: resource_calendar_hoursweekstest_P2}:
- name: "from Monday to Friday, from 9am to 17pm"
-
--
- I have set Day1 Working Time for Monday to Friday from 9am to 17pm working hour
--
- !record {model: resource.calendar.attendance, id: resource_calendar_hoursweekstest_P2day1}:
- name: "Day1"
- hour_from : 09.00
- hour_to : 17.00
- dayofweek : "0"
- calendar_id : resource_calendar_hoursweekstest_P2
-
--
- I have set Day2 Working Time for Monday to Friday from 9am to 17pm working hour
--
- !record {model: resource.calendar.attendance, id: rresource_calendar_hoursweekstest_P2day2}:
- name: "Day2"
- hour_from : 09.00
- hour_to : 17.00
- dayofweek : "1"
- calendar_id : resource_calendar_hoursweekstest_P2
-
--
- I have set Day3 Working Time for Monday to Friday from 9am to 17pm working hour
--
- !record {model: resource.calendar.attendance, id: resource_calendar_hoursweekstest_P2day3}:
- name: "Day3"
- hour_from : 09.00
- hour_to : 17.00
- dayofweek : "2"
- calendar_id : resource_calendar_hoursweekstest_P2
-
--
- I have set Day4 Working Time for Monday to Friday from 9am to 17pm working hour
--
- !record {model: resource.calendar.attendance, id: resource_calendar_hoursweekstest_P2day4}:
- name: "Day4"
- hour_from: 09.00
- hour_to: 17.00
- dayofweek: "3"
- calendar_id: resource_calendar_hoursweekstest_P2
-
--
- I have set Day5 Working Time for Monday to Friday from 9am to 17pm working hour
--
- !record {model: resource.calendar.attendance, id: resource_calendar_hoursweekstest_P2day5}:
- name: "Day5"
- hour_from: 09.00
- hour_to: 17.00
- dayofweek: "4"
- calendar_id: resource_calendar_hoursweekstest_P2
-
--
- Now Set working period to Project 'Develop yaml Project Module'
--
- !python {model: project.project}: |
- self.write(cr, uid, [ref("project_project_developyamlproject_2")], {'resource_calendar_id': ref("resource_calendar_hoursweekstest_P2")})
-
--
- Create 3 a project phase.
- First 'Analysis Flow for Yaml'Project Phase
--
- !record {model: project.phase, id: project_project_developyamlproject_2_Phase1}:
- date_start: !eval time.strftime('%Y-%m-%d')
- duration: 5.0
- name: "Analysis Flow for Yaml"
- product_uom: product.uom_day
- project_id: project_project_developyamlproject_2
- state: draft
-
--
- Create project phase 'Develop yaml'
--
- !record {model: project.phase, id: project_project_developyamlproject_2_Phase2}:
- duration: 5.0
- name: Develop Yaml
- product_uom: product.uom_day
- project_id: project_project_developyamlproject_2
- previous_phase_ids:
- - project_project_developyamlproject_2_Phase1
-
--
- Create project phase 'Test Yaml'
--
- !record {model: project.phase, id: project_project_developyamlproject_2_Phase3}:
- duration: 5.0
- name: Testing Yaml
- product_uom: product.uom_day
- project_id: project_project_developyamlproject_2
- previous_phase_ids:
- - project_project_developyamlproject_2_Phase2
-
--
- Compute Schedule of phases For One project
--
- !record {model: project.compute.phases, id: project_compute_phases_0}:
- project_id: project_project_developyamlproject_2
- target_project: one
--
- Schedule project phases using Compute Phase Scheduling
--
- !python {model: project.project}: |
- self.schedule_phases(cr, uid, [ref("project_project_developyamlproject_2")])
-
--
- After scheduling, Check that phases scheduled, check that either of phase's start_date, end_date not null.
--
- !python {model: project.project}: |
- proj=self.browse(cr, uid, [ref("project_project_developyamlproject_2")])[0]
- for phase in proj.phase_ids:
- if (not phase.date_start) or (not phase.date_end):
- raise AssertionError("Phases not scheduled")
-
-
diff --git a/addons/project_long_term/test/project_schedule_without_wroking_hour.yml b/addons/project_long_term/test/project_schedule_without_wroking_hour.yml
deleted file mode 100644
index 4fe7687425b..00000000000
--- a/addons/project_long_term/test/project_schedule_without_wroking_hour.yml
+++ /dev/null
@@ -1,76 +0,0 @@
--
- Create a project 'Develop yaml Implementation Module'.
--
- !record {model: project.project, id: project_project_developyamlproject_2}:
- name: "Develop Yaml Project Module"
- date_start: !eval time.strftime('%Y-%m-%d')
-
--
- Create 4 Project phase.
- First Project Phase 'Analysis Flow for Yaml'
--
- !record {model: project.phase, id: project_project_developyamlproject_2_phase_1}:
- date_start: !eval time.strftime('%Y-%m-%d')
- duration: 6.0
- product_uom: product.uom_day
- name: "Analysis Flow for Yaml"
- project_id: project_project_developyamlproject_2
- state: draft
-
--
- Create project phase 'Develop yaml'
--
- !record {model: project.phase, id: project_project_developyamlproject_2_phase_2}:
- duration: 6.0
- name: "Develop yaml"
- product_uom: product.uom_day
- project_id: project_project_developyamlproject_2
- previous_phase_ids:
- - project_project_developyamlproject_2_phase_1
- state: draft
--
- Create project phase 'Test Yaml'
--
- !record {model: project.phase, id: project_project_developyamlproject_2_phase_3}:
- duration: 6.0
- name: Testing Yaml
- product_uom: product.uom_day
- project_id: project_project_developyamlproject_2
- previous_phase_ids:
- - project_project_developyamlproject_2_phase_2
- state: draft
-
--
- Create project phase 'Implement Yaml'
--
- !record {model: project.phase, id: project_project_developyamlproject_2_phase_4}:
- duration: 6.0
- name: Testing Yaml
- product_uom: product.uom_day
- project_id: project_project_developyamlproject_2
- previous_phase_ids:
- - project_project_developyamlproject_2_phase_3
- state: draft
--
- Compute Schedule of phases For One project
--
- !record {model: project.compute.phases, id: project_compute_phases_0}:
- project_id: project_project_developyamlproject_2
- target_project: one
-
--
- Schedule project phases using Compute Phase Scheduling
--
- !python {model: project.project}: |
- self.schedule_phases(cr, uid, [ref("project_project_developyamlproject_2")])
-
--
- After scheduling, Check that phases scheduled, check that either of phase's start_date, end_date not null.
--
- !python {model: project.project}: |
- proj=self.browse(cr, uid, [ref("project_project_developyamlproject_2")])[0]
- for phase in proj.phase_ids:
- if (not phase.date_start) or (not phase.date_end):
- raise AssertionError("Phases not scheduled")
-
-
diff --git a/addons/project_long_term/test/schedule_project_phases.yml b/addons/project_long_term/test/schedule_project_phases.yml
deleted file mode 100644
index 550787fe867..00000000000
--- a/addons/project_long_term/test/schedule_project_phases.yml
+++ /dev/null
@@ -1,180 +0,0 @@
--
- Create a project 'World Bank's Project'
--
- !record {model: project.project, id: project_project_worldbanksproject0}:
- name: "World Bank's Project"
- priority: 4
- members:
- - project.res_users_analyst
- - project.res_users_project_manager
- - project.res_users_technical_leader
- - project.res_users_developer
- - project.res_users_designer
- - project.res_users_tester
-
--
- Create a project phase 'Defining Client's Basic Idea of Project'
--
- !record {model: project.phase, id: project_phase_definingclientsbasicideaofproject0}:
- date_start: !eval time.strftime('%Y-%m-%d')
- duration: 15.0
- name: "Defining Client's Basic Idea of Project"
- product_uom: product.uom_day
- project_id: project_project_worldbanksproject0
-
--
- Create project phase 'Establishing Project Feasibility'
--
- !record {model: project.phase, id: project_phase_establishingprojectfeasibility0}:
- date_start: !eval time.strftime('%Y-%m-%d')
- duration: 30.0
- name: Establishing Project Feasibility
- product_uom: product.uom_day
- project_id: project_project_worldbanksproject0
--
- Create the phase task 'Develop GUI for Server Configuration'
--
- !record {model: project.task, id: project_task_t0}:
- name: Develop GUI for Server Configuration
- planned_hours: 20.0
- state: draft
- phase_id: project_phase_definingclientsbasicideaofproject0
- project_id: project_project_worldbanksproject0
-
--
- Create the phase task 'Develop GUI for Modules Configuration'
--
- !record {model: project.task, id: project_task_t1}:
- name: Develop GUI for Modules Configuration
- planned_hours: 25.0
- remaining_hours: 25.0
- state: draft
- phase_id: project_phase_definingclientsbasicideaofproject0
- project_id: project_project_worldbanksproject0
-
--
- Create project phase 'Preparation of Engineering Designs'
--
- !record {model: project.phase, id: project_phase_preparationofengineeringdesigns0}:
- date_start: !eval time.strftime('%Y-%m-%d')
- duration: 100.0
- name: Preparation of Engineering Designs
- product_uom: product.uom_hour
- project_id: project_project_worldbanksproject0
-
--
- Create the phase task 'Develop GUI for Client Configuration'
--
- !record {model: project.task, id: project_task_t2}:
- name: Develop GUI for Server Configuration
- planned_hours: 20.0
- remaining_hours: 20.0
- state: draft
- phase_id: project_phase_preparationofengineeringdesigns0
- project_id: project_project_worldbanksproject0
-
--
- Create the phase task 'Develop GUI for Client Module Configuration'
--
- !record {model: project.task, id: project_task_t3}:
- name: Develop GUI for Modules Configuration
- planned_hours: 25.0
- remaining_hours: 25.0
- state: draft
- phase_id: project_phase_preparationofengineeringdesigns0
- project_id: project_project_worldbanksproject0
-
-
--
- Create project phase 'Procurement of Works and Goods'
--
- !record {model: project.phase, id: project_phase_procurementofworksandgoods0}:
- date_start: !eval time.strftime('%Y-%m-%d')
- duration: 24.0
- name: Procurement of Works and Goods
- product_uom: product.uom_hour
- project_id: project_project_worldbanksproject0
-
--
- Create project phase 'Project Construction'
--
- !record {model: project.phase, id: project_phase_projectconstruction0}:
- date_start: !eval time.strftime('%Y-%m-%d')
- duration: 4320.0
- name: Project Construction
- product_uom: product.uom_hour
- project_id: project_project_worldbanksproject0
-
-
--
- Create project phase 'Project Completion'
--
- !record {model: project.phase, id: project_phase_projectcompletion0}:
- date_start: !eval time.strftime('%Y-%m-%d')
- duration: 240.0
- name: Project Completion
- product_uom: product.uom_hour
- project_id: project_project_worldbanksproject0
-
--
- Set previous phase for phase 'Establishing Project Feasibility'
--
- !record {model: project.phase, id: project_phase_establishingprojectfeasibility0}:
- previous_phase_ids:
- - project_phase_definingclientsbasicideaofproject0
-
-
--
- Set previous phase for phase 'Preparation of Engineering Designs'
--
- !record {model: project.phase, id: project_phase_preparationofengineeringdesigns0}:
- previous_phase_ids:
- - project_phase_establishingprojectfeasibility0
-
--
- Set previous phase for phase 'Procurement of Works and Goods'
--
- !record {model: project.phase, id: project_phase_procurementofworksandgoods0}:
- previous_phase_ids:
- - project_phase_preparationofengineeringdesigns0
-
--
- Set previous phase for phase 'Project Construction'
--
- !record {model: project.phase, id: project_phase_projectconstruction0}:
- previous_phase_ids:
- - project_phase_procurementofworksandgoods0
-
-
--
- Set previous phase for phase 'Project Completion'
--
- !record {model: project.phase, id: project_phase_projectcompletion0}:
- previous_phase_ids:
- - project_phase_projectconstruction0
-
-
--
- Get the project to schedule phases
--
- !record {model: project.compute.phases, id: project_compute_phases_0}:
- project_id: project_project_worldbanksproject0
- target_project: one
-
-
--
- Schedule project phases
--
- !python {model: project.project}: |
- self.schedule_phases(cr, uid, ref("project_project_worldbanksproject0"))
-
--
- Check if phases scheduled, check that either of phase's start_date, end_date and user_id is not null
--
- !python {model: project.project}: |
- prj=self.browse(cr, uid, [ref("project_project_worldbanksproject0")])[0]
- for phase in prj.phase_ids:
- if (not phase.date_start) or (not phase.date_end):
- raise AssertionError("Tasks not scheduled")
-
-
diff --git a/addons/project_long_term/test/schedule_project_tasks.yml b/addons/project_long_term/test/schedule_project_tasks.yml
deleted file mode 100644
index 17db7ef8038..00000000000
--- a/addons/project_long_term/test/schedule_project_tasks.yml
+++ /dev/null
@@ -1,86 +0,0 @@
--
- Create project 'Develop a thunderbird-openerp synchronization plugin'
--
- !record {model: project.project, id: project_project_project1}:
- name: Develop a thunderbird-openerp synchronization plugin
- members:
- - project.res_users_project_manager
- - project.res_users_technical_leader
- - project.res_users_developer
- - project.res_users_designer
- - project.res_users_tester
- - project.res_users_analyst
- - project.res_users_finacial_manager
-
--
- Create phase 'Develop GUI' in thunderbird
--
- !record {model: project.phase, id: project_phase_phase1}:
- date_start: !eval time.strftime('%Y-%m-%d %H:%M:%S')
- duration: 200.0
- name: Develop GUI in thunderbird
- product_uom: product.uom_day
- project_id: project_project_project1
- state: draft
--
- Create the phase task 'Develop GUI for Server Configuration'
--
- !record {model: project.task, id: project_task_t10}:
- name: Develop GUI for Server Configuration
- planned_hours: 20.0
- remaining_hours: 20.0
- state: draft
- phase_id: project_phase_phase1
- project_id: project_project_project1
- user_id: project.res_users_developer
-
--
- Create the phase task 'Develop GUI for Modules Configuration'
--
- !record {model: project.task, id: project_task_t11}:
- name: Develop GUI for Modules Configuration
- planned_hours: 25.0
- remaining_hours: 25.0
- state: draft
- phase_id: project_phase_phase1
- project_id: project_project_project1
- user_id: project.res_users_developer
--
- Create the phase task 'Develop GUI for OpenERP Synchronisation'
--
- !record {model: project.task, id: project_task_t12}:
- name: Develop GUI for OpenERP Synchronisation
- planned_hours: 30.0
- remaining_hours: 30.0
- state: draft
- phase_id: project_phase_phase1
- project_id: project_project_project1
- user_id: project.res_users_developer
--
- Create the phase task 'Design required GUI/Menus'
--
- !record {model: project.task, id: project_task_13}:
- name: Design required GUI/Menus
- planned_hours: 25.0
- remaining_hours: 25.0
- state: draft
- phase_id: project_phase_phase1
- project_id: project_project_project1
- user_id: project.res_users_designer
-
--
- Schedule tasks
--
- !python {model: project.project}: |
- self.schedule_tasks(cr, uid, ref("project_project_project1"))
-
--
- Check if tasks scheduled, check that either of task's start_date, end_date and user_id is not null
--
- !python {model: project.project}: |
- prj = self.browse(cr, uid, [ref("project_project_project1")])[0]
- for task in prj.tasks:
- if task.state in ('done','cancelled'):
- continue
- if (not task.user_id) or (not task.date_start) or (not task.date_end):
- raise AssertionError("Project tasks not scheduled!")
diff --git a/addons/project_long_term/test/task_process.yml b/addons/project_long_term/test/task_process.yml
new file mode 100644
index 00000000000..64ecef73476
--- /dev/null
+++ b/addons/project_long_term/test/task_process.yml
@@ -0,0 +1,19 @@
+-
+ I create a record to compute the tasks of project.
+-
+ !record {model: project.compute.tasks, id: project_compute_tasks0}:
+ project_id: project.project_integrate_openerp
+-
+ I compute and shedule the tasks.
+-
+ !python {model: project.compute.tasks}: |
+ self.compute_date(cr, uid, [ref("project_compute_tasks0")])
+-
+ Check if tasks scheduled, check that either of task's start_date, end_date and user_id is not null
+-
+ !python {model: project.project}: |
+ prj = self.browse(cr, uid, [ref("project.project_integrate_openerp")])[0]
+ for task in prj.tasks:
+ if task.state in ('done','cancelled'):
+ continue
+ assert task.user_id and task.date_start and task.date_end, "Project tasks not scheduled"
diff --git a/addons/project_long_term/test/test_schedule_phases_case1.yml b/addons/project_long_term/test/test_schedule_phases_case1.yml
deleted file mode 100644
index 8b9ff5f3705..00000000000
--- a/addons/project_long_term/test/test_schedule_phases_case1.yml
+++ /dev/null
@@ -1,76 +0,0 @@
--
- In order to test scheduling of project phases, I create two different phases and
- test it with two different dates for scheduling.
--
- I create a project Development and Testing.
--
- !record {model: project.project, id: project_project_project_case1}:
- name: "Development and Testing"
- date_start: !eval time.strftime('%Y-%m-%d')
- balance: 0.0
- credit: 0.0
- currency_id: base.EUR
- debit: 0.0
- effective_hours: 0.0
- members:
- - base.user_admin
-
- planned_hours: 0.0
- progress_rate: 0.0
- quantity: 0.0
- quantity_max: 0.0
- state: open
- type_ids:
- - project.project_tt_specification
- - project.project_tt_development
- - project.project_tt_testing
- - project.project_tt_merge
--
- I create first phase of the project.
--
- !record {model: project.phase, id: project_phase_firstphase0_case1}:
- duration: 2.0
- name: First Phase
- product_uom: product.uom_day
- project_id: project_project_project_case1
- state: draft
--
- I create second phase of the project.
--
- !record {model: project.phase, id: project_phase_secondphase0_case2}:
- duration: 3.0
- name: Second Phase
- previous_phase_ids:
- - project_phase_firstphase0_case1
- product_uom: product.uom_day
- project_id: project_project_project_case1
- state: draft
--
- Now I create a record to compute the phase of project.
--
- !record {model: project.compute.phases, id: project_compute_phases0}:
- target_project: 'one'
- project_id: project_project_project_case1
--
- I schedule the phases.
--
- !python {model: project.compute.phases}: |
- self.check_selection(cr, uid, [ref("project_compute_phases0")])
--
- I check the starting and ending dates of both phases.
--
- !python {model: project.phase}: |
- import datetime
- from dateutil.relativedelta import *
- start = (datetime.date.today()).strftime('%Y-%m-%d')
- end = (datetime.date.today() + relativedelta(days=1)).strftime('%Y-%m-%d 17:00:00')
- first_phase = self.browse(cr, uid, ref('project_phase_firstphase0_case1'))
- assert (first_phase.date_start[:10] >= start),'Start dates are wrong: %s < %s !' % (first_phase.date_start[:10], start)
- assert (first_phase.date_end >= end),'End dates are wrong: %s <%s!' % (first_phase.date_end, end)
-
- second_phase = self.browse(cr, uid, ref('project_phase_secondphase0_case2'))
- start = first_phase.date_end
- end = (datetime.date.today() + relativedelta(days=4)).strftime('%Y-%m-%d')
- assert second_phase.date_start >= start, 'Dates are wrong on second phase: %s < %s!' % (second_phase.date_start, start)
- assert second_phase.date_end >= end, 'Dates are wrong on second phase %s < %s!' % (second_phase.date_end, end)
-
diff --git a/addons/project_long_term/test/test_schedule_phases_case2.yml b/addons/project_long_term/test/test_schedule_phases_case2.yml
deleted file mode 100644
index 35173a897a3..00000000000
--- a/addons/project_long_term/test/test_schedule_phases_case2.yml
+++ /dev/null
@@ -1,193 +0,0 @@
--
- In order to test scheduling of project phases, I create two different
- working periods and resources. And schedule the phases.
--
- I create first working period 'Working Time A'.
--
- !record {model: resource.calendar, id: resource_calendar_workingtimea0}:
- attendance_ids:
- - dayofweek: '0'
- hour_from: 10.0
- hour_to: 16.0
- name: Monday
- - dayofweek: '1'
- hour_from: 10.0
- hour_to: 16.0
- name: Tuesday
- - dayofweek: '2'
- hour_from: 10.0
- hour_to: 16.0
- name: Wednesday
- - dayofweek: '3'
- hour_from: 10.0
- hour_to: 16.0
- name: Thursday
- name: Working Time A
-
--
- Creating a resource.calendar.attendance record
--
- !record {model: resource.calendar.attendance, id: resource_calendar_attendance_monday0}:
- calendar_id: resource_calendar_workingtimea0
- dayofweek: '0'
- hour_from: 10.0
- hour_to: 16.0
- name: Monday
--
- Creating a resource.calendar.attendance record
--
- !record {model: resource.calendar.attendance, id: resource_calendar_attendance_tuesday0}:
- calendar_id: resource_calendar_workingtimea0
- dayofweek: '1'
- hour_from: 10.0
- hour_to: 16.0
- name: Tuesday
--
- Creating a resource.calendar.attendance record
--
- !record {model: resource.calendar.attendance, id: resource_calendar_attendance_wednesday0}:
- calendar_id: resource_calendar_workingtimea0
- dayofweek: '2'
- hour_from: 10.0
- hour_to: 16.0
- name: Wednesday
--
- Creating a resource.calendar.attendance record
--
- !record {model: resource.calendar.attendance, id: resource_calendar_attendance_thursday0}:
- calendar_id: resource_calendar_workingtimea0
- dayofweek: '3'
- hour_from: 10.0
- hour_to: 16.0
- name: Thursday
--
- I create second working period 'Working Time B'.
--
- !record {model: resource.calendar, id: resource_calendar_workingtimeb0}:
- attendance_ids:
- - dayofweek: '4'
- hour_from: 9.0
- hour_to: 18.0
- name: Friday
- name: Working Time B
--
- Creating a resource.calendar.attendance record
--
- !record {model: resource.calendar.attendance, id: resource_calendar_attendance_friday0}:
- calendar_id: resource_calendar_workingtimeb0
- dayofweek: '4'
- hour_from: 9.0
- hour_to: 18.0
- name: Friday
--
- I create first resource say 'Resource X' without assigning working period.
--
- !record {model: resource.resource, id: resource_resource_resourcex0}:
- name: Resource X
- resource_type: user
- time_efficiency: 1.0
- user_id: base.user_admin
--
- I create first resource say 'Resource Y' with working period 'Working Time B'.
--
- !record {model: resource.resource, id: resource_resource_resourcey0}:
- calendar_id: resource_calendar_workingtimeb0
- name: Resource Y
- resource_type: user
- time_efficiency: 1.0
- user_id: base.user_admin
--
- I create a project 'Development and Testing' and assign working period 'Working Time A'.
--
- !record {model: project.project, id: project_project_project0}:
- balance: 0.0
- credit: 0.0
- currency_id: base.EUR
- debit: 0.0
- effective_hours: 0.0
- members:
- - base.user_admin
- name: Development and Testing
- planned_hours: 20.0
- progress_rate: 0.0
- quantity: 0.0
- quantity_max: 0.0
- resource_calendar_id: resource_calendar_workingtimea0
- state: open
- tasks:
- - delay_hours: 0.0
- effective_hours: 0.0
- name: Task 1
- planned_hours: 10.0
- remaining_hours: 10.0
- state: draft
- total_hours: 10.0
- - delay_hours: 0.0
- effective_hours: 0.0
- name: Task 2
- planned_hours: 10.0
- remaining_hours: 10.0
- state: draft
- total_hours: 10.0
- total_hours: 10.0
- members:
- - project.res_users_analyst
- - project.res_users_project_manager
- - project.res_users_technical_leader
- - project.res_users_developer
- - project.res_users_designer
- - project.res_users_tester
- type_ids:
- - project.project_tt_specification
- - project.project_tt_development
- - project.project_tt_testing
- - project.project_tt_merge
-
--
- I create a phase 'Initial Phase' for project 'Development and Testing'.
--
- !record {model: project.phase, id: project_phase_phase0}:
- date_start: '2011-01-03 08:00:00'
- duration: 0.0
- name: Initial Phase
- product_uom: product.uom_day
- project_id: project_project_project0
- state: draft
--
- I create first task 'Developing module' and assign 10h.
--
- !record {model: project.task, id: project_task_task0}:
- delay_hours: 0.0
- effective_hours: 0.0
- name: Developing module
- planned_hours: 10.0
- project_id: project_project_project0
- remaining_hours: 10.0
- state: draft
- total_hours: 10.0
- phase_id: project_phase_phase0
--
- I create first task 'Testing module' and assign 10h.
--
- !record {model: project.task, id: project_task_task1}:
- delay_hours: 0.0
- effective_hours: 0.0
- name: Testing module
- planned_hours: 10.0
- project_id: project_project_project0
- remaining_hours: 10.0
- state: draft
- total_hours: 10.0
- phase_id: project_phase_phase0
--
- Now I create a record to compute the phase of project.
--
- !record {model: project.compute.phases, id: project_compute_phases0}:
- target_project: 'one'
- project_id: project_project_project0
--
- I schedule the phases.
--
- !python {model: project.compute.phases}: |
- self.check_selection(cr, uid, [ref("project_compute_phases0")])
-
diff --git a/addons/project_long_term/test/test_schedule_tasks_case1.yml b/addons/project_long_term/test/test_schedule_tasks_case1.yml
deleted file mode 100644
index 3bb0ea87c43..00000000000
--- a/addons/project_long_term/test/test_schedule_tasks_case1.yml
+++ /dev/null
@@ -1,246 +0,0 @@
--
- In order to test scheduling of tasks, I create four tasks with different sequences and schedule them.
--
- I create first user.
--
- !record {model: res.users, id: res_users_user0}:
- company_id: base.main_company
- context_lang: en_US
- groups_id:
- - base.group_partner_manager
- - base.group_user
- login: user1
- name: User 1
- password: user1
--
- I create second user.
--
- !record {model: res.users, id: res_users_user1}:
- company_id: base.main_company
- context_lang: en_US
- groups_id:
- - base.group_partner_manager
- - base.group_user
- login: user2
- name: User 2
- password: user2
--
- I create a Project.
--
- !record {model: project.project, id: project_project_projecta0}:
- balance: 0.0
- credit: 0.0
- currency_id: base.EUR
- debit: 0.0
- effective_hours: 0.0
- name: Project A
- members:
- - res_users_user0
- - res_users_user1
- phase_ids:
- - date_start: '2011-01-06 08:00:00'
- duration: 2.0
- name: Phase A
- product_uom: product.uom_day
- state: draft
- task_ids:
- - delay_hours: 0.0
- effective_hours: 0.0
- name: Task D
- planned_hours: 5.0
- remaining_hours: 5.0
- state: draft
- total_hours: 5.0
- - delay_hours: 0.0
- effective_hours: 0.0
- name: Task C
- planned_hours: 5.0
- remaining_hours: 5.0
- sequence: 11
- state: draft
- total_hours: 5.0
- - delay_hours: 0.0
- effective_hours: 0.0
- name: Task B
- planned_hours: 5.0
- remaining_hours: 5.0
- sequence: 13
- state: draft
- total_hours: 5.0
- - delay_hours: 0.0
- effective_hours: 0.0
- name: Task A
- planned_hours: 5.0
- remaining_hours: 5.0
- sequence: 14
- state: draft
- total_hours: 5.0
- planned_hours: 20.0
- progress_rate: 0.0
- quantity: 0.0
- quantity_max: 0.0
- state: open
- tasks:
- - delay_hours: 0.0
- effective_hours: 0.0
- name: Task D
- planned_hours: 5.0
- remaining_hours: 5.0
- state: draft
- total_hours: 5.0
- - delay_hours: 0.0
- effective_hours: 0.0
- name: Task C
- planned_hours: 5.0
- remaining_hours: 5.0
- sequence: 11
- state: draft
- total_hours: 5.0
- - delay_hours: 0.0
- effective_hours: 0.0
- name: Task B
- planned_hours: 5.0
- remaining_hours: 5.0
- sequence: 13
- state: draft
- total_hours: 5.0
- - delay_hours: 0.0
- effective_hours: 0.0
- name: Task A
- planned_hours: 5.0
- remaining_hours: 5.0
- sequence: 14
- state: draft
- total_hours: 5.0
- total_hours: 15.0
--
- I create first task with highest sequence.
--
- !record {model: project.task, id: project_task_taska0}:
- delay_hours: 0.0
- effective_hours: 0.0
- name: Task A
- planned_hours: 5.0
- project_id: project_project_projecta0
- remaining_hours: 5.0
- sequence: 14
- state: draft
- total_hours: 5.0
--
- I create second task.
--
- !record {model: project.task, id: project_task_taskb0}:
- delay_hours: 0.0
- effective_hours: 0.0
- name: Task B
- planned_hours: 5.0
- project_id: project_project_projecta0
- remaining_hours: 5.0
- sequence: 13
- state: draft
- total_hours: 5.0
--
- I create third task.
--
- !record {model: project.task, id: project_task_taskc0}:
- delay_hours: 0.0
- effective_hours: 0.0
- name: Task C
- planned_hours: 5.0
- project_id: project_project_projecta0
- remaining_hours: 5.0
- sequence: 11
- state: draft
- total_hours: 5.0
--
- I create fourth task with lowest sequence.
--
- !record {model: project.task, id: project_task_taskd0}:
- delay_hours: 0.0
- effective_hours: 0.0
- name: Task D
- planned_hours: 5.0
- project_id: project_project_projecta0
- remaining_hours: 5.0
- state: draft
- total_hours: 5.0
--
- Now I create a resource for first user.
--
- !record {model: resource.resource, id: resource_resource_user0}:
- name: User 1
- resource_type: user
- time_efficiency: 1.0
- user_id: res_users_user0
--
- I create a resource for second user.
--
- !record {model: resource.resource, id: resource_resource_user1}:
- name: User 2
- resource_type: user
- time_efficiency: 1.0
- user_id: res_users_user1
--
- Now I create one phase for the project.
--
- !record {model: project.phase, id: project_phase_phasea0}:
- date_start: '2011-01-06 08:00:00'
- duration: 2.0
- name: Phase A
- product_uom: product.uom_day
- project_id: project_project_projecta0
- state: draft
- task_ids:
- - delay_hours: 0.0
- effective_hours: 0.0
- name: Task D
- planned_hours: 5.0
- project_id: project_project_projecta0
- remaining_hours: 5.0
- state: draft
- total_hours: 5.0
- - delay_hours: 0.0
- effective_hours: 0.0
- name: Task C
- planned_hours: 5.0
- project_id: project_project_projecta0
- remaining_hours: 5.0
- sequence: 11
- state: draft
- total_hours: 5.0
- - delay_hours: 0.0
- effective_hours: 0.0
- name: Task B
- planned_hours: 5.0
- project_id: project_project_projecta0
- remaining_hours: 5.0
- sequence: 13
- state: draft
- total_hours: 5.0
- - delay_hours: 0.0
- effective_hours: 0.0
- name: Task A
- planned_hours: 5.0
- project_id: project_project_projecta0
- remaining_hours: 5.0
- sequence: 14
- state: draft
- total_hours: 5.0
--
- Now I create a record to schedule the tasks of project.
--
- !record {model: project.compute.tasks, id: project_compute_tasks0}:
- project_id: project_project_projecta0
--
- I schedule the tasks.
--
- !python {model: project.compute.tasks}: |
- self.compute_date(cr, uid, [ref("project_compute_tasks0")])
--
- I check that whether the tasks now allocated to respected resources or not.
--
- !python {model: project.task}: |
- task_ids = self.search(cr, uid, [('project_id','=',ref('project_project_projecta0'))])
- for task in self.browse(cr, uid, task_ids):
- if (not task.date_start) or (not task.date_end):
- raise AssertionError("Tasks are not scheduled.")
diff --git a/addons/project_mailgate/__openerp__.py b/addons/project_mailgate/__openerp__.py
index 7f55c580fb8..233bb0e79a6 100644
--- a/addons/project_mailgate/__openerp__.py
+++ b/addons/project_mailgate/__openerp__.py
@@ -21,7 +21,7 @@
{
- "name": "Tasks Mail Integration",
+ "name": "Tasks-Mail Integration",
"version": "1.1",
"author": "OpenERP SA",
"website": "http://www.openerp.com",
diff --git a/addons/project_mailgate/i18n/hr.po b/addons/project_mailgate/i18n/hr.po
new file mode 100644
index 00000000000..cb4276b9d7f
--- /dev/null
+++ b/addons/project_mailgate/i18n/hr.po
@@ -0,0 +1,107 @@
+# Croatian translation for openobject-addons
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2011-01-11 11:15+0000\n"
+"PO-Revision-Date: 2011-12-12 08:56+0000\n"
+"Last-Translator: Tomislav Bosnjakovic \n"
+"Language-Team: Croatian \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-12-13 05:02+0000\n"
+"X-Generator: Launchpad (build 14458)\n"
+
+#. module: project_mailgate
+#: view:project.task:0
+msgid "History Information"
+msgstr "Informacije o povjesti"
+
+#. module: project_mailgate
+#: model:ir.model,name:project_mailgate.model_project_task
+msgid "Task"
+msgstr "Zadatak"
+
+#. module: project_mailgate
+#: model:ir.module.module,description:project_mailgate.module_meta_information
+msgid ""
+"This module is an interface that synchronises mails with OpenERP Project "
+"Task.\n"
+"\n"
+"It allows creating tasks as soon as a new mail arrives in our configured "
+"mail server.\n"
+"Moreover, it keeps track of all further communications and task states.\n"
+" "
+msgstr ""
+"Ovaj modul je sučelje za sinhronizaciju poruka sa OpenERP projektnim "
+"zadacima.\n"
+"\n"
+"Omogućava kreiranje zadataka čim stigne novi e-mail na naš konfigurirani "
+"mail poslužitelj.\n"
+"Štoviše, čuva zapise o svim kasnijim komunikacijama i statusima zadataka.\n"
+" "
+
+#. module: project_mailgate
+#: view:project.task:0
+msgid "Attachments"
+msgstr "Privici"
+
+#. module: project_mailgate
+#: model:ir.module.module,shortdesc:project_mailgate.module_meta_information
+msgid "Project MailGateWay"
+msgstr "MailGateWay projekta"
+
+#. module: project_mailgate
+#: constraint:project.task:0
+msgid "Error ! You cannot create recursive tasks."
+msgstr "Greška! Ne možete kreirati rekurzivne zadatke."
+
+#. module: project_mailgate
+#: field:project.task,message_ids:0
+msgid "Messages"
+msgstr "Poruke"
+
+#. module: project_mailgate
+#: code:addons/project_mailgate/project_mailgate.py:123
+#, python-format
+msgid "Draft"
+msgstr "Nacrt"
+
+#. module: project_mailgate
+#: view:project.task:0
+msgid "Details"
+msgstr "Pojedinosti"
+
+#. module: project_mailgate
+#: code:addons/project_mailgate/project_mailgate.py:149
+#, python-format
+msgid "Cancel"
+msgstr "Odustani"
+
+#. module: project_mailgate
+#: code:addons/project_mailgate/project_mailgate.py:143
+#, python-format
+msgid "Done"
+msgstr "Izvršeno"
+
+#. module: project_mailgate
+#: code:addons/project_mailgate/project_mailgate.py:129
+#, python-format
+msgid "Open"
+msgstr "Otvoreno"
+
+#. module: project_mailgate
+#: code:addons/project_mailgate/project_mailgate.py:135
+#, python-format
+msgid "Pending"
+msgstr "Na čekanju"
+
+#. module: project_mailgate
+#: view:project.task:0
+msgid "History"
+msgstr "Povijest"
diff --git a/addons/project_mailgate/security/ir.model.access.csv b/addons/project_mailgate/security/ir.model.access.csv
index cf9a08b958d..6c495169161 100644
--- a/addons/project_mailgate/security/ir.model.access.csv
+++ b/addons/project_mailgate/security/ir.model.access.csv
@@ -1,3 +1,2 @@
-"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
-"access_mail_message_project_manager","project.mail.message.manager","mail.model_mail_message","project.group_project_manager",1,1,1,0
-"access_mail_message_project_user","project.mail.message.user","mail.model_mail_message","project.group_project_user",1,1,1,0
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+access_mail_message_project_user,project.mail.message.user,mail.model_mail_message,project.group_project_user,1,1,1,0
diff --git a/addons/project_messages/i18n/hr.po b/addons/project_messages/i18n/hr.po
new file mode 100644
index 00000000000..d12926319b0
--- /dev/null
+++ b/addons/project_messages/i18n/hr.po
@@ -0,0 +1,144 @@
+# Croatian translation for openobject-addons
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2011-01-11 11:15+0000\n"
+"PO-Revision-Date: 2011-12-12 08:50+0000\n"
+"Last-Translator: Tomislav Bosnjakovic \n"
+"Language-Team: Croatian \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-12-13 05:02+0000\n"
+"X-Generator: Launchpad (build 14458)\n"
+
+#. module: project_messages
+#: field:project.messages,to_id:0
+msgid "To"
+msgstr "Za"
+
+#. module: project_messages
+#: model:ir.model,name:project_messages.model_project_messages
+msgid "project.messages"
+msgstr "project.messages"
+
+#. module: project_messages
+#: field:project.messages,from_id:0
+msgid "From"
+msgstr "Od"
+
+#. module: project_messages
+#: model:ir.actions.act_window,name:project_messages.messages_form
+#: model:ir.ui.menu,name:project_messages.menu_messages_form
+msgid "Communication Messages"
+msgstr "Komunikacijske poruke"
+
+#. module: project_messages
+#: view:project.messages:0
+msgid "Group By..."
+msgstr "Grupiraj po..."
+
+#. module: project_messages
+#: field:project.messages,create_date:0
+msgid "Creation Date"
+msgstr "Datum kreiranja"
+
+#. module: project_messages
+#: view:project.messages:0
+msgid "Today"
+msgstr "Danas"
+
+#. module: project_messages
+#: help:project.messages,to_id:0
+msgid "Keep this empty to broadcast the message."
+msgstr ""
+
+#. module: project_messages
+#: model:ir.actions.act_window,name:project_messages.act_project_messages
+#: model:ir.actions.act_window,name:project_messages.action_view_project_editable_messages_tree
+#: view:project.messages:0
+#: view:project.project:0
+#: field:project.project,message_ids:0
+msgid "Messages"
+msgstr "Poruke"
+
+#. module: project_messages
+#: model:ir.model,name:project_messages.model_project_project
+#: view:project.messages:0
+#: field:project.messages,project_id:0
+msgid "Project"
+msgstr "Projekt"
+
+#. module: project_messages
+#: model:ir.actions.act_window,help:project_messages.messages_form
+msgid ""
+"An in-project messaging system allows for an efficient and trackable "
+"communication between project members. The messages are stored in the system "
+"and can be used for post analysis."
+msgstr ""
+"Sustav poruka unutar projekta omogućava efikasnu i slijedivu komunikaciju "
+"između članova projekta. Poruke se čuvaju u sustavu i mogu se koristiti za "
+"kasniju analizu."
+
+#. module: project_messages
+#: model:ir.module.module,description:project_messages.module_meta_information
+msgid ""
+"\n"
+" This module provides the functionality to send messages within a "
+"project.\n"
+" A user can send messages individually to other user. He can even "
+"broadcast\n"
+" it to all the users.\n"
+" "
+msgstr ""
+"\n"
+" Modul omogućava funkcionalnost slanja poruka unutar projekta.\n"
+" Korisnik može slati pojedinačne poruke drugom korisniku. Može čak i "
+"obavjestiti\n"
+" sve korisnike.\n"
+" "
+
+#. module: project_messages
+#: view:project.messages:0
+msgid "Message To"
+msgstr "Poruka za"
+
+#. module: project_messages
+#: constraint:project.project:0
+msgid "Error! You cannot assign escalation to the same project!"
+msgstr "Greška! Ne možete dodjeliti eskalaciju istom projektu!"
+
+#. module: project_messages
+#: view:project.messages:0
+#: field:project.messages,message:0
+#: view:project.project:0
+msgid "Message"
+msgstr "Poruka"
+
+#. module: project_messages
+#: view:project.messages:0
+msgid "Message From"
+msgstr "Poruka od"
+
+#. module: project_messages
+#: model:ir.actions.act_window,name:project_messages.messages_form
+#: model:ir.ui.menu,name:project_messages.menu_messages_form
+#: view:project.messages:0
+msgid "Project Messages"
+msgstr "Poruke projekta"
+
+#. module: project_messages
+#: constraint:project.project:0
+msgid "Error! project start-date must be lower then project end-date."
+msgstr ""
+"Greška! Početni datum projekta mora biti manji od završnog datuma projekta."
+
+#. module: project_messages
+#: model:ir.module.module,shortdesc:project_messages.module_meta_information
+msgid "In-Project Messaging System"
+msgstr "Interni sustav poruka projekta"
diff --git a/addons/project_messages/security/ir.model.access.csv b/addons/project_messages/security/ir.model.access.csv
index 5756a7456bb..1792f1ea840 100644
--- a/addons/project_messages/security/ir.model.access.csv
+++ b/addons/project_messages/security/ir.model.access.csv
@@ -1,4 +1,3 @@
-"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
-"access_project_messages","project.messages","model_project_messages","project.group_project_user",1,1,1,1
-"access_project_messages_manager","project.messages manager","model_project_messages","project.group_project_manager",1,1,1,1
-"access_project_message_project_user","project.project.user","model_project_project","project.group_project_user",1,0,0,0
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+access_project_messages,project.messages,model_project_messages,project.group_project_user,1,1,1,1
+access_project_message_project_user,project.project.user,model_project_project,project.group_project_user,1,0,0,0
diff --git a/addons/project_mrp/__openerp__.py b/addons/project_mrp/__openerp__.py
index e5722b92da9..c36b3229a81 100644
--- a/addons/project_mrp/__openerp__.py
+++ b/addons/project_mrp/__openerp__.py
@@ -54,7 +54,7 @@ task is completed.
'depends': ['project', 'procurement', 'sale', 'mrp_jit'],
'init_xml': [],
'update_xml': ['project_mrp_workflow.xml', 'process/project_mrp_process.xml', 'project_mrp_view.xml'],
- 'demo_xml': [],
+ 'demo_xml': ['project_mrp_demo.xml'],
'test': ['test/project_task_procurement.yml'],
'installable': True,
'active': False,
diff --git a/addons/project_mrp/i18n/hr.po b/addons/project_mrp/i18n/hr.po
index a5bf98634cf..4b4f2016620 100644
--- a/addons/project_mrp/i18n/hr.po
+++ b/addons/project_mrp/i18n/hr.po
@@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
-"PO-Revision-Date: 2010-08-03 09:34+0000\n"
-"Last-Translator: Mantavya Gajjar (Open ERP) \n"
+"PO-Revision-Date: 2011-12-12 00:12+0000\n"
+"Last-Translator: Tomislav Bosnjakovic \n"
"Language-Team: Vinteh\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-05 05:23+0000\n"
-"X-Generator: Launchpad (build 14231)\n"
+"X-Launchpad-Export-Date: 2011-12-13 05:01+0000\n"
+"X-Generator: Launchpad (build 14458)\n"
"Language: hr\n"
#. module: project_mrp
@@ -25,7 +25,7 @@ msgstr "Za svaki proizvod, pri vrsti usluge i pri narudžbi"
#. module: project_mrp
#: model:process.transition,name:project_mrp.process_transition_procuretask0
msgid "Procurement Task"
-msgstr ""
+msgstr "Procurement Task"
#. module: project_mrp
#: model:ir.module.module,shortdesc:project_mrp.module_meta_information
@@ -45,28 +45,28 @@ msgstr "Ako je tip proizvoda 'usluga' tada kreira zadatak"
#. module: project_mrp
#: constraint:project.task:0
msgid "Error ! You cannot create recursive tasks."
-msgstr ""
+msgstr "Greška! Rekurzivni zadaci."
#. module: project_mrp
#: model:ir.model,name:project_mrp.model_product_product
msgid "Product"
-msgstr ""
+msgstr "Proizvod"
#. module: project_mrp
#: constraint:product.product:0
msgid "Error: Invalid ean code"
-msgstr ""
+msgstr "Greška: Neispravan barkod!"
#. module: project_mrp
#: field:product.product,project_id:0
msgid "Project"
-msgstr ""
+msgstr "Projekt"
#. module: project_mrp
#: model:ir.model,name:project_mrp.model_procurement_order
#: field:project.task,procurement_id:0
msgid "Procurement"
-msgstr "Nabava"
+msgstr "Procurement"
#. module: project_mrp
#: model:ir.model,name:project_mrp.model_project_task
@@ -74,7 +74,7 @@ msgstr "Nabava"
#: model:process.node,name:project_mrp.process_node_procuretasktask0
#: field:procurement.order,task_id:0
msgid "Task"
-msgstr "Zadatak"
+msgstr "Task"
#. module: project_mrp
#: model:process.node,note:project_mrp.process_node_mrptask0
@@ -84,12 +84,12 @@ msgstr "Stvara se zadatak kako bi se pružila usluga"
#. module: project_mrp
#: model:process.transition,name:project_mrp.process_transition_ordertask0
msgid "Order Task"
-msgstr "Zadatak narudžbe"
+msgstr "Zadatak naloga"
#. module: project_mrp
#: model:process.node,name:project_mrp.process_node_saleordertask0
msgid "Sale Order Task"
-msgstr "Zadatak Prodajne Narudžbe"
+msgstr "Zadatak prodajnog naloga"
#. module: project_mrp
#: model:process.transition,name:project_mrp.process_transition_createtask0
@@ -125,12 +125,12 @@ msgstr ""
#. module: project_mrp
#: model:process.transition,note:project_mrp.process_transition_ordertask0
msgid "If procurement method is Make to order and supply method is produce"
-msgstr ""
+msgstr "If procurement method is Make to order and supply method is produce"
#. module: project_mrp
#: model:process.node,note:project_mrp.process_node_saleordertask0
msgid "In case you sell services on sale order"
-msgstr "U slučaju da prodajete usluge prema narudžbi prodaje"
+msgstr "U slučaju kada prodajete usluge na prodajnim nalozima"
#~ msgid "Procure Task"
#~ msgstr "Zadatak nabave"
diff --git a/addons/project_mrp/project_mrp.py b/addons/project_mrp/project_mrp.py
index 3bbb0658b11..a3cde855b6c 100644
--- a/addons/project_mrp/project_mrp.py
+++ b/addons/project_mrp/project_mrp.py
@@ -31,10 +31,10 @@ class project_task(osv.osv):
}
def _validate_subflows(self, cr, uid, ids):
+ wf_service = netsvc.LocalService("workflow")
for task in self.browse(cr, uid, ids):
if task.procurement_id:
- wf_service = netsvc.LocalService("workflow")
- wf_service.trg_validate(uid, 'procurement.order', task.procurement_id.id, 'subflow.done', cr)
+ wf_service.trg_write(uid, 'procurement.order', task.procurement_id.id, cr)
def do_close(self, cr, uid, ids, *args, **kwargs):
res = super(project_task, self).do_close(cr, uid, ids, *args, **kwargs)
diff --git a/addons/project_mrp/project_mrp_demo.xml b/addons/project_mrp/project_mrp_demo.xml
new file mode 100644
index 00000000000..fcc0b27d31f
--- /dev/null
+++ b/addons/project_mrp/project_mrp_demo.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+ Advance
+
+
+ 150.0
+ 5.0
+ make_to_order
+
+
+
+
diff --git a/addons/project_mrp/project_mrp_workflow.xml b/addons/project_mrp/project_mrp_workflow.xml
index 751634816e3..18962cde0ee 100644
--- a/addons/project_mrp/project_mrp_workflow.xml
+++ b/addons/project_mrp/project_mrp_workflow.xml
@@ -1,10 +1,12 @@
-
-
-
- subflow.done
+
+
+
+ action_check_finished()
+ project.task
+ task_id and [task_id.id] or []
diff --git a/addons/project_mrp/project_procurement.py b/addons/project_mrp/project_procurement.py
index 2c9732478fb..7d3045aede0 100644
--- a/addons/project_mrp/project_procurement.py
+++ b/addons/project_mrp/project_procurement.py
@@ -29,29 +29,46 @@ class procurement_order(osv.osv):
'sale_line_id': fields.many2one('sale.order.line', 'Sale order line')
}
- def check_produce_service(self, cr, uid, procurement, context=None):
+ def action_check_finished(self, cr, uid, ids):
+ res = super(procurement_order, self).action_check_finished(cr, uid, ids)
+ return res and self.check_task_done(cr, uid, ids)
+
+ def check_task_done(self, cr, uid, ids, context=None):
+ """ Checks if task is done or not.
+ @return: True or False.
+ """
+ return all(proc.product_id.type != 'service' or (proc.task_id and proc.task_id.state in ('done', 'cancelled')) \
+ for proc in self.browse(cr, uid, ids, context=context))
+
+ def check_produce_service(self, cr, uid, procurement, context=None):
return True
- def action_produce_assign_service(self, cr, uid, ids, context=None):
- project_obj = self.pool.get('project.project')
- uom_obj = self.pool.get('product.uom')
- default_uom = self.pool.get('res.users').browse(cr, uid, uid).company_id.project_time_mode_id.id
- for procurement in self.browse(cr, uid, ids, context=context):
- project_id = False
- if procurement.product_id.project_id:
- project_id = procurement.product_id.project_id.id
- elif procurement.sale_line_id:
- account_id = procurement.sale_line_id.order_id.project_id.id
- if account_id:
- project_ids = project_obj.search(cr, uid, [('analytic_account_id', '=', account_id)])
- project_id = project_ids and project_ids[0] or False
- if procurement.product_uom.id != default_uom:
- planned_hours = uom_obj._compute_qty(cr, uid, procurement.product_uom.id, procurement.product_qty, default_uom)
- else:
- planned_hours = procurement.product_qty
+ def _convert_qty_company_hours(self, cr, uid, procurement, context=None):
+ product_uom = self.pool.get('product.uom')
+ company_time_uom_id = self.pool.get('res.users').browse(cr, uid, uid).company_id.project_time_mode_id.id
+ if procurement.product_uom.id != company_time_uom_id:
+ planned_hours = product_uom._compute_qty(cr, uid, procurement.product_uom.id, procurement.product_qty, company_time_uom_id)
+ else:
+ planned_hours = procurement.product_qty
+ return planned_hours
- self.write(cr, uid, [procurement.id], {'state': 'running'})
- task_id = self.pool.get('project.task').create(cr, uid, {
+ def _get_project(self, cr, uid, procurement, context=None):
+ project_project = self.pool.get('project.project')
+ project = procurement.product_id.project_id
+ if not project and procurement.sale_line_id:
+ # find the project corresponding to the analytic account of the sale order
+ account = procurement.sale_line_id.order_id.project_id
+ project_ids = project_project.search(cr, uid, [('analytic_account_id', '=', account.id)])
+ projects = project_project.browse(cr, uid, project_ids, context=context)
+ project = projects and projects[0] or False
+ return project
+
+ def action_produce_assign_service(self, cr, uid, ids, context=None):
+ project_task = self.pool.get('project.task')
+ for procurement in self.browse(cr, uid, ids, context=context):
+ project = self._get_project(cr, uid, procurement, context=context)
+ planned_hours = self._convert_qty_company_hours(cr, uid, procurement, context=context)
+ task_id = project_task.create(cr, uid, {
'name': '%s:%s' % (procurement.origin or '', procurement.product_id.name),
'date_deadline': procurement.date_planned,
'planned_hours':planned_hours,
@@ -60,12 +77,10 @@ class procurement_order(osv.osv):
'notes': procurement.note,
'procurement_id': procurement.id,
'description': procurement.note,
- 'date_deadline': procurement.date_planned,
- 'project_id': project_id,
- 'state': 'draft',
+ 'project_id': project and project.id or False,
'company_id': procurement.company_id.id,
},context=context)
- self.write(cr, uid, [procurement.id],{'task_id':task_id})
+ self.write(cr, uid, [procurement.id], {'task_id': task_id, 'state': 'running'}, context=context)
return task_id
procurement_order()
diff --git a/addons/project_mrp/security/ir.model.access.csv b/addons/project_mrp/security/ir.model.access.csv
index 7c6e2a7a30c..8bc4d4ba1b5 100644
--- a/addons/project_mrp/security/ir.model.access.csv
+++ b/addons/project_mrp/security/ir.model.access.csv
@@ -1,3 +1,2 @@
-"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
-"access_procurement_project_user","procurement.order project_user","model_procurement_order","project.group_project_user",1,1,1,1
-"access_procurement_project_manager","procurement.order project_manager","model_procurement_order","project.group_project_manager",1,1,1,1
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+access_procurement_project_user,procurement.order project_user,model_procurement_order,project.group_project_user,1,1,1,1
diff --git a/addons/project_mrp/test/project_task_procurement.yml b/addons/project_mrp/test/project_task_procurement.yml
index b2cc6a68363..b72527e61a5 100644
--- a/addons/project_mrp/test/project_task_procurement.yml
+++ b/addons/project_mrp/test/project_task_procurement.yml
@@ -1,83 +1,48 @@
-- |
- In order to test project_mrp module with OpenERP I create a sale order
- with product type 'service' so when procurement runs one task is created for
- the project associated with my sale order.
-
- I create record for a service type product.
+ In order to test process to generate task automatic from procurement, I confirm sale order to sale service product.
-
- !record {model: product.product, id: product_product_partnerstraining0, view: False}:
- categ_id: product.product_category_7
- cost_method: standard
- mes_type: fixed
- name: Partners Training
- procure_method: make_to_order
- supply_method: produce
- type: service
- uom_id: product.uom_day
- uom_po_id: product.uom_day
- warranty: 0.0
-- |
- I create a sale order for product Partners Training which has type 'Service',
- and select the appropriate Analytic Account matching my project.
--
- !record {model: sale.order, id: sale_order_so0}:
- date_order: !eval time.strftime('%Y-%m-%d')
- invoice_quantity: order
- name: TESTSO006
- order_policy: manual
- partner_id: base.res_partner_asus
- partner_invoice_id: base.res_partner_address_tang
- partner_order_id: base.res_partner_address_tang
- partner_shipping_id: base.res_partner_address_tang
- order_line:
- - state: draft
- delay: 7.0
- name: Partners Training
- price_unit: 1.0
- product_id: product_product_partnerstraining0
- product_uom: product.uom_day
- product_uom_qty: 5.0
- type: make_to_order
- picking_policy: direct
- pricelist_id: product.list0
- shop_id: sale.shop
- user_id: base.user_demo
-
-- I select the Analytic Account for my project on the sale order
--
- !python {model: sale.order}: |
- acc_id = self.pool.get('project.project').browse(cr, uid,
- ref('project.project_integrate_openerp')).analytic_account_id.id
- self.write(cr, uid, ref('sale_order_so0'), {'project_id': acc_id})
+ !workflow {model: sale.order, action: order_confirm, ref: sale.order7}
-
- I confirm this sale order.
--
- !workflow {model: sale.order, action: order_confirm, ref: sale_order_so0}
--
- I check the procurements.
+ I run the scheduler.
-
!python {model: procurement.order}: |
- orderline_obj = self.pool.get('sale.order.line')
- line_ids = orderline_obj.search(cr, uid, [('order_id','=', ref('sale_order_so0'))])
- orders = orderline_obj.browse(cr, uid, line_ids)
- proc_ids = map(lambda x: x.procurement_id.id, orders)
- assert proc_ids, 'No Procurements!'
+ self.run_scheduler(cr, uid)
-
- The scheduler runs.
+ Now I check that task details after run procurement
-
- !function {model: procurement.order, name: run_scheduler}:
- - model: procurement.order
- search: "[]"
+ !python {model: procurement.order}: |
+ from datetime import datetime
+ procurement_ids = self.search(cr, uid, [('sale_line_id', '=', ref('line_services'))])
+ assert procurement_ids, "Procurement is not generated for Service Order Line."
+ procurement = self.browse(cr, uid, procurement_ids[0], context=context)
+ assert procurement.state != 'done' , "Procurement should not be closed."
+ task = procurement.task_id
+ assert task, "Task is not generated."
+ # check whether task project either is the product's project, or corresponds to the analytic account of sale order
+ project = task.project_id
+ if procurement.product_id.project_id:
+ assert project == procurement.product_id.project_id, "Project does not correspond."
+ elif procurement.sale_line_id:
+ account = procurement.sale_line_id.order_id.project_id
+ assert (not project and not account) or project.analytic_account_id == account, "Project does not correspond."
+ planned_hours = self._convert_qty_company_hours(cr, uid, procurement, context=context)
+ assert task.planned_hours == planned_hours, 'Planned Hours do not correspond.'
+ assert datetime.strptime(task.date_deadline, '%Y-%m-%d') == datetime.strptime(procurement.date_planned, '%Y-%m-%d %H:%M:%S'), 'Deadline does not correspond.'
+ if procurement.product_id.product_manager:
+ assert task.user_id.id == procurement.product_id.product_manager.id, 'Allocated Person does not correspond with Service Product Manager.'
+ assert task.description == procurement.note, "Task description does not correspond."
-
- Now I check that one task is created for my sale order, in the desired project
+ I close that task.
-
!python {model: project.task}: |
- order_obj = self.pool.get('sale.order')
- order = order_obj.browse(cr, uid, ref('sale_order_so0'))
- # planned_hours == 40 because default company project UOM is hours, and
- # product was sold as 5.0 days.
- task_id = self.search(cr, uid, [('name', '=', order.name+":Partners Training"),
- ('project_id','=', ref('project.project_integrate_openerp')),
- ('planned_hours','=', 40.0),
- ('state','=','draft')])
- assert task_id, 'Expected Task not found!'
\ No newline at end of file
+ task_ids = self.search(cr, uid, [('sale_line_id', '=', ref('line_services'))])
+ assert task_ids, "Task is not generated for Service Order Line."
+ self.do_close(cr, uid, task_ids, context=context)
+-
+ I check procurement of Service Order Line after closed task.
+-
+ !python {model: procurement.order}: |
+ procurement_ids = self.search(cr, uid, [('sale_line_id', '=', ref('line_services'))])
+ assert procurement_ids, "Procurement is not generated for Service Order Line."
+ procurement = self.browse(cr, uid, procurement_ids[0], context=context)
+ assert procurement.state == 'done' , "Procurement should be closed."
diff --git a/addons/project_planning/__openerp__.py b/addons/project_planning/__openerp__.py
index 23d900d86ff..5540b6eb773 100644
--- a/addons/project_planning/__openerp__.py
+++ b/addons/project_planning/__openerp__.py
@@ -21,10 +21,10 @@
{
- 'name': 'Planning Management Module',
+ 'name': 'Resources Planing',
'version': '1.0',
"category": "Project Management",
- 'complexity': "easy",
+ 'complexity': "expert",
'description': """Keep track of your planning
This module helps you to manage your plannings.
===============================================
diff --git a/addons/project_planning/i18n/hr.po b/addons/project_planning/i18n/hr.po
index ca01b101337..adeb2db41c2 100644
--- a/addons/project_planning/i18n/hr.po
+++ b/addons/project_planning/i18n/hr.po
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
-"PO-Revision-Date: 2011-01-19 16:21+0000\n"
-"Last-Translator: FULL NAME \n"
+"PO-Revision-Date: 2011-12-12 09:28+0000\n"
+"Last-Translator: Tomislav Bosnjakovic \n"
"Language-Team: Croatian \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-05 05:55+0000\n"
-"X-Generator: Launchpad (build 14231)\n"
+"X-Launchpad-Export-Date: 2011-12-13 05:02+0000\n"
+"X-Generator: Launchpad (build 14458)\n"
#. module: project_planning
#: constraint:account.analytic.account:0
@@ -31,39 +31,41 @@ msgid ""
"This value is given by the sum of work remaining to do on the task for this "
"planning, expressed in days."
msgstr ""
+"This value is given by the sum of work remaining to do on the task for this "
+"planning, expressed in days."
#. module: project_planning
#: model:ir.actions.act_window,name:project_planning.action_account_analytic_planning_stat_form
#: model:ir.ui.menu,name:project_planning.menu_board_planning
#: model:ir.ui.menu,name:project_planning.menu_report_account_analytic_planning_stat
msgid "Planning Statistics"
-msgstr "Statistike Planiranja"
+msgstr "Statistike planiranja"
#. module: project_planning
#: model:ir.model,name:project_planning.model_report_account_analytic_planning_line
#: view:report_account_analytic.planning.line:0
msgid "Planning Line"
-msgstr "Linija Planiranja"
+msgstr "Linija planiranja"
#. module: project_planning
#: view:report_account_analytic.planning:0
msgid "Total Unallocated Time"
-msgstr ""
+msgstr "Ukupno slobodno vrijeme"
#. module: project_planning
#: field:report_account_analytic.planning,name:0
msgid "Planning Name"
-msgstr "Ime Planiranja"
+msgstr "Naziv planiranja"
#. module: project_planning
#: constraint:project.task:0
msgid "Error ! You cannot create recursive tasks."
-msgstr ""
+msgstr "Greška! Rekurzivni zadaci."
#. module: project_planning
#: view:board.board:0
msgid "My Project's planning"
-msgstr ""
+msgstr "My Project's planning"
#. module: project_planning
#: field:report_account_analytic.planning.account,timesheet:0
@@ -71,12 +73,12 @@ msgstr ""
#: field:report_account_analytic.planning.stat,sum_amount_real:0
#: field:report_account_analytic.planning.user,timesheet:0
msgid "Timesheet"
-msgstr "Raspored"
+msgstr "Evidencija rada"
#. module: project_planning
#: model:ir.module.module,shortdesc:project_planning.module_meta_information
msgid "Planning Management Module"
-msgstr ""
+msgstr "Planning Management Module"
#. module: project_planning
#: model:ir.actions.act_window,help:project_planning.action_account_analytic_planning_form
@@ -85,93 +87,97 @@ msgid ""
"material), OpenERP allows you to encode and then automatically compute tasks "
"and phases scheduling, track resource allocation and availability."
msgstr ""
+"With its global system to schedule all resources of a company (people and "
+"material), OpenERP allows you to encode and then automatically compute tasks "
+"and phases scheduling, track resource allocation and availability."
#. module: project_planning
#: report:report_account_analytic.planning.print:0
msgid "Total planned tasks"
-msgstr ""
+msgstr "Ukupno planiranih zadataka"
#. module: project_planning
#: field:report_account_analytic.planning.stat,account_id:0
msgid "Account"
-msgstr ""
+msgstr "Konto"
#. module: project_planning
#: model:ir.model,name:project_planning.model_project_task
msgid "Task"
-msgstr ""
+msgstr "Task"
#. module: project_planning
#: view:account.analytic.account:0
#: view:report_account_analytic.planning:0
#: view:report_account_analytic.planning.line:0
msgid "Notes"
-msgstr ""
+msgstr "Bilješke"
#. module: project_planning
#: field:account.analytic.account,planning_ids:0
#: model:ir.actions.act_window,name:project_planning.action_account_analytic_planning_form
#: model:ir.ui.menu,name:project_planning.menu_report_account_analytic_planning
msgid "Plannings"
-msgstr ""
+msgstr "Plannings"
#. module: project_planning
#: report:report_account_analytic.planning.print:0
msgid "Project"
-msgstr ""
+msgstr "Projekt"
#. module: project_planning
#: view:report_account_analytic.planning:0
msgid "Start Task"
-msgstr ""
+msgstr "Započni zadatak"
#. module: project_planning
#: selection:report_account_analytic.planning,state:0
msgid "Cancelled"
-msgstr ""
+msgstr "Otkazani"
#. module: project_planning
#: view:account.analytic.account:0
#: view:report_account_analytic.planning:0
#: view:report_account_analytic.planning.line:0
msgid "Total Planned (in Days)"
-msgstr ""
+msgstr "Total Planned (in Days)"
#. module: project_planning
#: constraint:report_account_analytic.planning:0
msgid ""
"Invalid planning ! Planning dates can't overlap for the same responsible. "
msgstr ""
+"Invalid planning ! Planning dates can't overlap for the same responsible. "
#. module: project_planning
#: field:report_account_analytic.planning,planning_account:0
msgid "Planning By Account"
-msgstr ""
+msgstr "Planiranje računa"
#. module: project_planning
#: view:report_account_analytic.planning:0
msgid "Current Plannings"
-msgstr ""
+msgstr "Current Plannings"
#. module: project_planning
#: model:ir.model,name:project_planning.model_account_analytic_account
msgid "Analytic Account"
-msgstr "Analitički konto"
+msgstr "Konto analitike"
#. module: project_planning
#: view:report_account_analytic.planning:0
msgid "Reset to Draft"
-msgstr ""
+msgstr "Vrati u nacrt"
#. module: project_planning
#: view:report_account_analytic.planning:0
msgid "Extra Info"
-msgstr ""
+msgstr "Dodatni podaci"
#. module: project_planning
#: report:report_account_analytic.planning.print:0
msgid "To :"
-msgstr ""
+msgstr "Do :"
#. module: project_planning
#: help:report_account_analytic.planning.account,timesheet:0
@@ -180,34 +186,36 @@ msgid ""
"This value is given by the sum of all work encoded in the timesheet(s) "
"between the 'Date From' and 'Date To' of the planning."
msgstr ""
+"Ova vrijednost daje zbroj svih radova, kodirano u timesheet/u, raspon 'Od "
+"datuma' i 'Do datuma' rasporeda/planiranja."
#. module: project_planning
#: constraint:account.analytic.account:0
msgid "Error! You can not create recursive analytic accounts."
-msgstr ""
+msgstr "Error! You can not create recursive analytic accounts."
#. module: project_planning
#: field:report_account_analytic.planning.account,plan_open:0
#: field:report_account_analytic.planning.user,plan_open:0
msgid "Time Allocation without Tasks"
-msgstr ""
+msgstr "Time Allocation without Tasks"
#. module: project_planning
#: view:account.analytic.account:0
#: view:report_account_analytic.planning:0
msgid "Planning Lines"
-msgstr ""
+msgstr "Linije Planiranja"
#. module: project_planning
#: constraint:res.company:0
msgid "Error! You can not create recursive companies."
-msgstr ""
+msgstr "Pogreška! Ne možete kreirati rekurzivne organizacije."
#. module: project_planning
#: field:report_account_analytic.planning.account,account_id:0
#: field:report_account_analytic.planning.line,account_id:0
msgid "Analytic account"
-msgstr "Analitički Konto"
+msgstr "Analitički konto"
#. module: project_planning
#: help:report_account_analytic.planning.account,plan_open:0
@@ -215,27 +223,29 @@ msgid ""
"This value is given by the sum of time allocation with the checkbox "
"'Assigned in Taks' set to FALSE, expressed in days."
msgstr ""
+"This value is given by the sum of time allocation with the checkbox "
+"'Assigned in Taks' set to FALSE, expressed in days."
#. module: project_planning
#: view:report_account_analytic.planning:0
msgid "Miscelleanous"
-msgstr ""
+msgstr "Razno"
#. module: project_planning
#: help:res.company,planning_time_mode_id:0
msgid "This will set the unit of measure used in plannings."
-msgstr ""
+msgstr "This will set the unit of measure used in plannings."
#. module: project_planning
#: report:report_account_analytic.planning.print:0
msgid "HR Planning"
-msgstr "Planiranje Ljudskih resursa"
+msgstr "Planiranje ljudskih resursa"
#. module: project_planning
#: field:report_account_analytic.planning.account,tasks:0
#: field:report_account_analytic.planning.user,tasks:0
msgid "Remaining Tasks"
-msgstr ""
+msgstr "Preostali zadaci"
#. module: project_planning
#: view:account.analytic.account:0
@@ -259,12 +269,12 @@ msgstr "Ukupno planirano"
#. module: project_planning
#: view:report_account_analytic.planning:0
msgid "Time Encoding"
-msgstr ""
+msgstr "Time Encoding"
#. module: project_planning
#: field:report_account_analytic.planning.user,free:0
msgid "Unallocated Time"
-msgstr ""
+msgstr "Unallocated Time"
#. module: project_planning
#: help:report_account_analytic.planning.user,plan_open:0
@@ -272,11 +282,13 @@ msgid ""
"This value is given by the sum of time allocation without task(s) linked, "
"expressed in days."
msgstr ""
+"This value is given by the sum of time allocation without task(s) linked, "
+"expressed in days."
#. module: project_planning
#: view:report_account_analytic.planning:0
msgid "Delegate"
-msgstr ""
+msgstr "Delegiraj"
#. module: project_planning
#: help:report_account_analytic.planning.user,free:0
@@ -284,6 +296,8 @@ msgid ""
"Computed as Business Days - (Time Allocation of Tasks + Time Allocation "
"without Tasks + Holiday Leaves)"
msgstr ""
+"Computed as Business Days - (Time Allocation of Tasks + Time Allocation "
+"without Tasks + Holiday Leaves)"
#. module: project_planning
#: help:report_account_analytic.planning,business_days:0
@@ -291,6 +305,8 @@ msgid ""
"Set here the number of working days within this planning for one person full "
"time"
msgstr ""
+"Set here the number of working days within this planning for one person full "
+"time"
#. module: project_planning
#: report:report_account_analytic.planning.print:0
@@ -300,39 +316,39 @@ msgstr "["
#. module: project_planning
#: report:report_account_analytic.planning.print:0
msgid "From :"
-msgstr ""
+msgstr "From :"
#. module: project_planning
#: field:report_account_analytic.planning,planning_user_ids:0
msgid "Planning By User"
-msgstr ""
+msgstr "Planning By User"
#. module: project_planning
#: model:ir.actions.act_window,name:project_planning.act_task_of_lines
#: view:report_account_analytic.planning:0
#: field:report_account_analytic.planning.stat,sum_amount_tasks:0
msgid "Tasks"
-msgstr "Zadaci"
+msgstr "Tasks"
#. module: project_planning
#: view:report_account_analytic.planning:0
msgid "Planning By Account (in Days)"
-msgstr ""
+msgstr "Planning By Account (in Days)"
#. module: project_planning
#: report:report_account_analytic.planning.print:0
msgid "Time without tasks"
-msgstr ""
+msgstr "Vrijeme bez zadataka"
#. module: project_planning
#: field:report_account_analytic.planning,date_from:0
msgid "Start Date"
-msgstr "Datum početka"
+msgstr "Početni datum"
#. module: project_planning
#: field:report_account_analytic.planning,total_free:0
msgid "Total Free"
-msgstr ""
+msgstr "Uk. slobodno"
#. module: project_planning
#: help:report_account_analytic.planning.account,plan_tasks:0
@@ -340,16 +356,18 @@ msgid ""
"This value is given by the sum of time allocation with the checkbox "
"'Assigned in Taks' set to TRUE expressed in days."
msgstr ""
+"This value is given by the sum of time allocation with the checkbox "
+"'Assigned in Taks' set to TRUE expressed in days."
#. module: project_planning
#: field:report_account_analytic.planning,stat_ids:0
msgid "Planning analysis"
-msgstr "Analiza Planiranja"
+msgstr "Analiza planiranja"
#. module: project_planning
#: field:report_account_analytic.planning.line,amount_unit:0
msgid "Qty UoM"
-msgstr "Količina JM"
+msgstr "Kol. u JM"
#. module: project_planning
#: field:report_account_analytic.planning.line,note:0
@@ -360,7 +378,7 @@ msgstr "Bilješka"
#: view:report_account_analytic.planning:0
#: selection:report_account_analytic.planning,state:0
msgid "Draft"
-msgstr ""
+msgstr "Nacrt"
#. module: project_planning
#: model:ir.model,name:project_planning.model_report_account_analytic_planning_account
@@ -371,12 +389,12 @@ msgstr "Planiranje po Kontu"
#. module: project_planning
#: view:report_account_analytic.planning:0
msgid "Pending"
-msgstr ""
+msgstr "Na čekanju"
#. module: project_planning
#: field:report_account_analytic.planning.stat,sum_amount:0
msgid "Planned Days"
-msgstr ""
+msgstr "Planirani dani"
#. module: project_planning
#: field:report_account_analytic.planning,state:0
@@ -389,6 +407,8 @@ msgid ""
"This value is given by the total of validated leaves into the 'Date From' "
"and 'Date To' of the planning."
msgstr ""
+"This value is given by the total of validated leaves into the 'Date From' "
+"and 'Date To' of the planning."
#. module: project_planning
#: field:report_account_analytic.planning.line,user_id:0
@@ -401,7 +421,7 @@ msgstr "Korisnik"
#. module: project_planning
#: view:report_account_analytic.planning:0
msgid "Total Remaining Tasks"
-msgstr ""
+msgstr "Total Remaining Tasks"
#. module: project_planning
#: model:ir.module.module,description:project_planning.module_meta_information
@@ -426,17 +446,17 @@ msgstr ""
#. module: project_planning
#: model:ir.model,name:project_planning.model_res_company
msgid "Companies"
-msgstr ""
+msgstr "Organizacije"
#. module: project_planning
#: field:report_account_analytic.planning.line,amount_in_base_uom:0
msgid "Quantity in base uom"
-msgstr ""
+msgstr "Količina u osnovnoj JM"
#. module: project_planning
#: field:report_account_analytic.planning.user,plan_tasks:0
msgid "Time Planned on Tasks"
-msgstr ""
+msgstr "Vrijeme za planirane zadatke"
#. module: project_planning
#: field:report_account_analytic.planning.line,amount:0
@@ -446,61 +466,61 @@ msgstr "Količina"
#. module: project_planning
#: field:report_account_analytic.planning,code:0
msgid "Code"
-msgstr ""
+msgstr "Šifra"
#. module: project_planning
#: view:account.analytic.account:0
#: field:report_account_analytic.planning,line_ids:0
msgid "Planning lines"
-msgstr "Linija Planiranja"
+msgstr "Linija planiranja"
#. module: project_planning
#: view:report_account_analytic.planning:0
#: selection:report_account_analytic.planning,state:0
msgid "Done"
-msgstr ""
+msgstr "Izvršeno"
#. module: project_planning
#: view:report_account_analytic.planning:0
msgid "Cancel"
-msgstr ""
+msgstr "Odustani"
#. module: project_planning
#: view:report_account_analytic.planning:0
msgid "Planning By User (in Days)"
-msgstr ""
+msgstr "Planning By User (in Days)"
#. module: project_planning
#: view:report_account_analytic.planning.stat:0
msgid "Planning statistics"
-msgstr "Statistike Planiranja"
+msgstr "Statistike planiranja"
#. module: project_planning
#: view:report_account_analytic.planning:0
#: selection:report_account_analytic.planning,state:0
msgid "Open"
-msgstr "Otvori"
+msgstr "Otvoreno"
#. module: project_planning
#: model:ir.model,name:project_planning.model_report_account_analytic_planning_user
#: view:report_account_analytic.planning:0
msgid "Planning by User"
-msgstr ""
+msgstr "Planning by User"
#. module: project_planning
#: view:report_account_analytic.planning:0
msgid "Information"
-msgstr ""
+msgstr "Informacija"
#. module: project_planning
#: field:report_account_analytic.planning,business_days:0
msgid "Business Days"
-msgstr ""
+msgstr "Radni dani"
#. module: project_planning
#: view:report_account_analytic.planning:0
msgid "Reactivate"
-msgstr ""
+msgstr "Ponovno Aktiviraj"
#. module: project_planning
#: field:report_account_analytic.planning,user_id:0
@@ -510,52 +530,52 @@ msgstr "Odgovoran"
#. module: project_planning
#: model:ir.model,name:project_planning.model_report_account_analytic_planning_stat
msgid "Planning stat"
-msgstr "Stat Planiranja"
+msgstr "Stat planiranja"
#. module: project_planning
#: field:report_account_analytic.planning.account,plan_tasks:0
msgid "Time Allocation of Tasks"
-msgstr ""
+msgstr "Time Allocation of Tasks"
#. module: project_planning
#: report:report_account_analytic.planning.print:0
msgid "Summary by user"
-msgstr "Sižetak prema Korisniku"
+msgstr "Sažetak prema Korisniku"
#. module: project_planning
#: view:report_account_analytic.planning:0
msgid "Total Time Allocation without Tasks"
-msgstr ""
+msgstr "Total Time Allocation without Tasks"
#. module: project_planning
#: field:report_account_analytic.planning.user,holiday:0
msgid "Leaves"
-msgstr ""
+msgstr "Dopusti"
#. module: project_planning
#: view:report_account_analytic.planning:0
msgid "Total Time Allocation of Tasks"
-msgstr ""
+msgstr "Ukupno vrijeme alociranih zadataka"
#. module: project_planning
#: field:report_account_analytic.planning,date_to:0
msgid "End Date"
-msgstr "Datum završetka"
+msgstr "Završni Datum"
#. module: project_planning
#: report:report_account_analytic.planning.print:0
msgid "Remaining tasks"
-msgstr ""
+msgstr "Remaining tasks"
#. module: project_planning
#: report:report_account_analytic.planning.print:0
msgid "Summary by project"
-msgstr "Sižetak po Projektu"
+msgstr "Sažetak po Projektu"
#. module: project_planning
#: report:report_account_analytic.planning.print:0
msgid "Responsible :"
-msgstr ""
+msgstr "Responsible :"
#. module: project_planning
#: report:report_account_analytic.planning.print:0
@@ -565,17 +585,17 @@ msgstr "]"
#. module: project_planning
#: field:res.company,planning_time_mode_id:0
msgid "Planning Time Unit"
-msgstr ""
+msgstr "Vremenska jedinica planiranja"
#. module: project_planning
#: field:report_account_analytic.planning.line,task_ids:0
msgid "Planning Tasks"
-msgstr ""
+msgstr "Planiranje zadataka"
#. module: project_planning
#: field:report_account_analytic.planning.stat,manager_id:0
msgid "Manager"
-msgstr "Upravitelj"
+msgstr "Voditelj"
#. module: project_planning
#: help:report_account_analytic.planning.user,plan_tasks:0
@@ -583,3 +603,5 @@ msgid ""
"This value is given by the sum of time allocation with task(s) linked, "
"expressed in days."
msgstr ""
+"Vrijednost dobivena zbrojem alociranih vremenskih zadataka iskazanih u "
+"danima."
diff --git a/addons/project_planning/security/ir.model.access.csv b/addons/project_planning/security/ir.model.access.csv
index d5cb64be83d..0c3a57cf173 100644
--- a/addons/project_planning/security/ir.model.access.csv
+++ b/addons/project_planning/security/ir.model.access.csv
@@ -1,11 +1,11 @@
-"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
-"access_report_account_analytic_planning_project_manager","report_account_analytic.planning manager","model_report_account_analytic_planning","project.group_project_manager",1,1,1,1
-"access_report_account_analytic_planning_line_project_manager","report_account_analytic.planning.line manager","model_report_account_analytic_planning_line","project.group_project_manager",1,0,0,0
-"access_report_account_analytic_planning_stat_project_manager","report_account_analytic.planning.stat manager","model_report_account_analytic_planning_stat","project.group_project_manager",1,0,0,0
-"access_report_account_analytic_planning_stat_project_user","report_account_analytic.planning.stat user","model_report_account_analytic_planning_stat","project.group_project_user",1,1,1,0
-"access_account_analytic_account_project_manager","account.analytic.account project manager","analytic.model_account_analytic_account","project.group_project_manager",1,1,1,1
-"access_report_account_analytic_planning__project_user","report_account_analytic.planning user","model_report_account_analytic_planning_user","project.group_project_user",1,1,1,0
-"access_report_account_analytic_planning_account_project_manager","report_account_analytic.planning.account","model_report_account_analytic_planning_account","project.group_project_manager",1,1,1,1
-"access_report_account_analytic_planning_line_project_user","report_account_analytic.planning.line user","model_report_account_analytic_planning_line","project.group_project_user",1,1,1,0
-"access_report_account_analytic_planning_account_project_user","report_account_analytic.planning.account user","model_report_account_analytic_planning_account","project.group_project_user",1,1,1,0
-"access_report_account_analytic_planning__project_manager","report_account_analytic.planning.manager","model_report_account_analytic_planning_user","project.group_project_manager",1,1,1,1
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+access_report_account_analytic_planning_project_manager,report_account_analytic.planning manager,model_report_account_analytic_planning,project.group_project_manager,1,1,1,1
+access_report_account_analytic_planning_line_project_manager,report_account_analytic.planning.line manager,model_report_account_analytic_planning_line,project.group_project_manager,1,0,0,0
+access_report_account_analytic_planning_stat_project_manager,report_account_analytic.planning.stat manager,model_report_account_analytic_planning_stat,project.group_project_manager,1,0,0,0
+access_report_account_analytic_planning_stat_project_user,report_account_analytic.planning.stat user,model_report_account_analytic_planning_stat,project.group_project_user,1,1,1,0
+access_account_analytic_account_project_manager,account.analytic.account project manager,analytic.model_account_analytic_account,project.group_project_manager,1,1,1,1
+access_report_account_analytic_planning__project_user,report_account_analytic.planning user,model_report_account_analytic_planning_user,project.group_project_user,1,1,1,0
+access_report_account_analytic_planning_account_project_manager,report_account_analytic.planning.account,model_report_account_analytic_planning_account,project.group_project_manager,1,1,1,1
+access_report_account_analytic_planning_line_project_user,report_account_analytic.planning.line user,model_report_account_analytic_planning_line,project.group_project_user,1,1,1,0
+access_report_account_analytic_planning_account_project_user,report_account_analytic.planning.account user,model_report_account_analytic_planning_account,project.group_project_user,1,1,1,0
+access_report_account_analytic_planning__project_manager,report_account_analytic.planning.manager,model_report_account_analytic_planning_user,project.group_project_manager,1,1,1,1
diff --git a/addons/project_retro_planning/__openerp__.py b/addons/project_retro_planning/__openerp__.py
index 5ca01a3a0e1..90a4ef2eafa 100644
--- a/addons/project_retro_planning/__openerp__.py
+++ b/addons/project_retro_planning/__openerp__.py
@@ -23,6 +23,7 @@
'name': 'Project Retro-planning',
'version': '0.1',
'category': 'Project Management',
+ 'complexity': "expert",
'description': """
Changes dates according to change in project End Date.
======================================================
diff --git a/addons/project_retro_planning/i18n/hr.po b/addons/project_retro_planning/i18n/hr.po
index 872dde535d7..a1eb983f064 100644
--- a/addons/project_retro_planning/i18n/hr.po
+++ b/addons/project_retro_planning/i18n/hr.po
@@ -7,20 +7,20 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
-"PO-Revision-Date: 2010-08-02 14:48+0000\n"
-"Last-Translator: Mantavya Gajjar (Open ERP) \n"
+"PO-Revision-Date: 2011-12-12 08:13+0000\n"
+"Last-Translator: Tomislav Bosnjakovic \n"
"Language-Team: Vinteh\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-05 05:40+0000\n"
-"X-Generator: Launchpad (build 14231)\n"
+"X-Launchpad-Export-Date: 2011-12-13 05:01+0000\n"
+"X-Generator: Launchpad (build 14458)\n"
"Language: hr\n"
#. module: project_retro_planning
#: model:ir.model,name:project_retro_planning.model_project_project
msgid "Project"
-msgstr ""
+msgstr "Projekt"
#. module: project_retro_planning
#: model:ir.module.module,shortdesc:project_retro_planning.module_meta_information
@@ -35,13 +35,17 @@ msgid ""
" then the deadline date and start date for all the tasks will "
"change accordingly "
msgstr ""
+"\n"
+" - Ako se promjenio datum završetka projekta\n"
+" tada će se promjeniti i kranji rok i datum početka za sve zadatke "
#. module: project_retro_planning
#: constraint:project.project:0
msgid "Error! project start-date must be lower then project end-date."
msgstr ""
+"Greška! Početni datum projekta mora biti manji od završnog datuma projekta."
#. module: project_retro_planning
#: constraint:project.project:0
msgid "Error! You cannot assign escalation to the same project!"
-msgstr ""
+msgstr "Greška! Ne možete dodjeliti eskalaciju istom projektu!"
diff --git a/addons/project_scrum/__openerp__.py b/addons/project_scrum/__openerp__.py
index d4aa99196b0..52804e2a4ba 100644
--- a/addons/project_scrum/__openerp__.py
+++ b/addons/project_scrum/__openerp__.py
@@ -24,7 +24,7 @@
'name': 'Methodology: SCRUM',
'version': '1.0',
'category': 'Project Management',
- 'complexity': "easy",
+ 'complexity': "normal",
'description': """
This module implements all concepts defined by the scrum project management methodology for IT companies.
=========================================================================================================
diff --git a/addons/project_scrum/i18n/hr.po b/addons/project_scrum/i18n/hr.po
index dcdffaf8c28..4b8f473050c 100644
--- a/addons/project_scrum/i18n/hr.po
+++ b/addons/project_scrum/i18n/hr.po
@@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
-"PO-Revision-Date: 2009-02-03 06:26+0000\n"
-"Last-Translator: <>\n"
+"PO-Revision-Date: 2011-12-09 14:20+0000\n"
+"Last-Translator: Tomislav Bosnjakovic \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-05 04:57+0000\n"
-"X-Generator: Launchpad (build 14231)\n"
+"X-Launchpad-Export-Date: 2011-12-10 04:56+0000\n"
+"X-Generator: Launchpad (build 14450)\n"
#. module: project_scrum
#: help:project.scrum.email,scrum_master_email:0
@@ -24,23 +24,23 @@ msgstr ""
#. module: project_scrum
#: view:project.scrum.backlog.assign.sprint:0
msgid "_Assign"
-msgstr ""
+msgstr "_Dodjeli"
#. module: project_scrum
#: field:project.scrum.meeting,name:0
msgid "Meeting Name"
-msgstr ""
+msgstr "Naziv skupa"
#. module: project_scrum
#: model:process.transition,note:project_scrum.process_transition_backlogtask0
msgid "From backlog create task."
-msgstr ""
+msgstr "Kreiraj zadatak iz backloga"
#. module: project_scrum
#: view:project.scrum.product.backlog:0
#: field:project.scrum.product.backlog,user_id:0
msgid "Author"
-msgstr ""
+msgstr "Autor"
#. module: project_scrum
#: model:ir.module.module,description:project_scrum.module_meta_information
@@ -68,12 +68,35 @@ msgid ""
" * http://controlchaos.com\n"
" "
msgstr ""
+"\n"
+" Ovaj modul implemetira sve koncepte definirane u SRUM metodologiji\n"
+" za upravljanje projektima u IT kompanijama:\n"
+" * Projekti sa susretima (sprintovima), vlasnik produkta, scrum master\n"
+" * Sprintovi sa pregledima, dnevnim sastancima, povratnim informacijama\n"
+" * Backlog produkta\n"
+" * Backlog sprinta\n"
+"\n"
+" Dodaje neke koncepte modulu Upravljanja projektima: \n"
+" * Srednjoročni i dugoročni putokaz\n"
+" * Korisnički/Funkcionalni zahtjevi naspram tehničkih\n"
+"\n"
+" Također kreira i novi sustav izvještavanja:\n"
+" * Burn-down chart - grafikon preostalog posla\n"
+"\n"
+" Scrum projekti i zadaci nasljeđuju iz pravih projekata i zadataka,\n"
+" tako da je moguće nastaviti raditi na normalnim zadacima koji ukljućuju "
+"\n"
+" i zadatke iz Scrum projekata.\n"
+" \n"
+" Više informacija o metodologiji:\n"
+" * http://controlchaos.com\n"
+" "
#. module: project_scrum
#: view:project.scrum.meeting:0
#: view:project.scrum.sprint:0
msgid "What did you do since the last meeting?"
-msgstr ""
+msgstr "Što ste radili od zadnjeg sastanka?"
#. module: project_scrum
#: model:ir.actions.act_window,help:project_scrum.action_sprint_all_tree
@@ -83,46 +106,51 @@ msgid ""
"which the team implements a list of product backlogs. The sprint review is "
"organized when the team presents its work to the customer and product owner."
msgstr ""
+"Scrum agilna metodologija se koristi u projektima razvoja softvera. U ovoj "
+"metodologiji sprint je kratki period vremena (npr. 1 mjesec) u kojem tim "
+"implementira listu backlogova (preostalih poslova) produkta. Pregled sprinta "
+"se organizira kad tim prezetira svoj rad klijentu i vlasniku produkta."
#. module: project_scrum
#: view:project.scrum.meeting:0
#: view:project.scrum.product.backlog:0
#: view:project.scrum.sprint:0
msgid "Group By..."
-msgstr ""
+msgstr "Grupiraj po..."
#. module: project_scrum
#: model:process.node,note:project_scrum.process_node_productbacklog0
msgid "Create task from backlogs"
-msgstr ""
+msgstr "Kreiraj zadatak iz preostalih zadataka"
#. module: project_scrum
#: model:ir.module.module,shortdesc:project_scrum.module_meta_information
msgid "Scrum, Agile Development Method"
-msgstr ""
+msgstr "Scrum, agilna metoda razvoja"
#. module: project_scrum
#: field:project.scrum.product.backlog,progress:0
msgid "Progress"
-msgstr ""
+msgstr "Napredak"
#. module: project_scrum
#: field:project.scrum.meeting,user_id:0
#: view:project.scrum.sprint:0
#: field:project.scrum.sprint,scrum_master_id:0
msgid "Scrum Master"
-msgstr ""
+msgstr "Scrum Master"
#. module: project_scrum
#: code:addons/project_scrum/project_scrum.py:83
#, python-format
msgid "The sprint '%s' has been opened."
-msgstr ""
+msgstr "Sprint '%s' je otvoren."
#. module: project_scrum
#: constraint:project.project:0
msgid "Error! project start-date must be lower then project end-date."
msgstr ""
+"Greška! Početni datum projekta mora biti manji od završnog datuma projekta."
#. module: project_scrum
#: view:project.scrum.meeting:0
@@ -133,50 +161,50 @@ msgstr ""
#. module: project_scrum
#: view:project.scrum.sprint:0
msgid "Retrospective"
-msgstr ""
+msgstr "Pogled unazad"
#. module: project_scrum
#: view:project.scrum.meeting:0
msgid "Send Email"
-msgstr ""
+msgstr "Pošalji e-mail"
#. module: project_scrum
#: constraint:project.task:0
msgid "Error ! You cannot create recursive tasks."
-msgstr ""
+msgstr "Greška! Ne možete kreirati rekurzivne zadatke."
#. module: project_scrum
#: model:ir.actions.act_window,name:project_scrum.dblc_proj
msgid "View project's backlog"
-msgstr ""
+msgstr "Pogledaj preostale zadatke projekta"
#. module: project_scrum
#: view:project.scrum.product.backlog:0
#: view:project.scrum.sprint:0
msgid "Set to Draft"
-msgstr ""
+msgstr "Postavi kao nacrt"
#. module: project_scrum
#: model:ir.model,name:project_scrum.model_project_scrum_backlog_merge
msgid "Merge Product Backlogs"
-msgstr ""
+msgstr "Spoji preostale zadatke produkta"
#. module: project_scrum
#: model:ir.actions.act_window,name:project_scrum.action_scrum_backlog_merge
#: view:project.scrum.backlog.merge:0
msgid "Merge Backlogs"
-msgstr ""
+msgstr "Spoji preostale zadatke"
#. module: project_scrum
#: code:addons/project_scrum/wizard/project_scrum_email.py:53
#, python-format
msgid "Scrum Meeting : %s"
-msgstr ""
+msgstr "Scrum sastanak: %s"
#. module: project_scrum
#: view:project.task:0
msgid "Backlog"
-msgstr ""
+msgstr "Preostali zadaci"
#. module: project_scrum
#: model:ir.model,name:project_scrum.model_project_scrum_email
@@ -186,27 +214,27 @@ msgstr ""
#. module: project_scrum
#: constraint:project.project:0
msgid "Error! You cannot assign escalation to the same project!"
-msgstr ""
+msgstr "Greška! Ne možete dodjeliti eskalaciju istom projektu!"
#. module: project_scrum
#: field:project.scrum.sprint,name:0
msgid "Sprint Name"
-msgstr ""
+msgstr "Ime sprinta"
#. module: project_scrum
#: model:ir.model,name:project_scrum.model_project_task
msgid "Task"
-msgstr ""
+msgstr "Zadatak"
#. module: project_scrum
#: view:postpone.wizard:0
msgid "Ok"
-msgstr ""
+msgstr "U redu"
#. module: project_scrum
#: view:project.scrum.product.backlog:0
msgid "Spent hours"
-msgstr ""
+msgstr "Utrošeni sati"
#. module: project_scrum
#: model:ir.actions.act_window,help:project_scrum.action_meeting_form
@@ -215,30 +243,37 @@ msgid ""
"this methodology, a daily meeting is organized by the scrum master with his "
"team in order to detect the difficulties the team faced/will face."
msgstr ""
+"The scrum agile methodology is used in software development projects. In "
+"this methodology, a daily meeting is organized by the scrum master with his "
+"team in order to detect the difficulties the team faced/will face.\r\n"
+"Scrum agilna metodologija se koristi u projektima razvoja softvera. U ovoj "
+"metodologiji, Scrum master organizira dnevne sastanke sa svojim timom kako "
+"bi otkrio poteškoće s kojima se tim susreo ili će se susresti."
#. module: project_scrum
#: code:addons/project_scrum/project_scrum.py:316
#, python-format
msgid "Please provide email address for product owner defined on sprint."
msgstr ""
+"Molim upišite e-mail adresu vlasnika produkta definiranog na sprintu."
#. module: project_scrum
#: code:addons/project_scrum/project_scrum.py:327
#, python-format
msgid "Scrum Meeting of %s"
-msgstr ""
+msgstr "Srum sastanak %s"
#. module: project_scrum
#: code:addons/project_scrum/wizard/project_scrum_backlog_sprint.py:57
#, python-format
msgid "Product Backlog '%s' is converted into Task %d."
-msgstr ""
+msgstr "Preostali zadatak produkta '%s' je pretvoren u zadatak %d."
#. module: project_scrum
#: code:addons/project_scrum/wizard/project_scrum_backlog_sprint.py:62
#, python-format
msgid "Product Backlog '%s' is assigned sprint:%s"
-msgstr ""
+msgstr "Preostali zadatak produkta '%s' je dodjeljen sprintu: %s"
#. module: project_scrum
#: code:addons/project_scrum/wizard/project_scrum_backlog_sprint.py:57
@@ -248,7 +283,7 @@ msgstr ""
#: field:project.task,product_backlog_id:0
#, python-format
msgid "Product Backlog"
-msgstr ""
+msgstr "Preostali zadaci produkta"
#. module: project_scrum
#: model:ir.model,name:project_scrum.model_project_project
@@ -259,12 +294,12 @@ msgstr ""
#: view:project.scrum.sprint:0
#: field:project.scrum.sprint,project_id:0
msgid "Project"
-msgstr ""
+msgstr "Projekt"
#. module: project_scrum
#: view:project.scrum.product.backlog:0
msgid "Start Task"
-msgstr ""
+msgstr "Započni zadatak"
#. module: project_scrum
#: code:addons/project_scrum/wizard/project_scrum_email.py:90
@@ -272,7 +307,7 @@ msgstr ""
#: code:addons/project_scrum/wizard/project_scrum_email.py:96
#, python-format
msgid "None"
-msgstr ""
+msgstr "Ništa"
#. module: project_scrum
#: view:project.scrum.product.backlog:0
@@ -282,44 +317,44 @@ msgstr ""
#. module: project_scrum
#: view:project.scrum.sprint:0
msgid "Sprint Info"
-msgstr ""
+msgstr "Sprint info"
#. module: project_scrum
#: field:project.scrum.sprint,date_stop:0
msgid "Ending Date"
-msgstr ""
+msgstr "Završni datum"
#. module: project_scrum
#: view:project.scrum.meeting:0
#: view:project.scrum.sprint:0
msgid "Links"
-msgstr ""
+msgstr "Poveznice"
#. module: project_scrum
#: help:project.scrum.sprint,effective_hours:0
msgid "Computed using the sum of the task work done."
-msgstr ""
+msgstr "Izračunato kao zbroj izvršenog rada na zadatku"
#. module: project_scrum
#: code:addons/project_scrum/wizard/project_scrum_email.py:91
#, python-format
msgid "Task for Today"
-msgstr ""
+msgstr "Zadaci za danas"
#. module: project_scrum
#: field:project.scrum.backlog.assign.sprint,state_open:0
msgid "Open Backlog"
-msgstr ""
+msgstr "Otvori popis preostalih zadatka"
#. module: project_scrum
#: view:project.scrum.product.backlog:0
msgid "Total Spent Hours"
-msgstr ""
+msgstr "Ukupno utrošeno sati"
#. module: project_scrum
#: field:project.scrum.sprint,date_start:0
msgid "Starting Date"
-msgstr ""
+msgstr "Početni datum"
#. module: project_scrum
#: code:addons/project_scrum/wizard/project_scrum_email.py:94
@@ -330,14 +365,14 @@ msgstr ""
#. module: project_scrum
#: view:project.scrum.sprint:0
msgid "Planning"
-msgstr ""
+msgstr "Planiranje"
#. module: project_scrum
#: view:project.scrum.backlog.assign.sprint:0
#: view:project.scrum.backlog.create.task:0
#: view:project.scrum.email:0
msgid "_Cancel"
-msgstr ""
+msgstr "_Otkaži"
#. module: project_scrum
#: help:project.scrum.sprint,scrum_master_id:0
@@ -349,12 +384,12 @@ msgstr ""
#: field:project.scrum.product.backlog,expected_hours:0
#: field:project.scrum.sprint,expected_hours:0
msgid "Planned Hours"
-msgstr ""
+msgstr "Planirani sati"
#. module: project_scrum
#: field:project.scrum.email,subject:0
msgid "Subject"
-msgstr ""
+msgstr "Predmet"
#. module: project_scrum
#: view:board.board:0
@@ -364,28 +399,28 @@ msgstr ""
#: view:project.scrum.product.backlog:0
#: view:project.scrum.sprint:0
msgid "Sprints"
-msgstr ""
+msgstr "Sprintevi"
#. module: project_scrum
#: code:addons/project_scrum/project_scrum.py:314
#, python-format
msgid "Email notification could not be sent to the product owner %s"
-msgstr ""
+msgstr "Obavjest e-mailom nije mogla biti poslana vlasniku produkta %s"
#. module: project_scrum
#: field:project.scrum.backlog.assign.sprint,convert_to_task:0
msgid "Convert To Task"
-msgstr ""
+msgstr "Pretvori u zadatak"
#. module: project_scrum
#: view:project.scrum.backlog.merge:0
msgid "Are you sure you want to merge these Backlogs?"
-msgstr ""
+msgstr "Jeste li sigurni da želite spojiti ove preostale zadatke"
#. module: project_scrum
#: help:project.scrum.backlog.create.task,user_id:0
msgid "Responsible user who can work on task"
-msgstr ""
+msgstr "Odgovorni korisnik koji može raditi na zadataku"
#. module: project_scrum
#: view:project.scrum.product.backlog:0
@@ -393,17 +428,17 @@ msgstr ""
#: view:project.scrum.sprint:0
#: field:project.scrum.sprint,state:0
msgid "State"
-msgstr ""
+msgstr "Status"
#. module: project_scrum
#: model:ir.actions.act_window,name:project_scrum.action_sprint_task_open
msgid "View sprint Tasks"
-msgstr ""
+msgstr "Pogledaj zadatke sprinta"
#. module: project_scrum
#: field:project.scrum.sprint,meeting_ids:0
msgid "Daily Scrum"
-msgstr ""
+msgstr "Dnevni Scrum"
#. module: project_scrum
#: view:project.scrum.backlog.create.task:0
@@ -415,7 +450,7 @@ msgstr ""
#: model:ir.ui.menu,name:project_scrum.menu_action_product_backlog_form
#: view:project.scrum.product.backlog:0
msgid "Product Backlogs"
-msgstr ""
+msgstr "Preostali zadaci produkta"
#. module: project_scrum
#: code:addons/project_scrum/project_scrum.py:301
@@ -424,78 +459,78 @@ msgstr ""
#: code:addons/project_scrum/project_scrum.py:316
#, python-format
msgid "Error !"
-msgstr ""
+msgstr "Greška !"
#. module: project_scrum
#: field:project.scrum.product.backlog,create_date:0
msgid "Creation Date"
-msgstr ""
+msgstr "Datum kreiranja"
#. module: project_scrum
#: view:project.scrum.meeting:0
#: view:project.scrum.sprint:0
msgid "Are there anything blocking you?"
-msgstr ""
+msgstr "Da li vas nešto blokira?"
#. module: project_scrum
#: model:ir.ui.menu,name:project_scrum.menu_scrum
msgid "Scrum"
-msgstr ""
+msgstr "Scrum"
#. module: project_scrum
#: field:project.scrum.meeting,question_today:0
msgid "Tasks for today"
-msgstr ""
+msgstr "Današnji zadaci"
#. module: project_scrum
#: code:addons/project_scrum/wizard/project_scrum_email.py:88
#: field:project.scrum.meeting,question_yesterday:0
#, python-format
msgid "Tasks since yesterday"
-msgstr ""
+msgstr "Zadaci od jučer"
#. module: project_scrum
#: code:addons/project_scrum/wizard/project_scrum_backlog_merger.py:39
#: code:addons/project_scrum/wizard/project_scrum_backlog_merger.py:71
#, python-format
msgid "Warning"
-msgstr ""
+msgstr "Upozorenje"
#. module: project_scrum
#: model:ir.model,name:project_scrum.model_project_scrum_backlog_assign_sprint
msgid "Assign sprint to backlogs"
-msgstr ""
+msgstr "Dodjeli sprintove preostali zadacima"
#. module: project_scrum
#: help:project.scrum.sprint,expected_hours:0
msgid "Estimated time to do the task."
-msgstr ""
+msgstr "Procjenjeno potrebno vrijeme za dovršetak zadatka."
#. module: project_scrum
#: field:project.scrum.product.backlog,task_hours:0
msgid "Task Hours"
-msgstr ""
+msgstr "Sati zadatka"
#. module: project_scrum
#: view:project.scrum.sprint:0
msgid "Dates"
-msgstr ""
+msgstr "Datumi"
#. module: project_scrum
#: view:project.scrum.sprint:0
msgid "Send to Scrum Master"
-msgstr ""
+msgstr "Pošalji Scrum masteru"
#. module: project_scrum
#: selection:project.scrum.product.backlog,state:0
#: selection:project.scrum.sprint,state:0
msgid "Cancelled"
-msgstr ""
+msgstr "Poništeno"
#. module: project_scrum
#: model:ir.actions.act_window,name:project_scrum.dblc_proj2
msgid "View project's tasks"
-msgstr ""
+msgstr "Pogledaj zadatke projekta"
#. module: project_scrum
#: code:addons/project_scrum/wizard/project_scrum_email.py:56
@@ -504,43 +539,45 @@ msgid ""
"Hello , \n"
"I am sending you Scrum Meeting : %s for the Sprint '%s' of Project '%s'"
msgstr ""
+"Pozdrav,\n"
+"Šaljem vam Scrum sastanak. %s sprinta '%s' projekta '%s'"
#. module: project_scrum
#: view:project.scrum.meeting:0
msgid "Daily"
-msgstr ""
+msgstr "Dnevno"
#. module: project_scrum
#: field:project.scrum.sprint,backlog_ids:0
msgid "Sprint Backlog"
-msgstr ""
+msgstr "Preostali zadaci sprinta"
#. module: project_scrum
#: view:project.scrum.product.backlog:0
msgid "Delegate"
-msgstr ""
+msgstr "Delegiraj"
#. module: project_scrum
#: view:board.board:0
msgid "My Board"
-msgstr ""
+msgstr "Moja ploča"
#. module: project_scrum
#: view:postpone.wizard:0
msgid "Postpone Backlog"
-msgstr ""
+msgstr "Odgodi preostale zadatke"
#. module: project_scrum
#: view:board.board:0
#: model:ir.actions.act_window,name:project_scrum.action_view_task_progress_graph
#: view:project.task:0
msgid "Task Progress"
-msgstr ""
+msgstr "Napredak zadatka"
#. module: project_scrum
#: field:project.scrum.meeting,date:0
msgid "Meeting Date"
-msgstr ""
+msgstr "Datum sastanka"
#. module: project_scrum
#: model:ir.actions.act_window,name:project_scrum.act_scrum_sprint_2_project_task
@@ -549,112 +586,116 @@ msgstr ""
#: view:project.scrum.product.backlog:0
#: view:project.scrum.sprint:0
msgid "Tasks"
-msgstr ""
+msgstr "Zadaci"
#. module: project_scrum
#: field:project.scrum.email,product_owner_email:0
msgid "Product Owner Email"
-msgstr ""
+msgstr "E-mail vlasnika produkta"
#. module: project_scrum
#: view:project.scrum.email:0
msgid "_Send"
-msgstr ""
+msgstr "_Pošalji"
#. module: project_scrum
#: help:project.scrum.backlog.assign.sprint,sprint_id:0
msgid "Select Sprint to assign backlog."
-msgstr ""
+msgstr "Odaberite sprint za dodjelu preostalih zadataka"
#. module: project_scrum
#: help:project.scrum.product.backlog,progress:0
#: help:project.scrum.sprint,progress:0
msgid "Computed as: Time Spent / Total Time."
-msgstr ""
+msgstr "Izračunato kao: Utrošeno vrijeme/Ukupno vrijeme"
#. module: project_scrum
#: view:project.scrum.meeting:0
#: view:project.scrum.sprint:0
msgid "Month"
-msgstr ""
+msgstr "Mjesec"
#. module: project_scrum
#: field:project.scrum.meeting,question_blocks:0
msgid "Blocks encountered"
-msgstr ""
+msgstr "Pronađene blokade"
#. module: project_scrum
#: help:project.scrum.backlog.assign.sprint,state_open:0
msgid "Change the state of product backlogs to open if its in draft state"
msgstr ""
+"Promjeni status preostalih zahtjeva produkta radi otvaranja ako je u statusu "
+"nacrta."
#. module: project_scrum
#: view:project.scrum.email:0
#: field:project.scrum.email,message:0
msgid "Message"
-msgstr ""
+msgstr "Obavijest"
#. module: project_scrum
#: field:project.scrum.email,scrum_master_email:0
msgid "Scrum Master Email"
-msgstr ""
+msgstr "E-mail Scrum mastera"
#. module: project_scrum
#: help:project.project,product_owner_id:0
#: help:project.scrum.sprint,product_owner_id:0
msgid "The person who is responsible for the product"
-msgstr ""
+msgstr "Osoba koja je odgovorna za produkt"
#. module: project_scrum
#: view:project.scrum.meeting:0
#: view:project.scrum.sprint:0
msgid "Scrum Sprint"
-msgstr ""
+msgstr "Scrum sprint"
#. module: project_scrum
#: view:project.scrum.sprint:0
msgid "Product owner"
-msgstr ""
+msgstr "Vlasnik produkta"
#. module: project_scrum
#: view:project.scrum.sprint:0
msgid "Review"
-msgstr ""
+msgstr "Provjera"
#. module: project_scrum
#: field:project.scrum.sprint,retrospective:0
msgid "Sprint Retrospective"
-msgstr ""
+msgstr "Sprint pogled unazad"
#. module: project_scrum
#: field:project.scrum.product.backlog,note:0
msgid "Note"
-msgstr ""
+msgstr "Bilješka"
#. module: project_scrum
#: selection:project.scrum.product.backlog,state:0
#: selection:project.scrum.sprint,state:0
msgid "Draft"
-msgstr ""
+msgstr "Nacrt"
#. module: project_scrum
#: help:project.task,product_backlog_id:0
msgid ""
"Related product backlog that contains this task. Used in SCRUM methodology"
msgstr ""
+"Povezani preostali zadaci produkta koji sadrže zadatak. Korišteni u SCRUM "
+"metodologiji."
#. module: project_scrum
#: view:project.scrum.meeting:0
#: view:project.scrum.sprint:0
msgid "What do you plan to do till the next meeting?"
-msgstr ""
+msgstr "Što planirate raditi do sljedećeg sastanka?"
#. module: project_scrum
#: model:ir.actions.act_window,name:project_scrum.action_postpone_wizard
#: view:postpone.wizard:0
#: view:project.scrum.product.backlog:0
msgid "Postpone"
-msgstr ""
+msgstr "Odgodi"
#. module: project_scrum
#: view:project.scrum.product.backlog:0
@@ -662,87 +703,88 @@ msgstr ""
#: view:project.scrum.sprint:0
#: selection:project.scrum.sprint,state:0
msgid "Pending"
-msgstr ""
+msgstr "Na čekanju"
#. module: project_scrum
#: view:project.scrum.meeting:0
#: view:project.scrum.sprint:0
msgid "Optional Info"
-msgstr ""
+msgstr "Dodatne informacije"
#. module: project_scrum
#: model:ir.model,name:project_scrum.model_project_scrum_backlog_create_task
msgid "Create Tasks from Product Backlogs"
-msgstr ""
+msgstr "Kreiraj zadatke iz preostalih zadataka produkta"
#. module: project_scrum
#: help:project.project,sprint_size:0
msgid "Number of days allocated for sprint"
-msgstr ""
+msgstr "Broj dana dodjeljnih sprintu"
#. module: project_scrum
#: field:project.project,product_owner_id:0
#: field:project.scrum.sprint,product_owner_id:0
msgid "Product Owner"
-msgstr ""
+msgstr "Vlasnik produkta"
#. module: project_scrum
#: help:project.scrum.product.backlog,sequence:0
msgid "Gives the sequence order when displaying a list of product backlog."
msgstr ""
+"Daje poredak sekvence prilikom prikaza liste preostalih zadataka produkta."
#. module: project_scrum
#: model:process.node,name:project_scrum.process_node_productbacklog0
#: view:project.scrum.product.backlog:0
msgid "Product backlog"
-msgstr ""
+msgstr "Preostali zadaci produkta"
#. module: project_scrum
#: model:ir.actions.act_window,name:project_scrum.act_scrum_sprint_2_product_backlog
msgid "Backlogs"
-msgstr ""
+msgstr "Preostali zadaci"
#. module: project_scrum
#: code:addons/project_scrum/project_scrum.py:326
#, python-format
msgid "Thank you"
-msgstr ""
+msgstr "Hvala"
#. module: project_scrum
#: help:project.scrum.backlog.assign.sprint,convert_to_task:0
msgid "Create Task for Product Backlog"
-msgstr ""
+msgstr "Kreiraj zadatke za preostale zadatke produkta"
#. module: project_scrum
#: field:project.scrum.product.backlog,active:0
msgid "Active"
-msgstr ""
+msgstr "Aktivan"
#. module: project_scrum
#: model:ir.actions.act_window,name:project_scrum.action_meeting_form
#: model:ir.ui.menu,name:project_scrum.menu_action_meeting_form
msgid "Scrum Meetings"
-msgstr ""
+msgstr "Scrum sastanci"
#. module: project_scrum
#: help:project.scrum.product.backlog,expected_hours:0
msgid "Estimated total time to do the Backlog"
-msgstr ""
+msgstr "Procjenjeno ukupno vrijeme za izvršenje preostalih zadataka"
#. module: project_scrum
#: help:project.scrum.backlog.merge,project_id:0
msgid "Select project for the new product backlog"
-msgstr ""
+msgstr "Odaberi projekt za novu listu preostalih zadataka produkta"
#. module: project_scrum
#: view:project.scrum.backlog.merge:0
msgid "Merge"
-msgstr ""
+msgstr "Spoji"
#. module: project_scrum
#: model:ir.actions.act_window,name:project_scrum.action_sprint_backlog_open
msgid "View sprint backlog"
-msgstr ""
+msgstr "Pogledaj preostale zadatke sprinta"
#. module: project_scrum
#: field:project.scrum.meeting,question_backlog:0
@@ -754,7 +796,7 @@ msgstr ""
#: view:project.scrum.backlog.create.task:0
#: view:project.scrum.product.backlog:0
msgid "Convert to Task"
-msgstr ""
+msgstr "Pretvori u zadatak"
#. module: project_scrum
#: help:project.scrum.sprint,project_id:0
@@ -762,49 +804,51 @@ msgid ""
"If you have [?] in the project name, it means there are no analytic account "
"linked to this project."
msgstr ""
+"Ako imate (?) u imenu projekta, znači da nema analitičkog konta vezanog uz "
+"projekt."
#. module: project_scrum
#: field:project.scrum.product.backlog,sequence:0
msgid "Sequence"
-msgstr ""
+msgstr "Sekvenca"
#. module: project_scrum
#: view:project.scrum.sprint:0
msgid "Send to Product Owner"
-msgstr ""
+msgstr "Pošalji vlasniku produkta"
#. module: project_scrum
#: view:board.board:0
#: model:ir.actions.act_window,name:project_scrum.action_view_backlog_progress_graph
#: view:project.scrum.product.backlog:0
msgid "Backlog Progress"
-msgstr ""
+msgstr "Napredak preostalih zadataka"
#. module: project_scrum
#: code:addons/project_scrum/project_scrum.py:301
#, python-format
msgid "Email notification could not be sent to the scrum master %s"
-msgstr ""
+msgstr "E-mail obavjest nije mogla biti poslana Scrum masteru %s"
#. module: project_scrum
#: view:project.scrum.product.backlog:0
#: selection:project.scrum.product.backlog,state:0
#: selection:project.scrum.sprint,state:0
msgid "Done"
-msgstr ""
+msgstr "Izvršeno"
#. module: project_scrum
#: view:project.scrum.backlog.merge:0
#: view:project.scrum.product.backlog:0
msgid "Cancel"
-msgstr ""
+msgstr "Odustani"
#. module: project_scrum
#: view:postpone.wizard:0
#: view:project.scrum.product.backlog:0
#: view:project.scrum.sprint:0
msgid "Close"
-msgstr ""
+msgstr "Zatvori"
#. module: project_scrum
#: view:project.scrum.product.backlog:0
@@ -812,33 +856,33 @@ msgstr ""
#: view:project.scrum.sprint:0
#: selection:project.scrum.sprint,state:0
msgid "Open"
-msgstr ""
+msgstr "_"
#. module: project_scrum
#: view:project.scrum.sprint:0
#: field:project.scrum.sprint,effective_hours:0
msgid "Effective hours"
-msgstr ""
+msgstr "Efektivni sati"
#. module: project_scrum
#: view:project.scrum.product.backlog:0
msgid "Information"
-msgstr ""
+msgstr "Informacija"
#. module: project_scrum
#: view:project.scrum.product.backlog:0
msgid "Remaining Hours"
-msgstr ""
+msgstr "Preostali sati"
#. module: project_scrum
#: view:project.scrum.sprint:0
msgid "Responsible"
-msgstr ""
+msgstr "Odgovoran"
#. module: project_scrum
#: field:project.scrum.product.backlog,name:0
msgid "Feature"
-msgstr ""
+msgstr "Značajka"
#. module: project_scrum
#: view:project.scrum.meeting:0
@@ -846,17 +890,17 @@ msgstr ""
#: view:project.scrum.sprint:0
#: view:project.task:0
msgid "Current"
-msgstr ""
+msgstr "Trenutno"
#. module: project_scrum
#: view:project.scrum.product.backlog:0
msgid "My Backlogs"
-msgstr ""
+msgstr "Moji presotali zadaci"
#. module: project_scrum
#: view:project.scrum.email:0
msgid "Send Email for Scrum Meeting Details"
-msgstr ""
+msgstr "Pošalji e-mail za detalje Scrum sastanka"
#. module: project_scrum
#: model:ir.actions.act_window,help:project_scrum.action_product_backlog_form
@@ -866,17 +910,22 @@ msgid ""
"can be planified in a development sprint and may be split into several "
"tasks. The product backlog is managed by the product owner of the project."
msgstr ""
+"Scrum agilna metodologija se koristi u procesu razvoja softvera. Preostali "
+"zadaci produkta je lista značajki za implementaciju. Preostali zadaci "
+"produkta planiraju se u razvojnom sprintu (skupu) i mogu biti razdvojeni na "
+"više zadataka. Listom preostalih zadaka produkta upravlja vlasnik produkta "
+"na projektu."
#. module: project_scrum
#: model:process.transition,name:project_scrum.process_transition_backlogtask0
msgid "Backlog Task"
-msgstr ""
+msgstr "Zadatak liste preostalih zadataka"
#. module: project_scrum
#: view:project.scrum.product.backlog:0
#: view:project.scrum.sprint:0
msgid "Planned hours"
-msgstr ""
+msgstr "Planirani sati"
#. module: project_scrum
#: model:ir.actions.act_window,name:project_scrum.action_project_scrum_email
@@ -885,38 +934,38 @@ msgstr ""
#: view:project.scrum.meeting:0
#: view:project.scrum.sprint:0
msgid "Scrum Meeting"
-msgstr ""
+msgstr "Scrum sastanak"
#. module: project_scrum
#: model:ir.actions.report.xml,name:project_scrum.report_scrum_sprint_burndown_chart
#: view:project.scrum.sprint:0
msgid "Burndown Chart"
-msgstr ""
+msgstr "Burndown chart - prikaz preostalog posla"
#. module: project_scrum
#: view:project.scrum.sprint:0
msgid "Daily Meetings"
-msgstr ""
+msgstr "Dnevni sastanci"
#. module: project_scrum
#: view:project.scrum.sprint:0
msgid "Expected hours"
-msgstr ""
+msgstr "Očekivani sati"
#. module: project_scrum
#: field:project.project,sprint_size:0
msgid "Sprint Days"
-msgstr ""
+msgstr "Dani sprinta"
#. module: project_scrum
#: help:project.scrum.email,product_owner_email:0
msgid "Email Id of Product Owner"
-msgstr ""
+msgstr "ID e-maila vlasnika produkta"
#. module: project_scrum
#: field:project.scrum.sprint,progress:0
msgid "Progress (0-100)"
-msgstr ""
+msgstr "Napredak (0-100)"
#. module: project_scrum
#: code:addons/project_scrum/project_scrum.py:324
@@ -926,6 +975,9 @@ msgid ""
" \n"
"I am sending you Daily Meeting Details of date %s for the Sprint %s\n"
msgstr ""
+"Pozdrav %s,\n"
+"\n"
+"šaljem vam detalje dnevnog sastanka datuma %s, za sprint %s\n"
#. module: project_scrum
#: code:addons/project_scrum/project_scrum.py:325
@@ -940,6 +992,14 @@ msgid ""
"*Blocks encountered:\n"
"_______________________ %s"
msgstr ""
+"\n"
+"*Zadaci od jučer:\n"
+"_______________________%s\n"
+"*Zadaci za danas:\n"
+"_______________________ %s\n"
+"\n"
+"*Pronađene blokade:\n"
+"_______________________ %s"
#. module: project_scrum
#: help:project.scrum.product.backlog,active:0
@@ -947,31 +1007,33 @@ msgid ""
"If Active field is set to true, it will allow you to hide the product "
"backlog without removing it."
msgstr ""
+"Ako je aktivno polje postavljeno na DA, omogućit će vam skrivanje liste "
+"preostalih zadataka produkta bez uklanjanja."
#. module: project_scrum
#: help:project.scrum.product.backlog,task_hours:0
msgid "Estimated time of the total hours of the tasks"
-msgstr ""
+msgstr "Procjenjeno vrijeme ukupnih sati zadataka"
#. module: project_scrum
#: view:project.project:0
msgid "Scrum Data"
-msgstr ""
+msgstr "Scrum podaci"
#. module: project_scrum
#: field:project.project,scrum:0
msgid "Is a Scrum Project"
-msgstr ""
+msgstr "je Scrum projekt"
#. module: project_scrum
#: view:project.scrum.product.backlog:0
msgid "Edit"
-msgstr ""
+msgstr "Uredi"
#. module: project_scrum
#: field:project.scrum.product.backlog,tasks_id:0
msgid "Tasks Details"
-msgstr ""
+msgstr "Detalji zadatka"
#. module: project_scrum
#: model:ir.model,name:project_scrum.model_postpone_wizard
@@ -981,7 +1043,7 @@ msgstr ""
#. module: project_scrum
#: view:project.scrum.product.backlog:0
msgid "Total Planned Hours"
-msgstr ""
+msgstr "Ukupno planirani sati"
#. module: project_scrum
#: view:project.scrum.backlog.merge:0
@@ -989,83 +1051,87 @@ msgid ""
"This wizard merge backlogs and create one new backlog with draft state (Old "
"backlogs Will be deleted). And it also merge old tasks from backlogs"
msgstr ""
+"Ovaj asistent spaja liste preostalih zadataka i kreira jednu novu listu u "
+"statusu Nacrt (stare liste preostalih zadataka će biti izbrisane). Također "
+"spaja stare zadatke iz liste preostalih zadataka."
#. module: project_scrum
#: code:addons/project_scrum/project_scrum.py:303
#, python-format
msgid "Please provide email address for scrum master defined on sprint."
-msgstr ""
+msgstr "Molim upišite e-mail adresu scrum mastera definiranog na sprintu."
#. module: project_scrum
#: view:project.scrum.backlog.merge:0
msgid "Select the project for merged backlogs"
-msgstr ""
+msgstr "Odaberite projekt za spojene liste preostalih zadataka"
#. module: project_scrum
#: view:board.board:0
#: model:ir.actions.act_window,name:project_scrum.action_view_my_scrum_sprint_tree
msgid "My Sprint"
-msgstr ""
+msgstr "Moj sprint"
#. module: project_scrum
#: field:project.scrum.product.backlog,effective_hours:0
msgid "Spent Hours"
-msgstr ""
+msgstr "Utrošeni sati"
#. module: project_scrum
#: help:project.scrum.product.backlog,effective_hours:0
msgid "Computed using the sum of the time spent on every related tasks"
msgstr ""
+"Izračunato korištenjem sume utrošenog vremena svakog povezanog zadatka"
#. module: project_scrum
#: model:ir.actions.act_window,name:project_scrum.open_board_project_scrum
#: model:ir.ui.menu,name:project_scrum.menu_deshboard_scurm
msgid "Scrum Dashboard"
-msgstr ""
+msgstr "Scrum nadzorna ploča"
#. module: project_scrum
#: model:ir.model,name:project_scrum.model_project_scrum_sprint
msgid "Project Scrum Sprint"
-msgstr ""
+msgstr "Scrum sprint projekta"
#. module: project_scrum
#: view:project.scrum.product.backlog:0
msgid "Feature Description"
-msgstr ""
+msgstr "Opis značajki"
#. module: project_scrum
#: code:addons/project_scrum/wizard/project_scrum_backlog_merger.py:71
#, python-format
msgid "Please select any Project."
-msgstr ""
+msgstr "Molim odaberite neki projekt"
#. module: project_scrum
#: code:addons/project_scrum/wizard/project_scrum_email.py:97
#, python-format
msgid "Thank you,"
-msgstr ""
+msgstr "Hvala"
#. module: project_scrum
#: code:addons/project_scrum/project_scrum.py:90
#, python-format
msgid "The sprint '%s' has been closed."
-msgstr ""
+msgstr "Sprint %s je zatvoren"
#. module: project_scrum
#: model:ir.actions.act_window,name:project_scrum.action_scrum_backlog_to_sprint
#: view:project.scrum.backlog.assign.sprint:0
msgid "Assign Sprint"
-msgstr ""
+msgstr "Dodjeli sprint"
#. module: project_scrum
#: field:project.scrum.backlog.create.task,user_id:0
msgid "Assign To"
-msgstr ""
+msgstr "Dodjeljen"
#. module: project_scrum
#: view:postpone.wizard:0
msgid "Are you sure to postpone Backlog ?"
-msgstr ""
+msgstr "Jeste li sigurni da želite odgoditi listu preostalih zadataka"
#. module: project_scrum
#: field:project.scrum.backlog.assign.sprint,sprint_id:0
@@ -1076,15 +1142,15 @@ msgstr ""
#: view:project.task:0
#: field:project.task,sprint_id:0
msgid "Sprint"
-msgstr ""
+msgstr "Sprint"
#. module: project_scrum
#: code:addons/project_scrum/wizard/project_scrum_backlog_merger.py:39
#, python-format
msgid "Please select at least two product Backlogs"
-msgstr ""
+msgstr "Molim odaberite bar dvije liste preostalih zadataka produkta"
#. module: project_scrum
#: field:project.scrum.sprint,review:0
msgid "Sprint Review"
-msgstr ""
+msgstr "Pregled sprinta"
diff --git a/addons/project_scrum/project_scrum.py b/addons/project_scrum/project_scrum.py
index 260eadd4a61..85eba636b90 100644
--- a/addons/project_scrum/project_scrum.py
+++ b/addons/project_scrum/project_scrum.py
@@ -254,6 +254,7 @@ class project_scrum_task(osv.osv):
for task in line.tasks_id:
result[task.id] = True
return result.keys()
+
_columns = {
'product_backlog_id': fields.many2one('project.scrum.product.backlog', 'Product Backlog',help="Related product backlog that contains this task. Used in SCRUM methodology"),
'sprint_id': fields.related('product_backlog_id','sprint_id', type='many2one', relation='project.scrum.sprint', string='Sprint',
@@ -262,12 +263,7 @@ class project_scrum_task(osv.osv):
'project.scrum.product.backlog': (_get_task, ['sprint_id'], 10)
}),
}
- #dead code
- def onchange_backlog_id(self, cr, uid, backlog_id=False):
- if not backlog_id:
- return {}
- project_id = self.pool.get('project.scrum.product.backlog').browse(cr, uid, backlog_id).project_id.id
- return {'value': {'project_id': project_id}}
+
project_scrum_task()
class project_scrum_meeting(osv.osv):
@@ -292,45 +288,6 @@ class project_scrum_meeting(osv.osv):
_defaults = {
'date' : lambda *a: time.strftime('%Y-%m-%d'),
}
- # dead code
- def button_send_to_master(self, cr, uid, ids, context=None):
- meeting_id = self.browse(cr, uid, ids, context=context)[0]
- if meeting_id and meeting_id.sprint_id.scrum_master_id.user_email:
- res = self.email_send(cr, uid, ids, meeting_id.sprint_id.scrum_master_id.user_email)
- if not res:
- raise osv.except_osv(_('Error !'), _('Email notification could not be sent to the scrum master %s') % meeting_id.sprint_id.scrum_master_id.name)
- else:
- raise osv.except_osv(_('Error !'), _('Please provide email address for scrum master defined on sprint.'))
- return True
-
- #dead code
- def button_send_product_owner(self, cr, uid, ids, context=None):
- if context is None:
- context = {}
- context.update({'button_send_product_owner': True})
- meeting_id = self.browse(cr, uid, ids, context=context)[0]
- if meeting_id.sprint_id.product_owner_id.user_email:
- res = self.email_send(cr,uid,ids,meeting_id.sprint_id.product_owner_id.user_email)
- if not res:
- raise osv.except_osv(_('Error !'), _('Email notification could not be sent to the product owner %s') % meeting_id.sprint_id.product_owner_id.name)
- else:
- raise osv.except_osv(_('Error !'), _('Please provide email address for product owner defined on sprint.'))
- return True
-
- #dead code
- def email_send(self, cr, uid, ids, email, context=None):
- mail_message_obj = self.pool.get('mail.message')
- meeting_id = self.browse(cr, uid, ids, context=context)[0]
- user = self.pool.get('res.users').browse(cr, uid, uid, context=context)
- user_email = user.user_email or tools.config.get('email_from', False)
- body = _("Hello %s,\n \nI am sending you Daily Meeting Details of date %s for the Sprint %s\n") %(meeting_id.sprint_id.scrum_master_id.name, meeting_id.date, meeting_id.sprint_id.name)
- body += _('\n* Tasks since yesterday:\n_______________________\n%s\n\n* Task for Today:\n_______________________ \n%s\n\n* Blocks encountered:\n_______________________ \n\n%s') %(meeting_id.question_yesterday,meeting_id.question_today, meeting_id.question_blocks or _('No Blocks'))
- body += _("\n\nThank you,\n%s") % user.name
- sub_name = meeting_id.name or _('Scrum Meeting of %s') % meeting_id.date
- flag = mail_message_obj.schedule_with_attach(cr, uid, user_email , [email], sub_name, body, model='project.scrum.meeting', res_id=meeting_id.id, context=context)
- if not flag:
- return False
- return True
project_scrum_meeting()
diff --git a/addons/project_scrum/security/ir.model.access.csv b/addons/project_scrum/security/ir.model.access.csv
index 88e8c506e14..910c3a57296 100644
--- a/addons/project_scrum/security/ir.model.access.csv
+++ b/addons/project_scrum/security/ir.model.access.csv
@@ -1,9 +1,9 @@
-"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
-"access_scrum_sprint","project_scrum.sprint","model_project_scrum_sprint","project.group_project_user",1,1,1,0
-"access_scrum_product_backlog","project_scrum.product.backlog","model_project_scrum_product_backlog","project.group_project_user",1,1,1,0
-"access_scrum_meeting","project_scrum.meeting","model_project_scrum_meeting","project.group_project_user",1,1,1,0
-"access_scrum_meeting_manager","project_scrum.meeting.manager","model_project_scrum_meeting","project.group_project_manager",1,1,1,1
-"access_scrum_sprint_manager","project_scrum.sprint.manager","model_project_scrum_sprint","project.group_project_manager",1,1,1,1
-"access_scrum_product_backlog_manager","project_scrum.product.backlog manager","model_project_scrum_product_backlog","project.group_project_manager",1,1,1,1
-"access_product_uom_project_manager","product.uom project manager","product.model_product_uom","project.group_project_manager",1,1,1,1
-"access_product_uom_project_user","product.uom project user","product.model_product_uom","project.group_project_user",1,0,0,0
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+access_scrum_sprint,project_scrum.sprint,model_project_scrum_sprint,project.group_project_user,1,1,1,0
+access_scrum_product_backlog,project_scrum.product.backlog,model_project_scrum_product_backlog,project.group_project_user,1,1,1,0
+access_scrum_meeting,project_scrum.meeting,model_project_scrum_meeting,project.group_project_user,1,1,1,0
+access_scrum_meeting_manager,project_scrum.meeting.manager,model_project_scrum_meeting,project.group_project_manager,1,1,1,1
+access_scrum_sprint_manager,project_scrum.sprint.manager,model_project_scrum_sprint,project.group_project_manager,1,1,1,1
+access_scrum_product_backlog_manager,project_scrum.product.backlog manager,model_project_scrum_product_backlog,project.group_project_manager,1,1,1,1
+access_product_uom_project_manager,product.uom project manager,product.model_product_uom,project.group_project_manager,1,1,1,1
+access_product_uom_project_user,product.uom project user,product.model_product_uom,project.group_project_user,1,0,0,0
diff --git a/addons/project_timesheet/__openerp__.py b/addons/project_timesheet/__openerp__.py
index b90d3d745a1..7cd36e770ab 100644
--- a/addons/project_timesheet/__openerp__.py
+++ b/addons/project_timesheet/__openerp__.py
@@ -40,6 +40,7 @@ the Timesheet line entries for particular date and particular user with the eff
'demo_xml': ["project_timesheet_demo.xml"],
'test': [
'test/worktask_entry_to_timesheetline_entry.yml',
+ 'test/work_timesheet.yml',
],
'installable': True,
'active': False,
diff --git a/addons/project_timesheet/i18n/hr.po b/addons/project_timesheet/i18n/hr.po
index 55b351af97b..ed2d228c401 100644
--- a/addons/project_timesheet/i18n/hr.po
+++ b/addons/project_timesheet/i18n/hr.po
@@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2011-01-03 16:58+0000\n"
-"PO-Revision-Date: 2009-12-22 12:22+0000\n"
-"Last-Translator: Jožek Prikratki \n"
+"PO-Revision-Date: 2011-12-12 11:28+0000\n"
+"Last-Translator: Tomislav Bosnjakovic \n"
"Language-Team: Vinteh\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-05 05:29+0000\n"
-"X-Generator: Launchpad (build 14231)\n"
+"X-Launchpad-Export-Date: 2011-12-13 05:01+0000\n"
+"X-Generator: Launchpad (build 14458)\n"
"Language: hr\n"
#. module: project_timesheet
@@ -34,12 +34,12 @@ msgstr ""
#. module: project_timesheet
#: model:process.node,name:project_timesheet.process_node_timesheettask0
msgid "Timesheet task"
-msgstr ""
+msgstr "Zadatak ev. rada"
#. module: project_timesheet
#: model:ir.ui.menu,name:project_timesheet.menu_hr_timesheet_sign_in
msgid "Sign in / Sign out by project"
-msgstr ""
+msgstr "Prijava / Odjava po Projektu"
#. module: project_timesheet
#: field:project.task.work,hr_analytic_timesheet_id:0
@@ -49,17 +49,17 @@ msgstr "ID povezanog vremenskog tijeka"
#. module: project_timesheet
#: model:ir.model,name:project_timesheet.model_project_task_work
msgid "Project Task Work"
-msgstr ""
+msgstr "Project Task Work"
#. module: project_timesheet
#: model:ir.model,name:project_timesheet.model_report_timesheet_task_user
msgid "report.timesheet.task.user"
-msgstr ""
+msgstr "report.timesheet.task.user"
#. module: project_timesheet
#: view:report.timesheet.task.user:0
msgid "Group By..."
-msgstr ""
+msgstr "Grupiraj po..."
#. module: project_timesheet
#: constraint:res.partner:0
@@ -69,28 +69,28 @@ msgstr ""
#. module: project_timesheet
#: selection:report.timesheet.task.user,month:0
msgid "October"
-msgstr ""
+msgstr "Listopad"
#. module: project_timesheet
#: view:report.timesheet.task.user:0
#: field:report.timesheet.task.user,year:0
msgid "Year"
-msgstr ""
+msgstr "Godina"
#. module: project_timesheet
#: view:account.analytic.line:0
msgid "Analytic account/project"
-msgstr ""
+msgstr "Analitički konto/projekt"
#. module: project_timesheet
#: field:report.timesheet.task.user,task_hrs:0
msgid "Task Hours"
-msgstr ""
+msgstr "Sati zadatka"
#. module: project_timesheet
#: constraint:project.project:0
msgid "Error! project start-date must be lower then project end-date."
-msgstr ""
+msgstr "Error! project start-date must be lower then project end-date."
#. module: project_timesheet
#: view:report.timesheet.task.user:0
@@ -100,7 +100,7 @@ msgstr ""
#. module: project_timesheet
#: model:ir.model,name:project_timesheet.model_res_partner
msgid "Partner"
-msgstr ""
+msgstr "Partner"
#. module: project_timesheet
#: code:addons/project_timesheet/project_timesheet.py:220
@@ -111,32 +111,32 @@ msgstr ""
#. module: project_timesheet
#: selection:report.timesheet.task.user,month:0
msgid "March"
-msgstr ""
+msgstr "Ožujak"
#. module: project_timesheet
#: selection:report.timesheet.task.user,month:0
msgid "August"
-msgstr ""
+msgstr "Kolovoz"
#. module: project_timesheet
#: model:process.transition,name:project_timesheet.process_transition_taskinvoice0
msgid "Task invoice"
-msgstr ""
+msgstr "Račun zadatka"
#. module: project_timesheet
#: model:process.node,name:project_timesheet.process_node_taskwork0
msgid "Task Work"
-msgstr ""
+msgstr "Rad zadatka"
#. module: project_timesheet
#: selection:report.timesheet.task.user,month:0
msgid "May"
-msgstr ""
+msgstr "Svibanj"
#. module: project_timesheet
#: constraint:project.task:0
msgid "Error ! You cannot create recursive tasks."
-msgstr ""
+msgstr "Greška! Rekurzivni zadaci."
#. module: project_timesheet
#: code:addons/project_timesheet/project_timesheet.py:220
@@ -147,43 +147,43 @@ msgstr ""
#. module: project_timesheet
#: selection:report.timesheet.task.user,month:0
msgid "June"
-msgstr ""
+msgstr "Lipanj"
#. module: project_timesheet
#: model:ir.model,name:project_timesheet.model_project_task
msgid "Task"
-msgstr ""
+msgstr "Task"
#. module: project_timesheet
#: model:ir.ui.menu,name:project_timesheet.menu_project_billing_line
msgid "Invoice Tasks Work"
-msgstr ""
+msgstr "Fakturiraj radove"
#. module: project_timesheet
#: view:report.timesheet.task.user:0
#: field:report.timesheet.task.user,user_id:0
msgid "User"
-msgstr ""
+msgstr "Korisnik"
#. module: project_timesheet
#: constraint:project.project:0
msgid "Error! You cannot assign escalation to the same project!"
-msgstr ""
+msgstr "Pogreška! Ne možete dodijeliti eskalacije na isti projekt!"
#. module: project_timesheet
#: field:report.timesheet.task.user,name:0
msgid "Date"
-msgstr ""
+msgstr "Datum"
#. module: project_timesheet
#: selection:report.timesheet.task.user,month:0
msgid "July"
-msgstr ""
+msgstr "Srpanj"
#. module: project_timesheet
#: model:process.node,note:project_timesheet.process_node_timesheettask0
msgid "Complete Your Timesheet."
-msgstr ""
+msgstr "Dovršite evidenciju rada."
#. module: project_timesheet
#: view:project.project:0
@@ -193,7 +193,7 @@ msgstr ""
#. module: project_timesheet
#: view:project.project:0
msgid "Customer"
-msgstr ""
+msgstr "Kupac"
#. module: project_timesheet
#: model:ir.module.module,description:project_timesheet.module_meta_information
@@ -210,47 +210,47 @@ msgstr ""
#. module: project_timesheet
#: selection:report.timesheet.task.user,month:0
msgid "February"
-msgstr ""
+msgstr "Veljača"
#. module: project_timesheet
#: model:ir.actions.act_window,name:project_timesheet.action_project_timesheet_bill_task
msgid "Bill Tasks Works"
-msgstr ""
+msgstr "Fakturiranje zadataka"
#. module: project_timesheet
#: field:report.timesheet.task.user,timesheet_hrs:0
msgid "Timesheet Hours"
-msgstr ""
+msgstr "Sati evidencije rada"
#. module: project_timesheet
#: model:process.transition,name:project_timesheet.process_transition_taskencoding0
msgid "Task encoding"
-msgstr ""
+msgstr "Task encoding"
#. module: project_timesheet
#: model:process.transition,note:project_timesheet.process_transition_filltimesheet0
msgid "Task summary is comes into the timesheet line"
-msgstr ""
+msgstr "Task summary is comes into the timesheet line"
#. module: project_timesheet
#: selection:report.timesheet.task.user,month:0
msgid "January"
-msgstr ""
+msgstr "Siječanj"
#. module: project_timesheet
#: model:process.node,name:project_timesheet.process_node_triggerinvoice0
msgid "Trigger Invoice"
-msgstr ""
+msgstr "Fakturiraj"
#. module: project_timesheet
#: selection:report.timesheet.task.user,month:0
msgid "November"
-msgstr ""
+msgstr "Studeni"
#. module: project_timesheet
#: view:report.timesheet.task.user:0
msgid "Tasks by User"
-msgstr ""
+msgstr "Zadaci po korisniku"
#. module: project_timesheet
#: code:addons/project_timesheet/project_timesheet.py:48
@@ -263,22 +263,22 @@ msgstr ""
#. module: project_timesheet
#: model:ir.model,name:project_timesheet.model_project_project
msgid "Project"
-msgstr ""
+msgstr "Projekt"
#. module: project_timesheet
#: selection:report.timesheet.task.user,month:0
msgid "April"
-msgstr ""
+msgstr "Travanj"
#. module: project_timesheet
#: view:project.project:0
msgid "Invoicing Data"
-msgstr ""
+msgstr "Podaci računa"
#. module: project_timesheet
#: model:process.transition,note:project_timesheet.process_transition_taskencoding0
msgid "Encode how much time u spent on your task"
-msgstr ""
+msgstr "Encode how much time u spent on your task"
#. module: project_timesheet
#: view:report.timesheet.task.user:0
@@ -288,7 +288,7 @@ msgstr ""
#. module: project_timesheet
#: view:report.timesheet.task.user:0
msgid "Timesheet/Task hours Report Per Month"
-msgstr ""
+msgstr "Ev. rada/sati zadatka po mjesecima"
#. module: project_timesheet
#: code:addons/project_timesheet/project_timesheet.py:43
@@ -302,43 +302,43 @@ msgstr ""
#. module: project_timesheet
#: model:ir.ui.menu,name:project_timesheet.menu_project_billing
msgid "Invoicing"
-msgstr ""
+msgstr "Fakturiranje"
#. module: project_timesheet
#: model:process.node,note:project_timesheet.process_node_taskwork0
msgid "Work on task"
-msgstr ""
+msgstr "Work on task"
#. module: project_timesheet
#: view:report.timesheet.task.user:0
msgid " Month-1 "
-msgstr ""
+msgstr " Mjesec-1 "
#. module: project_timesheet
#: selection:report.timesheet.task.user,month:0
msgid "September"
-msgstr ""
+msgstr "Rujan"
#. module: project_timesheet
#: selection:report.timesheet.task.user,month:0
msgid "December"
-msgstr ""
+msgstr "Prosinac"
#. module: project_timesheet
#: model:process.transition,note:project_timesheet.process_transition_taskinvoice0
msgid "After task is completed, Create its invoice."
-msgstr ""
+msgstr "Nakon izvršenja zadatka kreiraj račun."
#. module: project_timesheet
#: model:process.node,note:project_timesheet.process_node_triggerinvoice0
msgid "Trigger invoices from sale order lines"
-msgstr ""
+msgstr "Automatsko kreiranje računa iz stavki prodajnog naloga"
#. module: project_timesheet
#: view:report.timesheet.task.user:0
#: field:report.timesheet.task.user,month:0
msgid "Month"
-msgstr ""
+msgstr "Mjesec"
#. module: project_timesheet
#: model:ir.module.module,shortdesc:project_timesheet.module_meta_information
@@ -348,7 +348,7 @@ msgstr "Vremenski plan projekta"
#. module: project_timesheet
#: view:project.project:0
msgid "Invoice Task Work"
-msgstr ""
+msgstr "Fakturiraj rad na zadatku"
#. module: project_timesheet
#: code:addons/project_timesheet/project_timesheet.py:59
@@ -364,12 +364,12 @@ msgstr ""
#: model:ir.ui.menu,name:project_timesheet.menu_timesheet_task_user
#: view:report.timesheet.task.user:0
msgid "Task Hours Per Month"
-msgstr ""
+msgstr "Sati zadatka po mjesecima"
#. module: project_timesheet
#: model:process.transition,name:project_timesheet.process_transition_filltimesheet0
msgid "Fill Timesheet"
-msgstr ""
+msgstr "Popuni ev. rada"
#. module: project_timesheet
#: model:ir.actions.act_window,help:project_timesheet.action_project_timesheet_bill_task
@@ -377,3 +377,6 @@ msgid ""
"This lists show you every task work you can invoice to the customer. Select "
"the lines in order to generate the invoices automatically."
msgstr ""
+
+#~ msgid "My Timesheet"
+#~ msgstr "Moje evidencija rada"
diff --git a/addons/project_timesheet/project_timesheet_view.xml b/addons/project_timesheet/project_timesheet_view.xml
index 8152862c448..07873c00592 100644
--- a/addons/project_timesheet/project_timesheet_view.xml
+++ b/addons/project_timesheet/project_timesheet_view.xml
@@ -107,9 +107,6 @@ the project form.
-->
-
-
-
Customer Projectsaccount.analytic.account
@@ -120,7 +117,7 @@ the project form.
You will find here the contracts related to your customer projects in order to track the invoicing progress.
-
diff --git a/addons/project_timesheet/security/ir.model.access.csv b/addons/project_timesheet/security/ir.model.access.csv
index 4888811df2f..85ccf63e19f 100644
--- a/addons/project_timesheet/security/ir.model.access.csv
+++ b/addons/project_timesheet/security/ir.model.access.csv
@@ -1,4 +1,4 @@
-"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
-"access_report_timesheet_task_user_manager","report.timesheet.task.user.manager","model_report_timesheet_task_user","project.group_project_manager",1,1,1,1
-"access_hr_analytic_timesheet_user","hr.analytic.timesheet.user","hr_timesheet_sheet.model_hr_analytic_timesheet","project.group_project_user",1,1,1,0
-"access_hr_timesheet_sheet_sheet_user","hr.timesheet.sheet.sheet.user","hr_timesheet_sheet.model_hr_timesheet_sheet_sheet","project.group_project_user",1,1,1,0
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+access_report_timesheet_task_user_manager,report.timesheet.task.user.manager,model_report_timesheet_task_user,project.group_project_manager,1,1,1,1
+access_hr_analytic_timesheet_user,hr.analytic.timesheet.user,hr_timesheet_sheet.model_hr_analytic_timesheet,project.group_project_user,1,1,1,0
+access_hr_timesheet_sheet_sheet_user,hr.timesheet.sheet.sheet.user,hr_timesheet_sheet.model_hr_timesheet_sheet_sheet,project.group_project_user,1,1,1,0
diff --git a/addons/project_timesheet/test/work_timesheet.yml b/addons/project_timesheet/test/work_timesheet.yml
new file mode 100644
index 00000000000..d9c1212c022
--- /dev/null
+++ b/addons/project_timesheet/test/work_timesheet.yml
@@ -0,0 +1,21 @@
+-
+ I set task work entry for Employee
+-
+ !record {model: project.task.work, id: project_task_work1}:
+ date: !eval time.strftime('%Y-%m-%d %H:%M:%S')
+ name: Test Timesheet records
+ task_id: project.project_task_1
+ hours: 20.0
+ user_id: project.res_users_analyst
+ company_id: base.main_company
+-
+ I check Timesheet line for employee in current Timesheet
+-
+ !python {model: hr.analytic.timesheet}: |
+ import datetime
+ start = (datetime.date.today().strftime('%Y-%m-%d'))
+ task_work = self.search(cr, uid, [("name","=","Prepare Requirements Document: Test Timesheet records")],context)[0]
+ task_ids = self.browse(cr, uid, task_work, context)
+ assert task_ids.user_id.id == ref("project.res_users_analyst"), 'Error, The User in Timesheet is not Correct'
+ assert task_ids.date == start, 'Error, The Date in Timesheet is not ok'
+ assert task_ids.product_uom_id.name == "Hour", 'Error, The Hour in Timesheet is not ok'
diff --git a/addons/project_timesheet/test/worktask_entry_to_timesheetline_entry.yml b/addons/project_timesheet/test/worktask_entry_to_timesheetline_entry.yml
index f524c214821..a6ccc63749a 100644
--- a/addons/project_timesheet/test/worktask_entry_to_timesheetline_entry.yml
+++ b/addons/project_timesheet/test/worktask_entry_to_timesheetline_entry.yml
@@ -9,7 +9,6 @@
password: hr
groups_id:
- base.group_hr_manager
-
-
Create a product with type service used to specify employees designation
-
@@ -28,7 +27,6 @@
warranty: 0.0
weight: 0.0
weight_net: 0.0
-
-
Create an analytic journal for employees timesheet
-
@@ -36,7 +34,6 @@
company_id: base.main_company
name: HR Timesheet
type: general
-
-
Create an employee 'HR Manager' for user 'HR Manager'
-
@@ -45,7 +42,6 @@
user_id: res_users_hrmanager0
product_id: product_product_hrmanger0
journal_id: account_analytic_journal_hrtimesheet0
-
-
Create a timesheet sheet for HR manager
-
@@ -57,15 +53,12 @@
state: new
user_id: res_users_hrmanager0
employee_id : 'hr_employee_hrmanager0'
-
-
Create a project 'Timesheet Management'
-
!record {model: project.project, id: project_project_timesheetmanagement0}:
company_id: base.main_company
name: Timesheet Management
-
-
-
Create a task 'Get all timesheet records'
-
@@ -77,7 +70,6 @@
remaining_hours: 20.0
state: draft
user_id: res_users_hrmanager0
-
-
Open the task
-
@@ -86,7 +78,6 @@
"en_US", "active_ids": [ref("project_project_timesheetmanagement0")], "tz":
False, "active_model": "project.project", "department_id": False, "project_id":
False, "active_id": ref("project_project_timesheetmanagement0"), })
-
-
Make a work task entry 'Get work calendar of all employees' of 10 hours done by HR manager
-
@@ -96,9 +87,8 @@
hours: 10.0
name: Get work calendar of all employees
user_id: res_users_hrmanager0
-
-
Check for timesheet_ids in HR manager's timesheet
-
!assert {model: hr_timesheet_sheet.sheet, id: hr_timesheet_sheet_sheet_sheetforhrmanager0, string: After hr manager's work task, length of timesheet line of current timesheet must be greater then 1}:
- - len(timesheet_ids) > 0
+ - len(timesheet_ids) > 0
diff --git a/addons/purchase/__openerp__.py b/addons/purchase/__openerp__.py
index 1a774ceb0ee..373c7b51fc2 100644
--- a/addons/purchase/__openerp__.py
+++ b/addons/purchase/__openerp__.py
@@ -67,6 +67,7 @@ Dashboard for purchase management that includes:
'test/process/run_scheduler.yml',
'test/process/merge_order.yml',
'test/process/edi_purchase_order.yml',
+ 'test/process/invoice_on_poline.yml',
'test/ui/print_report.yml',
'test/ui/duplicate_order.yml',
'test/ui/delete_order.yml',
@@ -78,6 +79,6 @@ Dashboard for purchase management that includes:
'installable': True,
'active': False,
'certificate': '0057234283549',
- 'core': True,
+ 'application': True,
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/purchase/board_purchase_view.xml b/addons/purchase/board_purchase_view.xml
index 04a9b47abe3..0bb34e3713b 100644
--- a/addons/purchase/board_purchase_view.xml
+++ b/addons/purchase/board_purchase_view.xml
@@ -13,7 +13,8 @@
purchase.orderformtree,form
- [('date_order','>',time.strftime('%Y-01-01 00:00:00')),('date_order','<',time.strftime('%Y-12-31 23:59:59')), ('state','=','draft')]
+ [('state','=','draft')]
+ {'quotation_only': True}Purchase Order Waiting Approval
@@ -24,7 +25,7 @@
[('date_order','>',time.strftime('%Y-01-01 00:00:00')),('date_order','<',time.strftime('%Y-12-31 23:59:59')), ('state','in',('wait','confirmed'))]
-
+ purchase.order.monthly.categ.treepurchase.reporttree
@@ -47,7 +48,7 @@
-
+ purchase.order.monthly.categ.graphpurchase.reportgraph
@@ -59,92 +60,41 @@
-
- Monthly Purchase by Category
- purchase.report
- form
- graph,tree
- {'group_by':['month','category_id'],'group_by_no_leaf':1}
-
-
-
+
+ Monthly Purchase by Category
+ purchase.report
+ form
+ graph,tree
+ {'group_by':['month','category_id'],'group_by_no_leaf':1}
+ [('state','in',('approved','except_picking','except_invoice','done'))]
+
+
+ tree
-
-
-
- graph
-
-
-
+
+
+
+ graph
+
+
+
-
- negotiation.by.supplier.tree
- purchase.report
- tree
-
-
-
-
-
-
-
-
- negotiation.by.supplier.graph
- purchase.report
- graph
-
-
-
-
-
-
-
-
- Negotiation by Supplier
- purchase.report
- form
- graph,tree
- {'group_by':['partner_id'],'group_by_no_leaf':1}
-
-
-
-
- tree
-
-
-
-
-
- graph
-
-
- board.purchase.formboard.boardform
-
-
+
+
-
-
+
-
-
-
+
diff --git a/addons/purchase/i18n/hr.po b/addons/purchase/i18n/hr.po
index b1d2cf956ae..601e427eda4 100644
--- a/addons/purchase/i18n/hr.po
+++ b/addons/purchase/i18n/hr.po
@@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
-"PO-Revision-Date: 2009-02-03 06:24+0000\n"
-"Last-Translator: <>\n"
+"PO-Revision-Date: 2011-12-12 11:24+0000\n"
+"Last-Translator: Tomislav Bosnjakovic \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-05 04:56+0000\n"
-"X-Generator: Launchpad (build 14231)\n"
+"X-Launchpad-Export-Date: 2011-12-13 05:01+0000\n"
+"X-Generator: Launchpad (build 14458)\n"
#. module: purchase
#: model:process.transition,note:purchase.process_transition_confirmingpurchaseorder0
@@ -22,6 +22,8 @@ msgid ""
"The buyer has to approve the RFQ before being sent to the supplier. The RFQ "
"becomes a confirmed Purchase Order."
msgstr ""
+"The buyer has to approve the RFQ before being sent to the supplier. The RFQ "
+"becomes a confirmed Purchase Order."
#. module: purchase
#: code:addons/purchase/purchase.py:292
@@ -53,7 +55,7 @@ msgstr ""
#. module: purchase
#: help:purchase.report,date:0
msgid "Date on which this document has been created"
-msgstr "Datum izrade dokumenta"
+msgstr "Datum kreiranja ovog dokumenta"
#. module: purchase
#: model:ir.actions.act_window,help:purchase.purchase_rfq
@@ -67,6 +69,12 @@ msgid ""
"supplier invoices: based on the order, based on the receptions or manual "
"encoding."
msgstr ""
+"Zahtjev za ponudom možete kreirati i prije nego što je nalog za nabavu "
+"potvrđen.\n"
+"Ovdje će se naći i zahtjevi za ponudom koje program automatski kreira "
+"temeljem postavke logističkih pravila (minimalne količine, JIT, ...). "
+"Zahtjev za ponudom možete pretvoriti u Nalog za nabavu. Postave na nalogu za "
+"nabavu kontroliraju kreiranje ulaznog računa temeljem naloga ili primki."
#. module: purchase
#: selection:purchase.order,invoice_method:0
@@ -81,13 +89,13 @@ msgstr "Nefakturirano"
#. module: purchase
#: field:purchase.order,dest_address_id:0
msgid "Destination Address"
-msgstr "Adresa odredišta"
+msgstr "Adresa isporuke"
#. module: purchase
#: report:purchase.order:0
#: field:purchase.report,validator:0
msgid "Validated By"
-msgstr ""
+msgstr "Potvrđeno od strane"
#. module: purchase
#: view:purchase.order:0
@@ -96,12 +104,12 @@ msgstr ""
#: view:purchase.report:0
#: field:purchase.report,partner_id:0
msgid "Supplier"
-msgstr ""
+msgstr "Dobavljač"
#. module: purchase
#: view:purchase.order.line_invoice:0
msgid "Do you want to generate the supplier invoices ?"
-msgstr ""
+msgstr "Želite li kreirati ulazni račun?"
#. module: purchase
#: model:ir.actions.act_window,help:purchase.purchase_form_action
@@ -110,6 +118,9 @@ msgid ""
"products, etc. For each purchase order, you can track the products received, "
"and control the supplier invoices."
msgstr ""
+"Nalozi za nabavu po brojevima, dobavljačima, proizvodima, .... \n"
+"Za svaki nalog nabave možete pratiti primljene proizvode i kontrolirati "
+"izradu ulaznih računa."
#. module: purchase
#: code:addons/purchase/purchase.py:735
@@ -132,7 +143,7 @@ msgstr ""
#: model:process.transition,name:purchase.process_transition_packinginvoice0
#: model:process.transition,name:purchase.process_transition_productrecept0
msgid "From a Pick list"
-msgstr ""
+msgstr "Sa popisa odabira"
#. module: purchase
#: code:addons/purchase/purchase.py:660
@@ -145,12 +156,12 @@ msgstr ""
#: view:purchase.report:0
#: field:purchase.report,quantity:0
msgid "Quantity"
-msgstr ""
+msgstr "Količina"
#. module: purchase
#: view:purchase.order.line_invoice:0
msgid "Select an Open Sale Order"
-msgstr ""
+msgstr "Odaberite otvoreni prodajni nalog"
#. module: purchase
#: field:purchase.order,company_id:0
@@ -158,35 +169,35 @@ msgstr ""
#: view:purchase.report:0
#: field:purchase.report,company_id:0
msgid "Company"
-msgstr "Tvrtka"
+msgstr "Organizacija"
#. module: purchase
#: view:board.board:0
#: model:ir.actions.act_window,name:purchase.action_purchase_order_monthly_categ_graph
#: view:purchase.report:0
msgid "Monthly Purchase by Category"
-msgstr ""
+msgstr "Mjesečne nabave po grupama"
#. module: purchase
#: view:purchase.order:0
msgid "Set to Draft"
-msgstr "Postavi kao nacrt"
+msgstr "Postavi na nacrt"
#. module: purchase
#: selection:purchase.order,state:0
#: selection:purchase.report,state:0
msgid "Invoice Exception"
-msgstr ""
+msgstr "Iznimka računa"
#. module: purchase
#: model:product.pricelist,name:purchase.list0
msgid "Default Purchase Pricelist"
-msgstr ""
+msgstr "Uobičajeni cjenik nabave"
#. module: purchase
#: model:ir.actions.act_window,name:purchase.action_current_purchases
msgid "Current purchases"
-msgstr ""
+msgstr "Aktualne nabave"
#. module: purchase
#: help:purchase.order,dest_address_id:0
@@ -195,6 +206,9 @@ msgid ""
"customer.In this case, it will remove the warehouse link and set the "
"customer location."
msgstr ""
+"Put an address if you want to deliver directly from the supplier to the "
+"customer.In this case, it will remove the warehouse link and set the "
+"customer location."
#. module: purchase
#: help:res.partner,property_product_pricelist_purchase:0
@@ -202,11 +216,13 @@ msgid ""
"This pricelist will be used, instead of the default one, for purchases from "
"the current partner"
msgstr ""
+"Za ovog partnera ovdje možete navesti specifičan cjenik za nabavu ako se ne "
+"primjenjuje uobičajeni cjenik."
#. module: purchase
#: report:purchase.order:0
msgid "Fax :"
-msgstr ""
+msgstr "Fax :"
#. module: purchase
#: help:purchase.order,pricelist_id:0
@@ -214,6 +230,8 @@ msgid ""
"The pricelist sets the currency used for this purchase order. It also "
"computes the supplier price for the selected products/quantities."
msgstr ""
+"Cjenik određuje valutu za ovu narudžbu. Ujedno računa i cijenu dobavljača za "
+"odabrane proizvode/količine."
#. module: purchase
#: model:ir.model,name:purchase.model_stock_partial_picking
@@ -229,7 +247,7 @@ msgstr ""
#. module: purchase
#: view:purchase.order:0
msgid "Approve Purchase"
-msgstr ""
+msgstr "Odobri nabavu"
#. module: purchase
#: model:process.node,name:purchase.process_node_approvepurchaseorder0
@@ -237,27 +255,27 @@ msgstr ""
#: selection:purchase.order,state:0
#: selection:purchase.report,state:0
msgid "Approved"
-msgstr ""
+msgstr "Odobreno"
#. module: purchase
#: view:purchase.report:0
msgid "Reference UOM"
-msgstr ""
+msgstr "Referentna JM"
#. module: purchase
#: view:purchase.order:0
msgid "Origin"
-msgstr ""
+msgstr "Izvor"
#. module: purchase
#: field:purchase.report,product_uom:0
msgid "Reference UoM"
-msgstr ""
+msgstr "Referentna JM"
#. module: purchase
#: model:ir.actions.act_window,name:purchase.action_purchase_line_product_tree
msgid "Purchases"
-msgstr ""
+msgstr "Nabava"
#. module: purchase
#: view:purchase.order:0
@@ -265,7 +283,7 @@ msgstr ""
#: view:purchase.order.line:0
#: field:purchase.order.line,notes:0
msgid "Notes"
-msgstr ""
+msgstr "Bilješke"
#. module: purchase
#: code:addons/purchase/purchase.py:660
@@ -278,7 +296,7 @@ msgstr ""
#. module: purchase
#: selection:purchase.report,month:0
msgid "September"
-msgstr ""
+msgstr "Rujan"
#. module: purchase
#: report:purchase.order:0
@@ -286,7 +304,7 @@ msgstr ""
#: view:purchase.order.line:0
#: field:purchase.order.line,taxes_id:0
msgid "Taxes"
-msgstr ""
+msgstr "Porezi"
#. module: purchase
#: model:ir.actions.report.xml,name:purchase.report_purchase_order
@@ -297,19 +315,19 @@ msgstr ""
#: model:res.request.link,name:purchase.req_link_purchase_order
#: field:stock.picking,purchase_id:0
msgid "Purchase Order"
-msgstr ""
+msgstr "Nalog za nabavu"
#. module: purchase
#: field:purchase.order,name:0
#: view:purchase.order.line:0
#: field:purchase.order.line,order_id:0
msgid "Order Reference"
-msgstr ""
+msgstr "Broj naloga"
#. module: purchase
#: report:purchase.order:0
msgid "Net Total :"
-msgstr ""
+msgstr "Net Total :"
#. module: purchase
#: view:purchase.installer:0
@@ -320,7 +338,7 @@ msgstr ""
#: model:ir.ui.menu,name:purchase.menu_procurement_management_product
#: model:ir.ui.menu,name:purchase.menu_procurement_partner_contact_form
msgid "Products"
-msgstr ""
+msgstr "Proizvodi"
#. module: purchase
#: field:purchase.installer,progress:0
@@ -333,13 +351,15 @@ msgid ""
"A Pick list generates an invoice. Depending on the Invoicing control of the "
"sale order, the invoice is based on delivered or on ordered quantities."
msgstr ""
+"Primka generira ulazni račun. Ovisno o kontroli računa na Nalogu nabave, "
+"račun se kreira na temelju primljenih ili naručenih količina."
#. module: purchase
#: selection:purchase.order,state:0
#: selection:purchase.order.line,state:0
#: selection:purchase.report,state:0
msgid "Cancelled"
-msgstr ""
+msgstr "Otkazani"
#. module: purchase
#: code:addons/purchase/purchase.py:315
@@ -350,40 +370,40 @@ msgstr ""
#. module: purchase
#: view:purchase.order:0
msgid "Convert to Purchase Order"
-msgstr ""
+msgstr "U nalog za nabavu"
#. module: purchase
#: field:purchase.order,pricelist_id:0
#: field:purchase.report,pricelist_id:0
msgid "Pricelist"
-msgstr ""
+msgstr "Pricelist"
#. module: purchase
#: selection:purchase.order,state:0
#: selection:purchase.report,state:0
msgid "Shipping Exception"
-msgstr ""
+msgstr "Shipping Exception"
#. module: purchase
#: field:purchase.order.line,invoice_lines:0
msgid "Invoice Lines"
-msgstr ""
+msgstr "Stavke računa"
#. module: purchase
#: model:process.node,name:purchase.process_node_packinglist0
#: model:process.node,name:purchase.process_node_productrecept0
msgid "Incoming Products"
-msgstr ""
+msgstr "Ulaz proizvoda"
#. module: purchase
#: model:process.node,name:purchase.process_node_packinginvoice0
msgid "Outgoing Products"
-msgstr ""
+msgstr "Proizvodi za isporuku"
#. module: purchase
#: view:purchase.order:0
msgid "Manually Corrected"
-msgstr ""
+msgstr "Ručno ispravljeno"
#. module: purchase
#: view:purchase.report:0
@@ -393,7 +413,7 @@ msgstr ""
#. module: purchase
#: view:purchase.order:0
msgid "Reference"
-msgstr ""
+msgstr "Vezna oznaka"
#. module: purchase
#: code:addons/purchase/purchase.py:244
@@ -404,18 +424,18 @@ msgstr ""
#. module: purchase
#: field:purchase.report,dest_address_id:0
msgid "Dest. Address Contact Name"
-msgstr ""
+msgstr "Ime kontakta na odredištu"
#. module: purchase
#: model:ir.model,name:purchase.model_stock_move
msgid "Stock Move"
-msgstr ""
+msgstr "Skladišni prijenosi"
#. module: purchase
#: view:purchase.report:0
#: field:purchase.report,day:0
msgid "Day"
-msgstr ""
+msgstr "Dan"
#. module: purchase
#: code:addons/purchase/purchase.py:344
@@ -426,13 +446,13 @@ msgstr ""
#. module: purchase
#: field:purchase.order.line,account_analytic_id:0
msgid "Analytic Account"
-msgstr ""
+msgstr "Konto analitike"
#. module: purchase
#: view:purchase.report:0
#: field:purchase.report,nbr:0
msgid "# of Lines"
-msgstr ""
+msgstr "# linija"
#. module: purchase
#: code:addons/purchase/purchase.py:696
@@ -455,22 +475,22 @@ msgstr ""
#. module: purchase
#: selection:purchase.order.line,state:0
msgid "Draft"
-msgstr ""
+msgstr "Nacrt"
#. module: purchase
#: report:purchase.order:0
msgid "Net Price"
-msgstr ""
+msgstr "Net Cijena"
#. module: purchase
#: view:purchase.order.line:0
msgid "Order Line"
-msgstr ""
+msgstr "Stavka naloga"
#. module: purchase
#: help:purchase.order,shipped:0
msgid "It indicates that a picking has been done"
-msgstr ""
+msgstr "Označava da je izvršen prijem proizvoda"
#. module: purchase
#: code:addons/purchase/purchase.py:721
@@ -482,18 +502,18 @@ msgstr ""
#: model:process.node,name:purchase.process_node_confirmpurchaseorder0
#: selection:purchase.order.line,state:0
msgid "Confirmed"
-msgstr ""
+msgstr "Potvrđeno"
#. module: purchase
#: view:purchase.report:0
#: field:purchase.report,price_average:0
msgid "Average Price"
-msgstr ""
+msgstr "Prosječna cijena"
#. module: purchase
#: report:purchase.order:0
msgid "Total :"
-msgstr ""
+msgstr "Ukupno :"
#. module: purchase
#: model:process.transition.action,name:purchase.process_transition_action_confirmpurchaseorder0
@@ -505,22 +525,22 @@ msgstr "Potvrdi"
#: model:ir.ui.menu,name:purchase.menu_procurement_management_invoice
#: view:purchase.order:0
msgid "Invoice Control"
-msgstr ""
+msgstr "Kontrola računa"
#. module: purchase
#: constraint:res.company:0
msgid "Error! You can not create recursive companies."
-msgstr ""
+msgstr "Pogreška! Ne možete kreirati rekurzivne organizacije."
#. module: purchase
#: field:purchase.order,partner_ref:0
msgid "Supplier Reference"
-msgstr ""
+msgstr "Oznaka dobavljača"
#. module: purchase
#: help:purchase.order,amount_tax:0
msgid "The tax amount"
-msgstr ""
+msgstr "Iznos poreza"
#. module: purchase
#: model:process.transition,note:purchase.process_transition_productrecept0
@@ -529,6 +549,8 @@ msgid ""
"of the purchase order, the invoice is based on received or on ordered "
"quantities."
msgstr ""
+"Primka može kreirati ulazni račun. Ovisno o kontroli računa na Nalogu "
+"nabave, račun se izrađuje na temelju primljenih ili naručenih količina."
#. module: purchase
#: view:purchase.order:0
@@ -537,7 +559,7 @@ msgstr ""
#: field:purchase.order.line,state:0
#: view:purchase.report:0
msgid "State"
-msgstr ""
+msgstr "Stanje"
#. module: purchase
#: model:ir.actions.act_window,help:purchase.action_stock_move_report_po
@@ -545,32 +567,34 @@ msgid ""
"Reception Analysis allows you to easily check and analyse your company order "
"receptions and the performance of your supplier's deliveries."
msgstr ""
+"Reception Analysis allows you to easily check and analyse your company order "
+"receptions and the performance of your supplier's deliveries."
#. module: purchase
#: report:purchase.quotation:0
msgid "Tel.:"
-msgstr ""
+msgstr "Tel.:"
#. module: purchase
#: model:ir.model,name:purchase.model_stock_picking
#: field:purchase.order,picking_ids:0
msgid "Picking List"
-msgstr ""
+msgstr "Skladišni dokument"
#. module: purchase
#: view:purchase.order:0
msgid "Print"
-msgstr ""
+msgstr "Ispis"
#. module: purchase
#: model:ir.actions.act_window,name:purchase.action_view_purchase_order_group
msgid "Merge Purchase orders"
-msgstr ""
+msgstr "Spoji naloge za nabavu"
#. module: purchase
#: field:purchase.order,order_line:0
msgid "Order Lines"
-msgstr ""
+msgstr "Order Lines"
#. module: purchase
#: code:addons/purchase/purchase.py:662
@@ -581,29 +605,29 @@ msgstr ""
#. module: purchase
#: report:purchase.quotation:0
msgid "Fax:"
-msgstr ""
+msgstr "Fax:"
#. module: purchase
#: view:purchase.report:0
#: field:purchase.report,price_total:0
msgid "Total Price"
-msgstr ""
+msgstr "Total Price"
#. module: purchase
#: view:purchase.order:0
msgid "Untaxed amount"
-msgstr ""
+msgstr "Iznos bez poreza"
#. module: purchase
#: model:ir.ui.menu,name:purchase.menu_product_pricelist_action2_purchase
#: model:ir.ui.menu,name:purchase.menu_purchase_config_pricelist
msgid "Pricelists"
-msgstr ""
+msgstr "Cjenici"
#. module: purchase
#: field:purchase.report,partner_address_id:0
msgid "Address Contact Name"
-msgstr ""
+msgstr "Address Contact Name"
#. module: purchase
#: help:purchase.order,invoice_method:0
@@ -619,7 +643,7 @@ msgstr ""
#. module: purchase
#: help:purchase.order,invoice_ids:0
msgid "Invoices generated for a purchase order"
-msgstr ""
+msgstr "Kreirani računi za nalog nabave"
#. module: purchase
#: code:addons/purchase/purchase.py:292
@@ -633,17 +657,17 @@ msgstr ""
#. module: purchase
#: view:purchase.order.line:0
msgid "General Information"
-msgstr ""
+msgstr "Opći podaci"
#. module: purchase
#: view:board.board:0
msgid "My Board"
-msgstr ""
+msgstr "Moja ploča"
#. module: purchase
#: report:purchase.order:0
msgid "Purchase Order Confirmation N°"
-msgstr ""
+msgstr "Potvrda naloga za nabavu br."
#. module: purchase
#: model:ir.actions.act_window,help:purchase.action_purchase_order_report_all
@@ -652,6 +676,9 @@ msgid ""
"purchase history and performance. From this menu you can track your "
"negotiation performance, the delivery performance of your suppliers, etc."
msgstr ""
+"Purchase Analysis allows you to easily check and analyse your company "
+"purchase history and performance. From this menu you can track your "
+"negotiation performance, the delivery performance of your suppliers, etc."
#. module: purchase
#: view:purchase.order:0
@@ -665,6 +692,9 @@ msgid ""
"order is 'On picking'. The invoice can also be generated manually by the "
"accountant (Invoice control = Manual)."
msgstr ""
+"Prema polju \"Kontrola računa\" račun će se generirati automatski ako je "
+"\"Kontrola računa\" postavljena na \"Iz primki\" .Račun se može i ručno "
+"upisati ako je \"Kontrola računa\" postavljena na \"Ručno\"."
#. module: purchase
#: selection:purchase.order,invoice_method:0
@@ -674,12 +704,12 @@ msgstr ""
#. module: purchase
#: model:process.transition.action,name:purchase.process_transition_action_invoicefrompurchaseorder0
msgid "Create invoice"
-msgstr ""
+msgstr "Kreiraj račun"
#. module: purchase
#: field:purchase.order.line,move_dest_id:0
msgid "Reservation Destination"
-msgstr ""
+msgstr "Reservation Destination"
#. module: purchase
#: code:addons/purchase/purchase.py:244
@@ -692,40 +722,40 @@ msgstr ""
#: selection:purchase.order.line,state:0
#: selection:purchase.report,state:0
msgid "Done"
-msgstr ""
+msgstr "Izvršeno"
#. module: purchase
#: selection:purchase.report,month:0
msgid "July"
-msgstr ""
+msgstr "Srpanj"
#. module: purchase
#: model:ir.ui.menu,name:purchase.menu_purchase_config_purchase
#: view:res.company:0
msgid "Configuration"
-msgstr ""
+msgstr "Postava"
#. module: purchase
#: model:ir.actions.act_window,name:purchase.action_purchase_by_supplier
#: view:purchase.report:0
msgid "Purchase by supplier"
-msgstr ""
+msgstr "Nabave po dobavljaču"
#. module: purchase
#: view:purchase.order:0
msgid "Total amount"
-msgstr ""
+msgstr "Ukupni iznos"
#. module: purchase
#: model:ir.actions.act_window,name:purchase.act_purchase_order_2_stock_picking
msgid "Receptions"
-msgstr ""
+msgstr "Primke"
#. module: purchase
#: field:purchase.order,validator:0
#: view:purchase.report:0
msgid "Validated by"
-msgstr ""
+msgstr "Potvrdio"
#. module: purchase
#: model:ir.actions.act_window,help:purchase.action_invoice_pending
@@ -735,12 +765,16 @@ msgid ""
"according to your settings. Once you receive a supplier invoice, you can "
"match it with the draft invoice and validate it."
msgstr ""
+"Ovdje kontrolirate ulazne račune koje očekujete od dobavljača. OpenERP "
+"automatski kreira nacrte ulaznih računa iz naloga za nabavu i/ili primki. "
+"Kada primite originalni ulazni račun od dobavljača usporedite ga s nacrtom i "
+"potvrdite ga."
#. module: purchase
#: model:process.node,name:purchase.process_node_draftpurchaseorder0
#: model:process.node,name:purchase.process_node_draftpurchaseorder1
msgid "RFQ"
-msgstr ""
+msgstr "ZZP (RFQ)"
#. module: purchase
#: model:ir.ui.menu,name:purchase.menu_procurement_management_pending_invoice
@@ -781,22 +815,22 @@ msgstr ""
#: field:purchase.order.line,date_order:0
#: field:purchase.report,date:0
msgid "Order Date"
-msgstr ""
+msgstr "Datum naloga"
#. module: purchase
#: model:process.node,note:purchase.process_node_productrecept0
msgid "Incoming products to control"
-msgstr ""
+msgstr "Proizvodi koji dolaze na ulaznu kontrolu"
#. module: purchase
#: model:process.transition,name:purchase.process_transition_approvingpurchaseorder0
msgid "Approbation"
-msgstr ""
+msgstr "Approbation"
#. module: purchase
#: view:purchase.report:0
msgid "Purchase Orders Statistics"
-msgstr ""
+msgstr "Statistika naloga za nabavu"
#. module: purchase
#: model:ir.actions.act_window,help:purchase.purchase_line_form_action2
@@ -811,7 +845,7 @@ msgstr ""
#: model:process.node,name:purchase.process_node_invoiceafterpacking0
#: model:process.node,name:purchase.process_node_invoicecontrol0
msgid "Draft Invoice"
-msgstr ""
+msgstr "Nacrt računa"
#. module: purchase
#: help:purchase.installer,purchase_analytic_plans:0
@@ -824,11 +858,13 @@ msgid ""
"This is computed as the minimum scheduled date of all purchase order lines' "
"products."
msgstr ""
+"This is computed as the minimum scheduled date of all purchase order lines' "
+"products."
#. module: purchase
#: selection:purchase.report,month:0
msgid "August"
-msgstr ""
+msgstr "Kolovoz"
#. module: purchase
#: field:purchase.installer,purchase_requisition:0
@@ -838,101 +874,101 @@ msgstr ""
#. module: purchase
#: model:ir.ui.menu,name:purchase.menu_purchase_uom_categ_form_action
msgid "Units of Measure Categories"
-msgstr ""
+msgstr "Kategorije jedinica mjere"
#. module: purchase
#: view:purchase.report:0
#: field:purchase.report,delay_pass:0
msgid "Days to Deliver"
-msgstr ""
+msgstr "Dana za isporuku"
#. module: purchase
#: model:ir.ui.menu,name:purchase.menu_action_picking_tree_in_move
#: model:ir.ui.menu,name:purchase.menu_procurement_management_inventory
msgid "Receive Products"
-msgstr ""
+msgstr "Prihvat proizvoda"
#. module: purchase
#: model:ir.model,name:purchase.model_procurement_order
msgid "Procurement"
-msgstr ""
+msgstr "Procurement"
#. module: purchase
#: view:purchase.order:0
#: field:purchase.order,invoice_ids:0
msgid "Invoices"
-msgstr ""
+msgstr "Računi"
#. module: purchase
#: model:process.node,note:purchase.process_node_purchaseorder0
msgid "Confirmed purchase order to invoice"
-msgstr ""
+msgstr "Potvrđeni nalozi nabave u račun"
#. module: purchase
#: field:purchase.installer,config_logo:0
msgid "Image"
-msgstr ""
+msgstr "Slika"
#. module: purchase
#: view:purchase.report:0
msgid "Total Orders Lines by User per month"
-msgstr ""
+msgstr "Ukupan broj redaka naloga korisnika po mjesecu."
#. module: purchase
#: view:purchase.report:0
#: field:purchase.report,month:0
msgid "Month"
-msgstr ""
+msgstr "Mjesec"
#. module: purchase
#: selection:purchase.report,state:0
msgid "Waiting Supplier Ack"
-msgstr ""
+msgstr "Waiting Supplier Ack"
#. module: purchase
#: report:purchase.quotation:0
msgid "Request for Quotation :"
-msgstr ""
+msgstr "Zahtjev za ponudom"
#. module: purchase
#: view:board.board:0
#: model:ir.actions.act_window,name:purchase.purchase_waiting
msgid "Purchase Order Waiting Approval"
-msgstr ""
+msgstr "Nalozi za nabavu koje čekaju potvrdu"
#. module: purchase
#: view:purchase.order:0
msgid "Total Untaxed amount"
-msgstr ""
+msgstr "Uk. osnovica"
#. module: purchase
#: field:purchase.order,shipped:0
#: field:purchase.order,shipped_rate:0
msgid "Received"
-msgstr ""
+msgstr "Received"
#. module: purchase
#: model:process.node,note:purchase.process_node_packinglist0
msgid "List of ordered products."
-msgstr ""
+msgstr "List of ordered products."
#. module: purchase
#: help:purchase.order,picking_ids:0
msgid ""
"This is the list of picking list that have been generated for this purchase"
-msgstr ""
+msgstr "Ovo je popis primki nastalih ovom nabavom"
#. module: purchase
#: model:ir.module.module,shortdesc:purchase.module_meta_information
#: model:ir.ui.menu,name:purchase.menu_procurement_management
msgid "Purchase Management"
-msgstr ""
+msgstr "Upravljanje nabavom"
#. module: purchase
#: model:process.node,note:purchase.process_node_invoiceafterpacking0
#: model:process.node,note:purchase.process_node_invoicecontrol0
msgid "To be reviewed by the accountant."
-msgstr ""
+msgstr "Potrebna revizija knjigovođe."
#. module: purchase
#: model:ir.actions.act_window,name:purchase.purchase_line_form_action2
@@ -949,25 +985,25 @@ msgstr ""
#. module: purchase
#: report:purchase.order:0
msgid "Taxes :"
-msgstr ""
+msgstr "Taxes :"
#. module: purchase
#: field:purchase.order,invoiced_rate:0
#: field:purchase.order.line,invoiced:0
msgid "Invoiced"
-msgstr ""
+msgstr "Fakturirano"
#. module: purchase
#: view:purchase.report:0
#: field:purchase.report,category_id:0
msgid "Category"
-msgstr ""
+msgstr "Grupa"
#. module: purchase
#: model:process.node,note:purchase.process_node_approvepurchaseorder0
#: model:process.node,note:purchase.process_node_confirmpurchaseorder0
msgid "State of the Purchase Order."
-msgstr ""
+msgstr "Stanje naloga za nabavu"
#. module: purchase
#: view:purchase.report:0
@@ -977,19 +1013,19 @@ msgstr ""
#. module: purchase
#: field:purchase.report,state:0
msgid "Order State"
-msgstr ""
+msgstr "Stanje naloga"
#. module: purchase
#: model:ir.actions.act_window,name:purchase.action_view_purchase_line_invoice
msgid "Create invoices"
-msgstr ""
+msgstr "Kreiraj račune"
#. module: purchase
#: model:ir.model,name:purchase.model_purchase_order_line
#: view:purchase.order.line:0
#: field:stock.move,purchase_line_id:0
msgid "Purchase Order Line"
-msgstr ""
+msgstr "Stavka naloga nabave"
#. module: purchase
#: constraint:res.partner:0
@@ -999,28 +1035,28 @@ msgstr ""
#. module: purchase
#: view:purchase.order:0
msgid "Calendar View"
-msgstr ""
+msgstr "Calendar View"
#. module: purchase
#: model:ir.model,name:purchase.model_purchase_order_group
msgid "Purchase Order Merge"
-msgstr ""
+msgstr "Spajanje naloga za nabavu"
#. module: purchase
#: report:purchase.quotation:0
msgid "Regards,"
-msgstr ""
+msgstr "Regards,"
#. module: purchase
#: model:ir.actions.act_window,name:purchase.action_negotiation_by_supplier
#: view:purchase.report:0
msgid "Negotiation by Supplier"
-msgstr ""
+msgstr "Negotiation by Supplier"
#. module: purchase
#: view:res.partner:0
msgid "Purchase Properties"
-msgstr ""
+msgstr "Svojstva nabave"
#. module: purchase
#: model:process.transition,note:purchase.process_transition_purchaseinvoice0
@@ -1029,21 +1065,23 @@ msgid ""
"the buyer. Depending on the Invoicing control of the purchase order, the "
"invoice is based on received or on ordered quantities."
msgstr ""
+"Nalog za nabavu kreira ulazni račun u trenutku potvrde. Račun nastaje "
+"temeljem naloga ili primki ovisno o \"Kontrola računa\" na nalogu."
#. module: purchase
#: field:purchase.order,amount_untaxed:0
msgid "Untaxed Amount"
-msgstr ""
+msgstr "Osnovica"
#. module: purchase
#: help:purchase.order,invoiced:0
msgid "It indicates that an invoice has been paid"
-msgstr ""
+msgstr "Označava da je račun plaćen"
#. module: purchase
#: model:process.node,note:purchase.process_node_packinginvoice0
msgid "Outgoing products to invoice"
-msgstr ""
+msgstr "Nefakturirani izlaz"
#. module: purchase
#: view:purchase.installer:0
@@ -1054,37 +1092,37 @@ msgstr ""
#: model:ir.actions.act_window,name:purchase.action_qty_per_product
#: view:purchase.report:0
msgid "Qty. per product"
-msgstr ""
+msgstr "Kol. po proizvodu"
#. module: purchase
#: constraint:stock.move:0
msgid "You try to assign a lot which is not from the same product"
-msgstr ""
+msgstr "Pokušavate pridružiti lot koji nije iz istog proizvoda"
#. module: purchase
#: help:purchase.order,date_order:0
msgid "Date on which this document has been created."
-msgstr ""
+msgstr "Datum kreiranja ovog dokumenta."
#. module: purchase
#: view:res.partner:0
msgid "Sales & Purchases"
-msgstr ""
+msgstr "Prodaja i nabava"
#. module: purchase
#: selection:purchase.report,month:0
msgid "June"
-msgstr ""
+msgstr "Lipanj"
#. module: purchase
#: model:ir.model,name:purchase.model_purchase_report
msgid "Purchases Orders"
-msgstr ""
+msgstr "Nalozi za nabavu"
#. module: purchase
#: view:purchase.order.line:0
msgid "Manual Invoices"
-msgstr ""
+msgstr "Ručni računi"
#. module: purchase
#: code:addons/purchase/purchase.py:318
@@ -1096,12 +1134,12 @@ msgstr ""
#. module: purchase
#: selection:purchase.report,month:0
msgid "November"
-msgstr ""
+msgstr "Studeni"
#. module: purchase
#: view:purchase.report:0
msgid "Extended Filters..."
-msgstr ""
+msgstr "Prošireni filtri..."
#. module: purchase
#: code:addons/purchase/purchase.py:362
@@ -1125,22 +1163,22 @@ msgstr ""
#. module: purchase
#: model:process.transition,name:purchase.process_transition_createpackinglist0
msgid "Pick list generated"
-msgstr ""
+msgstr "Pick list generated"
#. module: purchase
#: view:purchase.order:0
msgid "Exception"
-msgstr ""
+msgstr "Exception"
#. module: purchase
#: selection:purchase.report,month:0
msgid "October"
-msgstr ""
+msgstr "Listopad"
#. module: purchase
#: view:purchase.order:0
msgid "Compute"
-msgstr ""
+msgstr "Izračunaj"
#. module: purchase
#: model:ir.module.module,description:purchase.module_meta_information
@@ -1168,38 +1206,38 @@ msgstr ""
#. module: purchase
#: selection:purchase.report,month:0
msgid "January"
-msgstr ""
+msgstr "Siječanj"
#. module: purchase
#: model:ir.model,name:purchase.model_res_company
msgid "Companies"
-msgstr ""
+msgstr "Organizacije"
#. module: purchase
#: view:purchase.order:0
msgid "Cancel Purchase Order"
-msgstr ""
+msgstr "Otkaži nalog za nabavu"
#. module: purchase
#: constraint:stock.move:0
msgid "You must assign a production lot for this product"
-msgstr ""
+msgstr "Morate pridijeliti lot proizvodnje ovom proizvodu"
#. module: purchase
#: model:process.transition,note:purchase.process_transition_createpackinglist0
msgid "A pick list is generated to track the incoming products."
-msgstr ""
+msgstr "A pick list is generated to track the incoming products."
#. module: purchase
#: model:ir.ui.menu,name:purchase.menu_purchase_deshboard
msgid "Dashboard"
-msgstr ""
+msgstr "Kokpit"
#. module: purchase
#: view:purchase.report:0
#: field:purchase.report,price_standard:0
msgid "Products Value"
-msgstr ""
+msgstr "Products Value"
#. module: purchase
#: model:ir.ui.menu,name:purchase.menu_purchase_product_pricelist_type
@@ -1210,34 +1248,34 @@ msgstr ""
#: view:purchase.order:0
#: view:purchase.report:0
msgid "Quotations"
-msgstr ""
+msgstr "Ponude"
#. module: purchase
#: model:ir.actions.act_window,name:purchase.action_po_per_month_tree
#: view:purchase.report:0
msgid "Purchase order per month"
-msgstr ""
+msgstr "Nalozi nabave po mjesecima"
#. module: purchase
#: view:purchase.order.line:0
msgid "History"
-msgstr ""
+msgstr "Povijest"
#. module: purchase
#: model:ir.ui.menu,name:purchase.menu_product_by_category_purchase_form
msgid "Products by Category"
-msgstr ""
+msgstr "Proizvodi po kategorijama"
#. module: purchase
#: view:purchase.report:0
#: field:purchase.report,delay:0
msgid "Days to Validate"
-msgstr ""
+msgstr "Dana do potvrde"
#. module: purchase
#: help:purchase.order,origin:0
msgid "Reference of the document that generated this purchase order request."
-msgstr ""
+msgstr "Izvorni dokument koji je generirao ovaj zahtjev za nabavu."
#. module: purchase
#: help:purchase.order,state:0
@@ -1249,33 +1287,40 @@ msgid ""
"received, the state becomes 'Done'. If a cancel action occurs in the invoice "
"or in the reception of goods, the state becomes in exception."
msgstr ""
+"Stanje naloga za nabavu ili zahtjeva za ponudom. Ponuda je nalog za nabavu u "
+"stanju 'Nacrt'. Nalog zatim treba uskladiti s ponudom dobavljača i "
+"potvrditi. Potvrda naloga je prihvaćanje ponude dobavljača, odnosno slanje "
+"narudžbenice dobavljaču. Nakon toga dobavljač potvrđuje narudžbenicu i nalog "
+"prelazi u stanje 'Odobren'. Kad je nalog za nabavu plaćen i zaprimljen, "
+"stanje postaje 'Izvršen'. Ako se dogodi otkazivanje tijekom izrade računa "
+"ili kod zaprimanja robe stanje postaje 'Iznimka'."
#. module: purchase
#: field:purchase.order.line,price_subtotal:0
msgid "Subtotal"
-msgstr ""
+msgstr "Podzbroj"
#. module: purchase
#: model:ir.actions.act_window,name:purchase.purchase_rfq
#: model:ir.ui.menu,name:purchase.menu_purchase_rfq
msgid "Requests for Quotation"
-msgstr ""
+msgstr "Zahtjevi za ponudom"
#. module: purchase
#: help:purchase.order,date_approve:0
msgid "Date on which purchase order has been approved"
-msgstr ""
+msgstr "Datum potvrde naloga za nabavu (narudžbenice)."
#. module: purchase
#: selection:purchase.order,state:0
#: selection:purchase.report,state:0
msgid "Waiting"
-msgstr ""
+msgstr "Waiting"
#. module: purchase
#: model:product.pricelist.version,name:purchase.ver0
msgid "Default Purchase Pricelist Version"
-msgstr ""
+msgstr "Verzija uobičajenog cjenika nabave"
#. module: purchase
#: view:purchase.installer:0
@@ -1292,23 +1337,23 @@ msgstr ""
#. module: purchase
#: field:purchase.order,fiscal_position:0
msgid "Fiscal Position"
-msgstr ""
+msgstr "Fiskalna pozicija"
#. module: purchase
#: report:purchase.order:0
msgid "Request for Quotation N°"
-msgstr ""
+msgstr "Zahtjev za ponudom br."
#. module: purchase
#: model:process.transition,name:purchase.process_transition_invoicefrompackinglist0
#: model:process.transition,name:purchase.process_transition_invoicefrompurchase0
msgid "Invoice"
-msgstr ""
+msgstr "Račun"
#. module: purchase
#: selection:purchase.report,month:0
msgid "December"
-msgstr ""
+msgstr "Prosinac"
#. module: purchase
#: model:process.transition.action,name:purchase.process_transition_action_approvingcancelpurchaseorder0
@@ -1323,12 +1368,12 @@ msgstr "Odustani"
#: view:purchase.order:0
#: view:purchase.order.line:0
msgid "Purchase Order Lines"
-msgstr ""
+msgstr "Stavke naloga za nabavu"
#. module: purchase
#: model:process.transition,note:purchase.process_transition_approvingpurchaseorder0
msgid "The supplier approves the Purchase Order."
-msgstr ""
+msgstr "Dobavljač odobrava narudžbenicu."
#. module: purchase
#: model:ir.actions.act_window,name:purchase.act_res_partner_2_purchase_order
@@ -1336,86 +1381,86 @@ msgstr ""
#: model:ir.ui.menu,name:purchase.menu_purchase_form_action
#: view:purchase.report:0
msgid "Purchase Orders"
-msgstr ""
+msgstr "Nalozi za nabavu"
#. module: purchase
#: field:purchase.order,origin:0
msgid "Source Document"
-msgstr ""
+msgstr "Izvorni dokument"
#. module: purchase
#: view:purchase.order.group:0
msgid "Merge orders"
-msgstr ""
+msgstr "Spoji naloge"
#. module: purchase
#: model:ir.model,name:purchase.model_purchase_order_line_invoice
msgid "Purchase Order Line Make Invoice"
-msgstr ""
+msgstr "Kreiraj račun iz stavki naloga za nabavu"
#. module: purchase
#: model:ir.ui.menu,name:purchase.menu_action_picking_tree4
msgid "Incoming Shipments"
-msgstr ""
+msgstr "Primke"
#. module: purchase
#: model:ir.actions.act_window,name:purchase.action_purchase_order_by_user_all
msgid "Total Orders by User per month"
-msgstr ""
+msgstr "Ukupno naloga po korisniku i mjesecu"
#. module: purchase
#: model:ir.actions.report.xml,name:purchase.report_purchase_quotation
#: selection:purchase.order,state:0
#: selection:purchase.report,state:0
msgid "Request for Quotation"
-msgstr ""
+msgstr "Zahtjev za ponudom"
#. module: purchase
#: report:purchase.order:0
msgid "Tél. :"
-msgstr ""
+msgstr "Tél. :"
#. module: purchase
#: field:purchase.order,create_uid:0
#: view:purchase.report:0
#: field:purchase.report,user_id:0
msgid "Responsible"
-msgstr ""
+msgstr "Odgovoran"
#. module: purchase
#: report:purchase.order:0
msgid "Our Order Reference"
-msgstr ""
+msgstr "Naša oznaka naloga"
#. module: purchase
#: view:purchase.order:0
#: view:purchase.order.line:0
msgid "Search Purchase Order"
-msgstr ""
+msgstr "Traži naloge za nabavu"
#. module: purchase
#: field:purchase.order,warehouse_id:0
#: view:purchase.report:0
#: field:purchase.report,warehouse_id:0
msgid "Warehouse"
-msgstr ""
+msgstr "Skladište"
#. module: purchase
#: model:process.node,note:purchase.process_node_draftpurchaseorder0
#: model:process.node,note:purchase.process_node_draftpurchaseorder1
msgid "Request for Quotations."
-msgstr ""
+msgstr "Zahtjev za ponudom"
#. module: purchase
#: report:purchase.order:0
msgid "Date Req."
-msgstr ""
+msgstr "Datum Zah."
#. module: purchase
#: field:purchase.order,date_approve:0
#: field:purchase.report,date_approve:0
msgid "Date Approved"
-msgstr ""
+msgstr "Datum odobrenja"
#. module: purchase
#: code:addons/purchase/purchase.py:417
@@ -1427,17 +1472,17 @@ msgstr ""
#: report:purchase.order:0
#: field:purchase.order.line,price_unit:0
msgid "Unit Price"
-msgstr ""
+msgstr "Jedinična cijena"
#. module: purchase
#: view:purchase.order:0
msgid "Delivery & Invoicing"
-msgstr ""
+msgstr "Dostava i fakturiranje"
#. module: purchase
#: field:purchase.order.line,date_planned:0
msgid "Scheduled Date"
-msgstr ""
+msgstr "Planirani datum"
#. module: purchase
#: model:ir.ui.menu,name:purchase.menu_product_in_config_purchase
@@ -1447,41 +1492,41 @@ msgstr ""
#: view:purchase.report:0
#: field:purchase.report,product_id:0
msgid "Product"
-msgstr ""
+msgstr "Proizvod"
#. module: purchase
#: model:process.transition,name:purchase.process_transition_confirmingpurchaseorder0
#: model:process.transition,name:purchase.process_transition_confirmingpurchaseorder1
msgid "Confirmation"
-msgstr ""
+msgstr "Confirmation"
#. module: purchase
#: report:purchase.order:0
#: field:purchase.order.line,name:0
#: report:purchase.quotation:0
msgid "Description"
-msgstr ""
+msgstr "Opis"
#. module: purchase
#: help:res.company,po_lead:0
msgid "This is the leads/security time for each purchase order."
-msgstr ""
+msgstr "Ovo je vodeće/rezervno vrijeme za svaki nabavni nalog."
#. module: purchase
#: report:purchase.quotation:0
msgid "Expected Delivery address:"
-msgstr ""
+msgstr "Expected Delivery address:"
#. module: purchase
#: model:ir.actions.act_window,name:purchase.action_stock_move_report_po
#: model:ir.ui.menu,name:purchase.menu_action_stock_move_report_po
msgid "Receptions Analysis"
-msgstr ""
+msgstr "Analiza primki"
#. module: purchase
#: help:purchase.order,amount_untaxed:0
msgid "The amount without tax"
-msgstr ""
+msgstr "Iznos osnovice."
#. module: purchase
#: model:ir.actions.act_window,help:purchase.action_supplier_address_form
@@ -1490,44 +1535,47 @@ msgid ""
"suppliers. You can track all your interactions with them through the History "
"tab: emails, orders, meetings, etc."
msgstr ""
+"Access your supplier records and maintain a good relationship with your "
+"suppliers. You can track all your interactions with them through the History "
+"tab: emails, orders, meetings, etc."
#. module: purchase
#: view:purchase.order:0
msgid "Delivery"
-msgstr ""
+msgstr "Dostava"
#. module: purchase
#: view:board.board:0
#: model:ir.actions.act_window,name:purchase.purchase_draft
msgid "Request for Quotations"
-msgstr ""
+msgstr "Zahtjev za ponudom"
#. module: purchase
#: field:purchase.order.line,product_uom:0
msgid "Product UOM"
-msgstr ""
+msgstr "JM proizvoda"
#. module: purchase
#: report:purchase.order:0
#: report:purchase.quotation:0
msgid "Qty"
-msgstr ""
+msgstr "Kol."
#. module: purchase
#: field:purchase.order,partner_address_id:0
msgid "Address"
-msgstr ""
+msgstr "Adresa"
#. module: purchase
#: field:purchase.order.line,move_ids:0
msgid "Reservation"
-msgstr ""
+msgstr "Reservation"
#. module: purchase
#: model:ir.actions.act_window,name:purchase.action_purchase_order_report_graph
#: view:purchase.report:0
msgid "Total Qty and Amount by month"
-msgstr ""
+msgstr "Uk. količina i iznos po mjesecima"
#. module: purchase
#: code:addons/purchase/purchase.py:409
@@ -1541,27 +1589,29 @@ msgid ""
"In case there is no supplier for this product, the buyer can fill the form "
"manually and confirm it. The RFQ becomes a confirmed Purchase Order."
msgstr ""
+"In case there is no supplier for this product, the buyer can fill the form "
+"manually and confirm it. The RFQ becomes a confirmed Purchase Order."
#. module: purchase
#: selection:purchase.report,month:0
msgid "February"
-msgstr ""
+msgstr "Veljača"
#. module: purchase
#: model:ir.ui.menu,name:purchase.menu_product_category_config_purchase
-msgid "Product Categories"
+msgid "Products Categories"
msgstr ""
#. module: purchase
#: model:ir.actions.act_window,name:purchase.action_purchase_order_report_all
#: model:ir.ui.menu,name:purchase.menu_action_purchase_order_report_all
msgid "Purchase Analysis"
-msgstr ""
+msgstr "Analiza nabave"
#. module: purchase
#: report:purchase.order:0
msgid "Your Order Reference"
-msgstr ""
+msgstr "Referenca naloga"
#. module: purchase
#: view:purchase.order:0
@@ -1569,18 +1619,18 @@ msgstr ""
#: report:purchase.quotation:0
#: field:purchase.report,expected_date:0
msgid "Expected Date"
-msgstr ""
+msgstr "Očekivani datum"
#. module: purchase
#: model:ir.actions.act_window,name:purchase.action_total_price_by_product_by_state
#: view:purchase.report:0
msgid "Total price by product by state"
-msgstr ""
+msgstr "Ukupna cijena po proizvodu po stanju"
#. module: purchase
#: report:purchase.quotation:0
msgid "TVA:"
-msgstr ""
+msgstr "TVA:"
#. module: purchase
#: report:purchase.order:0
@@ -1591,22 +1641,22 @@ msgstr ""
#. module: purchase
#: report:purchase.order:0
msgid "Shipping address :"
-msgstr ""
+msgstr "Shipping address :"
#. module: purchase
#: view:purchase.order:0
msgid "Purchase Control"
-msgstr ""
+msgstr "Kontrola nabave"
#. module: purchase
#: selection:purchase.report,month:0
msgid "March"
-msgstr ""
+msgstr "Ožujak"
#. module: purchase
#: selection:purchase.report,month:0
msgid "April"
-msgstr ""
+msgstr "Travanj"
#. module: purchase
#: view:purchase.order.group:0
@@ -1623,43 +1673,53 @@ msgid ""
"\n"
" "
msgstr ""
+" Pravila: \n"
+" \n"
+" Nalozi za nabavu će biti spojeni samo ako su: \n"
+" * u stanju 'Nacrt' \n"
+" * pripadaju istom dobavljaču \n"
+" * imaju iste sladišne lokacije i cjenike nabave \n"
+" \n"
+" Linije se spajaju samo ako su identične u svemu osim količine i jedinice "
+"mjere: \n"
+" "
#. module: purchase
#: view:purchase.report:0
#: field:purchase.report,name:0
msgid "Year"
-msgstr ""
+msgstr "Godina"
#. module: purchase
#: field:purchase.report,negociation:0
msgid "Purchase-Standard Price"
-msgstr ""
+msgstr "Uobičajena nabavna cijena"
#. module: purchase
#: model:product.pricelist.type,name:purchase.pricelist_type_purchase
#: field:res.partner,property_product_pricelist_purchase:0
msgid "Purchase Pricelist"
-msgstr ""
+msgstr "Purchase Pricelist"
#. module: purchase
#: field:purchase.order,invoice_method:0
msgid "Invoicing Control"
-msgstr ""
+msgstr "Kontrola računa"
#. module: purchase
#: model:process.transition.action,name:purchase.process_transition_action_approvingpurchaseorder0
msgid "Approve"
-msgstr ""
+msgstr "Odobri"
#. module: purchase
#: view:purchase.order:0
msgid "To Approve"
-msgstr ""
+msgstr "Za odobriti"
#. module: purchase
#: view:purchase.order.line:0
msgid "Invoicing"
-msgstr ""
+msgstr "Fakturiranje"
#. module: purchase
#: help:purchase.order.line,state:0
@@ -1672,6 +1732,13 @@ msgid ""
" \n"
"* The 'Cancelled' state is set automatically when user cancel purchase order."
msgstr ""
+" * The 'Draft' state is set automatically when purchase order in draft "
+"state. \n"
+"* The 'Confirmed' state is set automatically as confirm when purchase order "
+"in confirm state. \n"
+"* The 'Done' state is set automatically when purchase order is set as done. "
+" \n"
+"* The 'Cancelled' state is set automatically when user cancel purchase order."
#. module: purchase
#: code:addons/purchase/purchase.py:424
@@ -1682,54 +1749,54 @@ msgstr ""
#. module: purchase
#: field:purchase.order,amount_total:0
msgid "Total"
-msgstr ""
+msgstr "Ukupno"
#. module: purchase
#: model:ir.ui.menu,name:purchase.menu_product_pricelist_action_purhase
msgid "Pricelist Versions"
-msgstr ""
+msgstr "Verzije cjenika"
#. module: purchase
#: model:ir.actions.act_window,name:purchase.action_supplier_address_form
msgid "Addresses"
-msgstr ""
+msgstr "Adrese"
#. module: purchase
#: view:purchase.order.group:0
msgid "Are you sure you want to merge these orders ?"
-msgstr ""
+msgstr "Are you sure you want to merge these orders ?"
#. module: purchase
#: view:purchase.order:0
#: view:purchase.order.line:0
#: view:purchase.report:0
msgid "Group By..."
-msgstr ""
+msgstr "Grupiraj po..."
#. module: purchase
#: model:process.transition,name:purchase.process_transition_purchaseinvoice0
msgid "From a purchase order"
-msgstr ""
+msgstr "Iz naloga za nabavu"
#. module: purchase
#: report:purchase.order:0
msgid "TVA :"
-msgstr ""
+msgstr "TVA :"
#. module: purchase
#: help:purchase.order,amount_total:0
msgid "The total amount"
-msgstr ""
+msgstr "Ukupan iznos"
#. module: purchase
#: selection:purchase.report,month:0
msgid "May"
-msgstr ""
+msgstr "Svibanj"
#. module: purchase
#: field:res.company,po_lead:0
msgid "Purchase Lead Time"
-msgstr ""
+msgstr "Vodeće vrijeme nabave"
#. module: purchase
#: model:process.transition,note:purchase.process_transition_invoicefrompurchase0
@@ -1738,17 +1805,20 @@ msgid ""
"order is 'On order'. The invoice can also be generated manually by the "
"accountant (Invoice control = Manual)."
msgstr ""
+"Ako je 'Fakturiranje' na nalogu postavljeno na 'Temeljem naloga', račun će "
+"se automatski generirati. Račun može izraditi i knjigovođa upisom računa i "
+"stavki kada je 'Fakturiranje' postavljeno na 'Ručno'."
#. module: purchase
#: model:process.process,name:purchase.process_process_purchaseprocess0
msgid "Purchase"
-msgstr ""
+msgstr "Nabava"
#. module: purchase
#: model:ir.model,name:purchase.model_res_partner
#: field:purchase.order.line,partner_id:0
msgid "Partner"
-msgstr ""
+msgstr "Partner"
#. module: purchase
#: code:addons/purchase/purchase.py:662
@@ -1771,18 +1841,18 @@ msgstr ""
#. module: purchase
#: view:purchase.order.line:0
msgid "Stock Moves"
-msgstr ""
+msgstr "Skladišni prijenosi"
#. module: purchase
#: model:ir.ui.menu,name:purchase.menu_purchase_unit_measure_purchase
#: model:ir.ui.menu,name:purchase.menu_purchase_uom_form_action
msgid "Units of Measure"
-msgstr ""
+msgstr "Jedinice mjere"
#. module: purchase
#: view:purchase.report:0
msgid "Orders"
-msgstr ""
+msgstr "Orders"
#. module: purchase
#: help:purchase.order,name:0
@@ -1790,9 +1860,11 @@ msgid ""
"unique number of the purchase order,computed automatically when the purchase "
"order is created"
msgstr ""
+"jedinstveni broj naloga za prodaju, automatski postavljen u trenutku "
+"kreiranja"
#. module: purchase
#: model:ir.actions.act_window,name:purchase.open_board_purchase
#: model:ir.ui.menu,name:purchase.menu_board_purchase
msgid "Purchase Dashboard"
-msgstr ""
+msgstr "Kokpit nabave"
diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py
index 0dc015834a0..b61f0d340d2 100644
--- a/addons/purchase/purchase.py
+++ b/addons/purchase/purchase.py
@@ -35,14 +35,6 @@ from osv.orm import browse_record, browse_null
#
class purchase_order(osv.osv):
- def _calc_amount(self, cr, uid, ids, prop, unknow_none, unknow_dict):
- res = {}
- for order in self.browse(cr, uid, ids):
- res[order.id] = 0
- for oline in order.order_line:
- res[order.id] += oline.price_unit * oline.product_qty
- return res
-
def _amount_all(self, cr, uid, ids, field_name, arg, context=None):
res = {}
cur_obj=self.pool.get('res.currency')
@@ -300,25 +292,6 @@ class purchase_order(osv.osv):
for id in ids:
self.write(cr, uid, [id], {'state' : 'confirmed', 'validator' : uid})
return True
- # Dead code:
- def wkf_warn_buyer(self, cr, uid, ids):
- self.write(cr, uid, ids, {'state' : 'wait', 'validator' : uid})
- request = pooler.get_pool(cr.dbname).get('res.request')
- for po in self.browse(cr, uid, ids):
- managers = []
- for oline in po.order_line:
- manager = oline.product_id.product_manager
- if manager and not (manager.id in managers):
- managers.append(manager.id)
- for manager_id in managers:
- request.create(cr, uid,{
- 'name' : _("Purchase amount over the limit"),
- 'act_from' : uid,
- 'act_to' : manager_id,
- 'body': _('Somebody has just confirmed a purchase with an amount over the defined limit'),
- 'ref_partner_id': po.partner_id.id,
- 'ref_doc1': 'purchase.order,%d' % (po.id,),
- })
def _prepare_inv_line(self, cr, uid, account_id, order_line, context=None):
"""Collects require data from purchase order line that is used to create invoice line
diff --git a/addons/purchase/purchase_view.xml b/addons/purchase/purchase_view.xml
index 90acbf4ecfd..b61a33ed73b 100644
--- a/addons/purchase/purchase_view.xml
+++ b/addons/purchase/purchase_view.xml
@@ -315,11 +315,10 @@
-
-
+
-
-
+
+
diff --git a/addons/purchase/report/order.py b/addons/purchase/report/order.py
index 6c99d6381f4..c253467f12a 100644
--- a/addons/purchase/report/order.py
+++ b/addons/purchase/report/order.py
@@ -27,55 +27,7 @@ import pooler
class order(report_sxw.rml_parse):
def __init__(self, cr, uid, name, context):
super(order, self).__init__(cr, uid, name, context=context)
- self.localcontext.update({
- 'time': time,
- 'get_line_tax': self._get_line_tax,
- 'get_tax': self._get_tax,
- 'get_product_code': self._get_product_code,
- })
- def _get_line_tax(self, line_obj):
- self.cr.execute("SELECT tax_id FROM purchase_order_taxe WHERE order_line_id=%s", (line_obj.id))
- res = self.cr.fetchall() or None
- if not res:
- return ""
- if isinstance(res, list):
- tax_ids = [t[0] for t in res]
- else:
- tax_ids = res[0]
- res = [tax.name for tax in pooler.get_pool(self.cr.dbname).get('account.tax').browse(self.cr, self.uid, tax_ids)]
- return ",\n ".join(res)
-
- def _get_tax(self, order_obj):
- self.cr.execute("SELECT DISTINCT tax_id FROM purchase_order_taxe, purchase_order_line, purchase_order \
- WHERE (purchase_order_line.order_id=purchase_order.id) AND (purchase_order.id=%s)", (order_obj.id))
- res = self.cr.fetchall() or None
- if not res:
- return []
- if isinstance(res, list):
- tax_ids = [t[0] for t in res]
- else:
- tax_ids = res[0]
- tax_obj = pooler.get_pool(self.cr.dbname).get('account.tax')
- res = []
- for tax in tax_obj.browse(self.cr, self.uid, tax_ids):
- self.cr.execute("SELECT DISTINCT order_line_id FROM purchase_order_line, purchase_order_taxe \
- WHERE (purchase_order_taxe.tax_id=%s) AND (purchase_order_line.order_id=%s)", (tax.id, order_obj.id))
- lines = self.cr.fetchall() or None
- if lines:
- if isinstance(lines, list):
- line_ids = [l[0] for l in lines]
- else:
- line_ids = lines[0]
- base = 0
- for line in pooler.get_pool(self.cr.dbname).get('purchase.order.line').browse(self.cr, self.uid, line_ids):
- base += line.price_subtotal
- res.append({'code':tax.name,
- 'base':base,
- 'amount':base*tax.amount})
- return res
- def _get_product_code(self, product_id, partner_id):
- product_obj=pooler.get_pool(self.cr.dbname).get('product.product')
- return product_obj._product_code(self.cr, self.uid, [product_id], name=None, arg=None, context={'partner_id': partner_id})[product_id]
+ self.localcontext.update({'time': time})
report_sxw.report_sxw('report.purchase.order','purchase.order','addons/purchase/report/order.rml',parser=order)
diff --git a/addons/purchase/report/purchase_report_view.xml b/addons/purchase/report/purchase_report_view.xml
index 68323bc9146..095f17090da 100644
--- a/addons/purchase/report/purchase_report_view.xml
+++ b/addons/purchase/report/purchase_report_view.xml
@@ -99,7 +99,7 @@
-
+
@@ -187,98 +187,5 @@
-
- purchase.by.supplier.graph
- purchase.report
- graph
-
-
-
-
-
-
-
-
- Purchase by supplier
- purchase.report
- form
- tree
- [('state','=','done'),('date','>',(datetime.date.today()-datetime.timedelta(days=30)).strftime('%Y-%m-%d'))]
- {'group_by_no_leaf':1,'group_by':['partner_id']}
-
-
-
-
- total.price.by.product.by.state.graph
- purchase.report
- graph
-
-
-
-
-
-
-
-
-
- Total price by product by state
- purchase.report
- form
- tree,graph
- {'group_by_no_leaf':1,'group_by':['product_id','state']}
-
-
-
-
- qty.per.product.graph
- purchase.report
- graph
-
-
-
-
-
-
-
-
- Qty. per product
- purchase.report
- form
- tree
- [('state','=','done')]
- {'group_by_no_leaf':1,'group_by':['product_id']}
-
-
-
-
- qty.per.product.tree
- purchase.report
- tree
-
-
-
-
-
-
-
-
-
- Purchase order per month
- purchase.report
- form
- tree
- [('date','>',time.strftime('%Y-01-01 00:00:00')),('date','<',time.strftime('%Y-12-31 23:59:59')),('state','=','done')]
- {'group_by_no_leaf':1,'group_by':['month','product_id']}
-
-
-
-
- Current purchases
- purchase.order
- form
- tree,form
- [('state','in',('draft','confirmed'))]
-
-
diff --git a/addons/purchase/security/ir.model.access.csv b/addons/purchase/security/ir.model.access.csv
index c9ad36840fa..efee0adc589 100644
--- a/addons/purchase/security/ir.model.access.csv
+++ b/addons/purchase/security/ir.model.access.csv
@@ -1,67 +1,67 @@
-"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
-"access_purchase_order","purchase.order","model_purchase_order","group_purchase_user",1,1,1,1
-"access_purchase_order_manager","purchase.order","model_purchase_order","group_purchase_manager",1,1,1,1
-"access_purchase_order_line","purchase.order.line user","model_purchase_order_line","group_purchase_user",1,1,1,1
-"access_purchase_order_line_manager","purchase.order.line manager","model_purchase_order_line","group_purchase_manager",1,0,0,0
-"access_stock_location_purchase_user","stock.location","stock.model_stock_location","group_purchase_user",1,0,0,0
-"access_stock_warehouse_purchase_user","stock.warehouse","stock.model_stock_warehouse","group_purchase_user",1,0,0,0
-"access_stock_picking_purchase_user","stock.picking","stock.model_stock_picking","group_purchase_user",1,1,1,1
-"access_stock_move_purchase_user","stock.move","stock.model_stock_move","group_purchase_user",1,1,1,1
-"access_purchase_order_stock_worker","purchase.order","model_purchase_order","stock.group_stock_user",1,0,0,0
-"access_purchase_order_line_stock_worker","purchase.order.line","model_purchase_order_line","stock.group_stock_user",1,0,0,0
-"access_account_tax_purchase_user","account.tax","account.model_account_tax","group_purchase_user",1,0,0,0
-"access_report_purchase_order","purchase.report","model_purchase_report","group_purchase_manager",1,0,0,0
-"access_report_purchase_order_user","purchase.report user","model_purchase_report","group_purchase_user",1,0,0,0
-"access_purchase_order_line_manager","purchase.order.line","model_purchase_order_line","group_purchase_manager",1,1,1,1
-"access_stock_location_purchase_user_manager","stock.location","stock.model_stock_location","group_purchase_manager",1,0,0,0
-"access_stock_warehouse_purchase_user_manager","stock.warehouse","stock.model_stock_warehouse","group_purchase_manager",1,0,0,0
-"access_stock_picking_purchase_user_manager","stock.picking","stock.model_stock_picking","group_purchase_manager",1,1,1,1
-"access_stock_move_purchase_user_manager","stock.move","stock.model_stock_move","group_purchase_manager",1,1,1,1
-"access_account_tax_purchase_user_manager","account.tax","account.model_account_tax","group_purchase_manager",1,0,0,0
-"access_product_product_purchase_user","product.product.purchase.user","product.model_product_product","group_purchase_user",1,0,0,0
-"access_product_product_purchase_manager","product.product.purchase.manager","product.model_product_product","group_purchase_manager",1,0,0,0
-"access_product_template_purchase_user","product.template purchase_user","product.model_product_template","group_purchase_user",1,0,0,0
-"access_product_template_purchase_manager","product.template purchase_manager","product.model_product_template","group_purchase_manager",1,0,0,0
-"access_account_invoice_purchase","account_invoice purchase","account.model_account_invoice","group_purchase_user",1,1,1,1
-"access_account_invoice_line_purchase","account_invoice.line purchase","account.model_account_invoice_line","group_purchase_user",1,1,1,1
-"access_account_invoice_purchase_manager","account_invoice purchase manager","account.model_account_invoice","group_purchase_manager",1,0,0,0
-"access_account_invoice_line_purchase_manager","account_invoice.line purchase manager","account.model_account_invoice_line","group_purchase_manager",1,0,0,0
-"access_account_invoice_tax_purchase","account_invoice.tax purchase","account.model_account_invoice_tax","group_purchase_user",1,1,1,1
-"access_account_fiscal_position_purchase_user","account.fiscal.position purchase","account.model_account_fiscal_position","group_purchase_user",1,0,0,0
-"access_account_sequence_fiscalyear_purchase_user","account.sequence.fiscalyear purchase","account.model_account_sequence_fiscalyear","group_purchase_user",1,1,1,1
-"access_res_partner_purchase_user","res.partner purchase","base.model_res_partner","group_purchase_user",1,0,0,0
-"access_res_partner_address_purchase_user","res.partner.address purchase","base.model_res_partner_address","group_purchase_user",1,0,0,0
-"access_account_journal_period","account.journal.period","account.model_account_journal_period","group_purchase_user",1,1,1,0
-"access_account_journal","account.journal","account.model_account_journal","group_purchase_user",1,0,0,0
-"access_account_journal_manager","account.journal","account.model_account_journal","group_purchase_manager",1,0,0,0
-"access_account_period","account.period","account.model_account_period","group_purchase_user",1,0,0,0
-"access_account_fiscalyear","account.fiscalyear","account.model_account_fiscalyear","group_purchase_user",1,0,0,0
-"access_account_move","account.move","account.model_account_move","group_purchase_user",1,0,0,0
-"access_account_move_line","account.move.line","account.model_account_move_line","group_purchase_user",1,0,0,0
-"access_account_analytic_line","account.analytic.line","account.model_account_analytic_line","group_purchase_user",1,0,0,0
-"access_account_move_reconcile","account.move.reconcile","account.model_account_move_reconcile","group_purchase_user",1,0,0,0
-"access_report_stock_move","report.stock.move.manager","stock.model_report_stock_move","group_purchase_manager",1,0,0,0
-"access_report_stock_move_user","report.stock.move.user","stock.model_report_stock_move","group_purchase_user",1,0,0,0
-"access_stock_production_lot_user","stock.production.lot user","stock.model_stock_production_lot","group_purchase_user",1,1,1,0
-"access_stock_production_lot_revision","stock.production.lot.revision","stock.model_stock_production_lot_revision","group_purchase_user",1,1,1,0
-"access_res_partner_purchase_manager","res.partner.purchase.manager","base.model_res_partner","group_purchase_manager",1,1,1,0
-"access_product_uom_categ_purchase_manager","product.uom.categ purchase_manager","product.model_product_uom_categ","purchase.group_purchase_manager",1,1,1,1
-"access_product_uom_purchase_manager","product.uom purchase_manager","product.model_product_uom","purchase.group_purchase_manager",1,1,1,1
-"access_product_ul_purchase_manager","product.ul purchase_manager","product.model_product_ul","purchase.group_purchase_manager",1,1,1,1
-"access_product_category_purchase_manager","product.category purchase_manager","product.model_product_category","purchase.group_purchase_manager",1,1,1,1
-"access_product_template_purchase_manager","product.template purchase_manager","product.model_product_template","purchase.group_purchase_manager",1,1,1,1
-"access_product_product_purchase_manager","product.product purchase_manager","product.model_product_product","purchase.group_purchase_manager",1,1,1,1
-"access_product_packaging_purchase_manager","product.packaging purchase_manager","product.model_product_packaging","purchase.group_purchase_manager",1,1,1,1
-"access_product_supplierinfo_purchase_manager","product.supplierinfo purchase_manager","product.model_product_supplierinfo","purchase.group_purchase_manager",1,1,1,1
-"access_pricelist_partnerinfo_purchase_manager","pricelist.partnerinfo purchase_manager","product.model_pricelist_partnerinfo","purchase.group_purchase_manager",1,1,1,1
-"access_product_price_type_purchase_manager","product.price.type purchase_manager","product.model_product_price_type","purchase.group_purchase_manager",1,1,1,1
-"access_product_pricelist_type_purchase_manager","product.pricelist.type purchase_manager","product.model_product_pricelist_type","purchase.group_purchase_manager",1,1,1,1
-"access_product_pricelist_purchase_manager","product.pricelist purchase_manager","product.model_product_pricelist","purchase.group_purchase_manager",1,1,1,1
-"access_ir_property_group_purchase_manager","ir_property group_purchase_manager","base.model_ir_property","purchase.group_purchase_manager",1,1,1,1
-"access_product_group_res_partner_purchase_manager","res_partner group_purchase_manager","base.model_res_partner","purchase.group_purchase_manager",1,1,1,0
-"access_product_pricelist_version_purchase_manager","product.pricelist.version purchase_manager","product.model_product_pricelist_version","purchase.group_purchase_manager",1,1,1,1
-"access_product_pricelist_item_purchase_manager","product.pricelist.item purchase_manager","product.model_product_pricelist_item","purchase.group_purchase_manager",1,1,1,1
-"access_account_account_purchase_manager","account.account purchase manager","account.model_account_account","purchase.group_purchase_manager",1,0,0,0
-"access_account_journal_purchase_manager","account.journal purchase manager","account.model_account_journal","purchase.group_purchase_manager",1,0,0,0
-"access_stock_tracking_purchase_user","stock.tracking purchase.user","stock.model_stock_tracking","purchase.group_purchase_user",1,1,1,0
-"access_stock_location_purchase_manager","stock.location purchase manager","stock.model_stock_location","purchase.group_purchase_manager",1,0,0,0
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+access_purchase_order,purchase.order,model_purchase_order,group_purchase_user,1,1,1,1
+access_purchase_order_manager,purchase.order,model_purchase_order,group_purchase_manager,1,1,1,1
+access_purchase_order_line,purchase.order.line user,model_purchase_order_line,group_purchase_user,1,1,1,1
+access_purchase_order_line_manager,purchase.order.line manager,model_purchase_order_line,group_purchase_manager,1,0,0,0
+access_stock_location_purchase_user,stock.location,stock.model_stock_location,group_purchase_user,1,0,0,0
+access_stock_warehouse_purchase_user,stock.warehouse,stock.model_stock_warehouse,group_purchase_user,1,0,0,0
+access_stock_picking_purchase_user,stock.picking,stock.model_stock_picking,group_purchase_user,1,1,1,1
+access_stock_move_purchase_user,stock.move,stock.model_stock_move,group_purchase_user,1,1,1,1
+access_purchase_order_stock_worker,purchase.order,model_purchase_order,stock.group_stock_user,1,0,0,0
+access_purchase_order_line_stock_worker,purchase.order.line,model_purchase_order_line,stock.group_stock_user,1,0,0,0
+access_account_tax_purchase_user,account.tax,account.model_account_tax,group_purchase_user,1,0,0,0
+access_report_purchase_order,purchase.report,model_purchase_report,group_purchase_manager,1,0,0,0
+access_report_purchase_order_user,purchase.report user,model_purchase_report,group_purchase_user,1,0,0,0
+access_purchase_order_line_manager,purchase.order.line,model_purchase_order_line,group_purchase_manager,1,1,1,1
+access_stock_location_purchase_user_manager,stock.location,stock.model_stock_location,group_purchase_manager,1,0,0,0
+access_stock_warehouse_purchase_user_manager,stock.warehouse,stock.model_stock_warehouse,group_purchase_manager,1,0,0,0
+access_stock_picking_purchase_user_manager,stock.picking,stock.model_stock_picking,group_purchase_manager,1,1,1,1
+access_stock_move_purchase_user_manager,stock.move,stock.model_stock_move,group_purchase_manager,1,1,1,1
+access_account_tax_purchase_user_manager,account.tax,account.model_account_tax,group_purchase_manager,1,0,0,0
+access_product_product_purchase_user,product.product.purchase.user,product.model_product_product,group_purchase_user,1,0,0,0
+access_product_product_purchase_manager,product.product.purchase.manager,product.model_product_product,group_purchase_manager,1,0,0,0
+access_product_template_purchase_user,product.template purchase_user,product.model_product_template,group_purchase_user,1,0,0,0
+access_product_template_purchase_manager,product.template purchase_manager,product.model_product_template,group_purchase_manager,1,0,0,0
+access_account_invoice_purchase,account_invoice purchase,account.model_account_invoice,group_purchase_user,1,1,1,1
+access_account_invoice_line_purchase,account_invoice.line purchase,account.model_account_invoice_line,group_purchase_user,1,1,1,1
+access_account_invoice_purchase_manager,account_invoice purchase manager,account.model_account_invoice,group_purchase_manager,1,0,0,0
+access_account_invoice_line_purchase_manager,account_invoice.line purchase manager,account.model_account_invoice_line,group_purchase_manager,1,0,0,0
+access_account_invoice_tax_purchase,account_invoice.tax purchase,account.model_account_invoice_tax,group_purchase_user,1,1,1,1
+access_account_fiscal_position_purchase_user,account.fiscal.position purchase,account.model_account_fiscal_position,group_purchase_user,1,0,0,0
+access_account_sequence_fiscalyear_purchase_user,account.sequence.fiscalyear purchase,account.model_account_sequence_fiscalyear,group_purchase_user,1,1,1,1
+access_res_partner_purchase_user,res.partner purchase,base.model_res_partner,group_purchase_user,1,0,0,0
+access_res_partner_address_purchase_user,res.partner.address purchase,base.model_res_partner_address,group_purchase_user,1,0,0,0
+access_account_journal_period,account.journal.period,account.model_account_journal_period,group_purchase_user,1,1,1,0
+access_account_journal,account.journal,account.model_account_journal,group_purchase_user,1,0,0,0
+access_account_journal_manager,account.journal,account.model_account_journal,group_purchase_manager,1,0,0,0
+access_account_period,account.period,account.model_account_period,group_purchase_user,1,0,0,0
+access_account_fiscalyear,account.fiscalyear,account.model_account_fiscalyear,group_purchase_user,1,0,0,0
+access_account_move,account.move,account.model_account_move,group_purchase_user,1,0,0,0
+access_account_move_line,account.move.line,account.model_account_move_line,group_purchase_user,1,0,0,0
+access_account_analytic_line,account.analytic.line,account.model_account_analytic_line,group_purchase_user,1,0,0,0
+access_account_move_reconcile,account.move.reconcile,account.model_account_move_reconcile,group_purchase_user,1,0,0,0
+access_report_stock_move,report.stock.move.manager,stock.model_report_stock_move,group_purchase_manager,1,0,0,0
+access_report_stock_move_user,report.stock.move.user,stock.model_report_stock_move,group_purchase_user,1,0,0,0
+access_stock_production_lot_user,stock.production.lot user,stock.model_stock_production_lot,group_purchase_user,1,1,1,0
+access_stock_production_lot_revision,stock.production.lot.revision,stock.model_stock_production_lot_revision,group_purchase_user,1,1,1,0
+access_res_partner_purchase_manager,res.partner.purchase.manager,base.model_res_partner,group_purchase_manager,1,1,1,0
+access_product_uom_categ_purchase_manager,product.uom.categ purchase_manager,product.model_product_uom_categ,purchase.group_purchase_manager,1,1,1,1
+access_product_uom_purchase_manager,product.uom purchase_manager,product.model_product_uom,purchase.group_purchase_manager,1,1,1,1
+access_product_ul_purchase_manager,product.ul purchase_manager,product.model_product_ul,purchase.group_purchase_manager,1,1,1,1
+access_product_category_purchase_manager,product.category purchase_manager,product.model_product_category,purchase.group_purchase_manager,1,1,1,1
+access_product_template_purchase_manager,product.template purchase_manager,product.model_product_template,purchase.group_purchase_manager,1,1,1,1
+access_product_product_purchase_manager,product.product purchase_manager,product.model_product_product,purchase.group_purchase_manager,1,1,1,1
+access_product_packaging_purchase_manager,product.packaging purchase_manager,product.model_product_packaging,purchase.group_purchase_manager,1,1,1,1
+access_product_supplierinfo_purchase_manager,product.supplierinfo purchase_manager,product.model_product_supplierinfo,purchase.group_purchase_manager,1,1,1,1
+access_pricelist_partnerinfo_purchase_manager,pricelist.partnerinfo purchase_manager,product.model_pricelist_partnerinfo,purchase.group_purchase_manager,1,1,1,1
+access_product_price_type_purchase_manager,product.price.type purchase_manager,product.model_product_price_type,purchase.group_purchase_manager,1,1,1,1
+access_product_pricelist_type_purchase_manager,product.pricelist.type purchase_manager,product.model_product_pricelist_type,purchase.group_purchase_manager,1,1,1,1
+access_product_pricelist_purchase_manager,product.pricelist purchase_manager,product.model_product_pricelist,purchase.group_purchase_manager,1,1,1,1
+access_ir_property_group_purchase_manager,ir_property group_purchase_manager,base.model_ir_property,purchase.group_purchase_manager,1,1,1,1
+access_product_group_res_partner_purchase_manager,res_partner group_purchase_manager,base.model_res_partner,purchase.group_purchase_manager,1,1,1,0
+access_product_pricelist_version_purchase_manager,product.pricelist.version purchase_manager,product.model_product_pricelist_version,purchase.group_purchase_manager,1,1,1,1
+access_product_pricelist_item_purchase_manager,product.pricelist.item purchase_manager,product.model_product_pricelist_item,purchase.group_purchase_manager,1,1,1,1
+access_account_account_purchase_manager,account.account purchase manager,account.model_account_account,purchase.group_purchase_manager,1,0,0,0
+access_account_journal_purchase_manager,account.journal purchase manager,account.model_account_journal,purchase.group_purchase_manager,1,0,0,0
+access_stock_tracking_purchase_user,stock.tracking purchase.user,stock.model_stock_tracking,purchase.group_purchase_user,1,1,1,0
+access_stock_location_purchase_manager,stock.location purchase manager,stock.model_stock_location,purchase.group_purchase_manager,1,0,0,0
diff --git a/addons/purchase/security/purchase_security.xml b/addons/purchase/security/purchase_security.xml
index a67c675b089..4a8ac571703 100644
--- a/addons/purchase/security/purchase_security.xml
+++ b/addons/purchase/security/purchase_security.xml
@@ -3,10 +3,12 @@
- Purchases / User
+ User
+
- Purchases / Manager
+ Manager
+
diff --git a/addons/purchase/static/src/img/icon.png b/addons/purchase/static/src/img/icon.png
new file mode 100644
index 00000000000..fda2d52a710
Binary files /dev/null and b/addons/purchase/static/src/img/icon.png differ
diff --git a/addons/purchase/test/process/invoice_on_poline.yml b/addons/purchase/test/process/invoice_on_poline.yml
new file mode 100644
index 00000000000..c2ad07aab95
--- /dev/null
+++ b/addons/purchase/test/process/invoice_on_poline.yml
@@ -0,0 +1,27 @@
+-
+ I confirm purchase order which has invoicing control method "Based on Purchase Order Lines".
+-
+ !workflow {model: purchase.order, action: purchase_confirm, ref: order_purchase6}
+-
+ In order to test create invoice for purchase order line.
+-
+ !python {model: purchase.order}: |
+ invoice_line_obj = self.pool.get('purchase.order.line_invoice')
+ purchase_order = self.browse(cr, uid, ref("order_purchase6"))
+ context.update({'active_model': 'purchase.order', 'active_ids': [ref("order_purchase6")]})
+ for purchase_line in purchase_order.order_line:
+ invoice_line_obj.makeInvoices(cr, uid, purchase_line.id, context=context)
+-
+ I check the invoice of order.
+-
+ !python {model: purchase.order}: |
+ purchase_order = self.browse(cr, uid, ref("order_purchase6"))
+ for purchase_line in purchase_order.order_line:
+ assert len(purchase_order.invoice_ids) == 1, "Invoice should be generated."
+-
+ I set the default invoicing control method "Based on Purchase Order Lines".
+-
+ !python {model: purchase.config.wizard}: |
+ new_id = self.create(cr ,uid, {'default_method': 'manual'})
+ self.execute(cr, uid, [new_id])
+
diff --git a/addons/purchase_analytic_plans/i18n/hr.po b/addons/purchase_analytic_plans/i18n/hr.po
index f03e787479e..f6ef8e51123 100644
--- a/addons/purchase_analytic_plans/i18n/hr.po
+++ b/addons/purchase_analytic_plans/i18n/hr.po
@@ -7,24 +7,24 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2011-01-03 16:58+0000\n"
-"PO-Revision-Date: 2010-08-03 09:36+0000\n"
-"Last-Translator: Mantavya Gajjar (Open ERP) \n"
+"PO-Revision-Date: 2011-12-12 08:01+0000\n"
+"Last-Translator: Tomislav Bosnjakovic \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-05 04:49+0000\n"
-"X-Generator: Launchpad (build 14231)\n"
+"X-Launchpad-Export-Date: 2011-12-13 05:01+0000\n"
+"X-Generator: Launchpad (build 14458)\n"
#. module: purchase_analytic_plans
#: model:ir.model,name:purchase_analytic_plans.model_purchase_order_line
msgid "Purchase Order Line"
-msgstr ""
+msgstr "Stavka nabavnog naloga"
#. module: purchase_analytic_plans
#: sql_constraint:purchase.order:0
msgid "Order Reference must be unique !"
-msgstr ""
+msgstr "Oznaka naloga mora biti jedinstvena"
#. module: purchase_analytic_plans
#: field:purchase.order.line,analytics_id:0
@@ -34,12 +34,12 @@ msgstr "Analitička raspodjela"
#. module: purchase_analytic_plans
#: model:ir.model,name:purchase_analytic_plans.model_purchase_order
msgid "Purchase Order"
-msgstr ""
+msgstr "Nalog za nabavu"
#. module: purchase_analytic_plans
#: model:ir.module.module,shortdesc:purchase_analytic_plans.module_meta_information
msgid "Purchase Analytic Distribution Management"
-msgstr "Upravljanje analitičkom raspodjelom kupnji"
+msgstr "Upravljanje analitičkom raspodjelom u nabavi"
#. module: purchase_analytic_plans
#: model:ir.module.module,description:purchase_analytic_plans.module_meta_information
@@ -48,6 +48,10 @@ msgid ""
" The base module to manage analytic distribution and purchase orders.\n"
" "
msgstr ""
+"\n"
+" Osnovni modul za upravljanje analitičkom raspodjelom i nabavnim "
+"nalozima.\n"
+" "
#~ msgid "Invalid XML for View Architecture!"
#~ msgstr "Nevažeći XML za Arhitekturu Prikaza!"
diff --git a/addons/purchase_double_validation/__openerp__.py b/addons/purchase_double_validation/__openerp__.py
index eda89e81aa8..b8c0225fd2f 100644
--- a/addons/purchase_double_validation/__openerp__.py
+++ b/addons/purchase_double_validation/__openerp__.py
@@ -41,7 +41,10 @@ that exceeds minimum amount set by configuration wizard.
'purchase_double_validation_installer.xml',
'board_purchase_view.xml'
],
- 'test': ['test/purchase_double_validation_test.yml'],
+ 'test': [
+ 'test/purchase_double_validation_demo.yml',
+ 'test/purchase_double_validation_test.yml'
+ ],
'demo_xml': [],
'installable': True,
'active': False,
diff --git a/addons/purchase_double_validation/i18n/hr.po b/addons/purchase_double_validation/i18n/hr.po
new file mode 100644
index 00000000000..42309561093
--- /dev/null
+++ b/addons/purchase_double_validation/i18n/hr.po
@@ -0,0 +1,88 @@
+# Croatian translation for openobject-addons
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2011-01-11 11:15+0000\n"
+"PO-Revision-Date: 2011-12-12 07:16+0000\n"
+"Last-Translator: Tomislav Bosnjakovic \n"
+"Language-Team: Croatian \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-12-13 05:02+0000\n"
+"X-Generator: Launchpad (build 14458)\n"
+
+#. module: purchase_double_validation
+#: view:purchase.double.validation.installer:0
+msgid "Purchase Application Configuration"
+msgstr "Konfiguracija nabavne aplikacije"
+
+#. module: purchase_double_validation
+#: field:purchase.double.validation.installer,progress:0
+msgid "Configuration Progress"
+msgstr "Napredak konfiguracije"
+
+#. module: purchase_double_validation
+#: view:purchase.double.validation.installer:0
+msgid "Define minimum amount after which puchase is needed to be validated."
+msgstr ""
+"Definiraj minimalni iznos nakon nakon kojeg je potrebno potvrditi nabavu."
+
+#. module: purchase_double_validation
+#: view:purchase.double.validation.installer:0
+msgid "title"
+msgstr "naziv"
+
+#. module: purchase_double_validation
+#: model:ir.module.module,shortdesc:purchase_double_validation.module_meta_information
+msgid "purchase_double_validation"
+msgstr "purchase_double_validation"
+
+#. module: purchase_double_validation
+#: field:purchase.double.validation.installer,config_logo:0
+msgid "Image"
+msgstr "Slika"
+
+#. module: purchase_double_validation
+#: model:ir.module.module,description:purchase_double_validation.module_meta_information
+msgid ""
+"\n"
+"\tThis module modifies the purchase workflow in order to validate purchases "
+"that exceeds minimum amount set by configuration wizard\n"
+" "
+msgstr ""
+"\n"
+"\tOvaj modul mijenja dijagram tijeka nabave kako bi potvrdio nabave koje "
+"prelaze minimalni iznos postavljen u asistentu za konfiguraciju\n"
+" "
+
+#. module: purchase_double_validation
+#: model:ir.actions.act_window,name:purchase_double_validation.action_config_purchase_limit_amount
+#: view:purchase.double.validation.installer:0
+msgid "Configure Limit Amount for Purchase"
+msgstr "Konfiguriraj granični iznos za nabavu"
+
+#. module: purchase_double_validation
+#: view:purchase.double.validation.installer:0
+msgid "res_config_contents"
+msgstr "res_config_contents"
+
+#. module: purchase_double_validation
+#: help:purchase.double.validation.installer,limit_amount:0
+msgid "Maximum amount after which validation of purchase is required."
+msgstr "Maksimalni iznos nakon kojeg je obavezna potvrda nabave."
+
+#. module: purchase_double_validation
+#: model:ir.model,name:purchase_double_validation.model_purchase_double_validation_installer
+msgid "purchase.double.validation.installer"
+msgstr "purchase.double.validation.installer"
+
+#. module: purchase_double_validation
+#: field:purchase.double.validation.installer,limit_amount:0
+msgid "Maximum Purchase Amount"
+msgstr "Maksimalni iznos nabave"
diff --git a/addons/purchase_double_validation/test/purchase_double_validation_demo.yml b/addons/purchase_double_validation/test/purchase_double_validation_demo.yml
new file mode 100644
index 00000000000..a3143de5ee7
--- /dev/null
+++ b/addons/purchase_double_validation/test/purchase_double_validation_demo.yml
@@ -0,0 +1,13 @@
+-
+ !record {model: purchase.order, id: order_purchase11}:
+ partner_id: base.res_partner_desertic_hispafuentes
+ order_line:
+ - product_id: product.product_product_pc4
+ product_qty: 10
+-
+ !record {model: purchase.order, id: order_purchase12}:
+ partner_id: base.res_partner_vickingdirect0
+ order_line:
+ - product_id: product.product_product_hdd2
+ product_qty: 10
+
diff --git a/addons/purchase_double_validation/test/purchase_double_validation_test.yml b/addons/purchase_double_validation/test/purchase_double_validation_test.yml
index ecc8d08a493..0d37b22abcf 100755
--- a/addons/purchase_double_validation/test/purchase_double_validation_test.yml
+++ b/addons/purchase_double_validation/test/purchase_double_validation_test.yml
@@ -1,117 +1,36 @@
-
- I Create new limit amount from Configure Limit Amount for Purchase wizard.
--
+ I set new limit amount from Configure Limit Amount for Purchase .
+-
!record {model: purchase.double.validation.installer, id: purchase_double_validation_installer_1}:
limit_amount: 3000
--
- Then I set the Limit Amount
--
+-
!python {model: purchase.double.validation.installer}: |
self.execute(cr, uid, [ref("purchase_double_validation_installer_1")])
-
- In order to test the purchase double validation flow,I start by creating a new product 'MOB1'
+ In order to test the flow, I confirmed the purchase order.
-
- !record {model: product.product, id: product_product_mob1}:
- categ_id: 'product.product_category_3'
- cost_method: standard
- mes_type: fixed
- name: MOB1
- price_margin: 2.0
- procure_method: make_to_stock
- property_stock_inventory: stock.location_inventory
- property_stock_procurement: stock.location_procurement
- property_stock_production: stock.location_production
- seller_delay: '1'
- standard_price: 2000.0
- supply_method: buy
- type: product
- uom_id: product.product_uom_unit
- uom_po_id: product.product_uom_unit
- volume: 0.0
- warranty: 0.0
- weight: 0.0
- weight_net: 0.0
+ !workflow {model: purchase.order, action: purchase_confirm, ref: order_purchase11}
-
- In order to test the purchase double validation flow,I create a new record where "invoice_method" is From Order.
+ I check that the order which was initially in the draft state has transmit to confirm state for double validation it should not an Approve state.
-
- Test for purchase double validation in which Total > = Limit Amount.
--
- I create purchase order for MOB1 for 3 quantity.
--
- !record {model: purchase.order, id: purchase_order_po11}:
- company_id: base.main_company
- date_order: '2011-01-1'
- invoice_method: order
- location_id: stock.stock_location_stock
- order_line:
- - date_planned: '2011-01-11'
- name: MOB1
- price_unit: 2000.0
- product_id: 'product_product_mob1'
- product_qty: 3.0
- product_uom: product.product_uom_unit
- state: draft
- partner_address_id: base.res_partner_address_7
- partner_id: base.res_partner_4
- pricelist_id: purchase.list0
--
- Initially purchase order is in the draft state.
+ !assert {model: purchase.order, id: order_purchase11, severity: error, string: Purchase Order should not be in Approved state.}:
+ - state != 'approved'
-
- !assert {model: purchase.order, id: purchase_order_po11}:
- - state == 'draft'
+ I Approved the purchase order.
-
- I confirm the purchase order for MOB1.
+ !workflow {model: purchase.order, action: purchase_approve, ref: order_purchase11}
-
- !workflow {model: purchase.order, action: purchase_confirm, ref: purchase_order_po11}
--
- I check that the order which was initially in the draft state has transmit to confirm state for double validation.
--
- !assert {model: purchase.order, id: purchase_order_po11}:
- - state == 'confirmed'
--
- I Approved purchase order by Supplier for MOB1.
--
- !workflow {model: purchase.order, action: purchase_approve, ref: purchase_order_po11}
--
I check that the order which was initially in the confirmed state has transmit to approved state.
-
- !assert {model: purchase.order, id: purchase_order_po11}:
- - state == 'approved'
+ !assert {model: purchase.order, id: order_purchase11, severity: error, string: Purchase Order should be in Approved state.}:
+ - state == 'approved'
-
- Test for purchase double validation in which Total < Limit Amount.
--
- I create purchase order for MOB1 for 1 quantity.
--
- !record {model: purchase.order, id: purchase_order_po12}:
- company_id: base.main_company
- date_order: '2011-01-02'
- invoice_method: order
- location_id: stock.stock_location_stock
- order_line:
- - date_planned: '2011-01-12'
- name: MOB1
- price_unit: 2000.0
- product_id: 'product_product_mob1'
- product_qty: 1.0
- product_uom: product.product_uom_unit
- state: draft
- partner_address_id: base.res_partner_address_7
- partner_id: base.res_partner_4
- pricelist_id: purchase.list0
--
- Initially purchase order is in the draft state.
+ I confirmed the purchase order of amount of less than Limit amount.
-
- !assert {model: purchase.order, id: purchase_order_po12}:
- - state == 'draft'
+ !workflow {model: purchase.order, action: purchase_confirm, ref: order_purchase12}
-
- I confirm the purchase order for MOB1.
+ I check that the order is in approved state.
-
- !workflow {model: purchase.order, action: purchase_confirm, ref: purchase_order_po12}
--
- I check that the order which was initially in the draft state has transmit to approved state.
--
- !assert {model: purchase.order, id: purchase_order_po12}:
+ !assert {model: purchase.order, id: order_purchase12, severity: error, string: Purchase Order should be in Approved state.}:
- state == 'approved'
-
-
\ No newline at end of file
diff --git a/addons/purchase_requisition/__openerp__.py b/addons/purchase_requisition/__openerp__.py
index d1ec2b1c260..a926b3bfb3a 100644
--- a/addons/purchase_requisition/__openerp__.py
+++ b/addons/purchase_requisition/__openerp__.py
@@ -18,11 +18,11 @@
#
##############################################################################
{
- "name" : "Purchase Requisition",
+ "name" : "Purchase Requisitions",
"version" : "0.1",
"author" : "OpenERP SA",
"category" : "Purchase Management",
- 'complexity': "easy",
+ 'complexity': "normal",
"images" : ['images/purchase_requisitions.jpeg'],
"website" : "http://www.openerp.com",
"description": """
@@ -43,8 +43,10 @@ This new object will regroup and will allow you to easily keep track and order a
"security/ir.model.access.csv","purchase_requisition_sequence.xml"
],
"active": False,
- "test":['test/purchase_requisition_report.yml',
- 'test/purchase_requisition_test.yml',
+ "test":[
+ 'test/purchase_requisition_demo.yml',
+ 'test/purchase_requisition.yml',
+ 'test/cancel_purchase_requisition.yml',
],
"installable": True,
"certificate" : "001023264099823179629",
diff --git a/addons/purchase_requisition/i18n/hr.po b/addons/purchase_requisition/i18n/hr.po
new file mode 100644
index 00000000000..ef664e8d8cd
--- /dev/null
+++ b/addons/purchase_requisition/i18n/hr.po
@@ -0,0 +1,436 @@
+# Croatian translation for openobject-addons
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2011-01-11 11:15+0000\n"
+"PO-Revision-Date: 2011-12-11 22:15+0000\n"
+"Last-Translator: Tomislav Bosnjakovic \n"
+"Language-Team: Croatian \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-12-12 05:17+0000\n"
+"X-Generator: Launchpad (build 14458)\n"
+
+#. module: purchase_requisition
+#: view:purchase.requisition:0
+#: selection:purchase.requisition,state:0
+msgid "In Progress"
+msgstr "U tijeku"
+
+#. module: purchase_requisition
+#: code:addons/purchase_requisition/wizard/purchase_requisition_partner.py:44
+#, python-format
+msgid "No Product in Tender"
+msgstr "Nema artikla u tenderu"
+
+#. module: purchase_requisition
+#: view:purchase.requisition:0
+msgid "Confirm"
+msgstr "Potvrdi"
+
+#. module: purchase_requisition
+#: view:purchase.requisition:0
+#: field:purchase.requisition,user_id:0
+msgid "Responsible"
+msgstr "Odgovoran"
+
+#. module: purchase_requisition
+#: view:purchase.requisition:0
+msgid "Group By..."
+msgstr "Grupiraj po..."
+
+#. module: purchase_requisition
+#: view:purchase.requisition:0
+#: field:purchase.requisition,state:0
+msgid "State"
+msgstr "Status"
+
+#. module: purchase_requisition
+#: view:purchase.requisition:0
+#: selection:purchase.requisition,state:0
+msgid "Draft"
+msgstr "Nacrt"
+
+#. module: purchase_requisition
+#: report:purchase.requisition:0
+msgid "Supplier"
+msgstr "Dobavljač"
+
+#. module: purchase_requisition
+#: field:purchase.requisition,exclusive:0
+msgid "Requisition Type"
+msgstr "Vrsta zahtjeva"
+
+#. module: purchase_requisition
+#: report:purchase.requisition:0
+msgid "Product Detail"
+msgstr "Detalji artikla"
+
+#. module: purchase_requisition
+#: report:purchase.requisition:0
+#: field:purchase.requisition,date_start:0
+msgid "Requisition Date"
+msgstr "Datum zahtjeva"
+
+#. module: purchase_requisition
+#: model:ir.actions.act_window,name:purchase_requisition.action_purchase_requisition_partner
+#: model:ir.actions.report.xml,name:purchase_requisition.report_purchase_requisition
+#: model:ir.model,name:purchase_requisition.model_purchase_requisition
+#: field:product.product,purchase_requisition:0
+#: field:purchase.order,requisition_id:0
+#: view:purchase.requisition:0
+#: field:purchase.requisition.line,requisition_id:0
+#: view:purchase.requisition.partner:0
+msgid "Purchase Requisition"
+msgstr "Zahtjev za nabavom"
+
+#. module: purchase_requisition
+#: model:ir.model,name:purchase_requisition.model_purchase_requisition_line
+msgid "Purchase Requisition Line"
+msgstr "Stavka zahtjeva za nabavom"
+
+#. module: purchase_requisition
+#: model:ir.model,name:purchase_requisition.model_product_product
+#: field:purchase.requisition.line,product_id:0
+msgid "Product"
+msgstr "Artikl"
+
+#. module: purchase_requisition
+#: sql_constraint:purchase.order:0
+msgid "Order Reference must be unique !"
+msgstr "Oznaka naloga mora biti jedinstvena"
+
+#. module: purchase_requisition
+#: report:purchase.requisition:0
+#: field:purchase.requisition,description:0
+msgid "Description"
+msgstr "Opis"
+
+#. module: purchase_requisition
+#: help:product.product,purchase_requisition:0
+msgid ""
+"Check this box so that requisitions generates purchase requisitions instead "
+"of directly requests for quotations."
+msgstr ""
+"Označi ovu kučicu kako bi zahtjev generirao zahtjev za nabavom umjesto "
+"direktno upit."
+
+#. module: purchase_requisition
+#: report:purchase.requisition:0
+msgid "Type"
+msgstr "Vrsta"
+
+#. module: purchase_requisition
+#: field:purchase.requisition,company_id:0
+#: field:purchase.requisition.line,company_id:0
+msgid "Company"
+msgstr "Organizacija"
+
+#. module: purchase_requisition
+#: view:purchase.requisition:0
+msgid "Request a Quotation"
+msgstr "Upit"
+
+#. module: purchase_requisition
+#: selection:purchase.requisition,exclusive:0
+msgid "Multiple Requisitions"
+msgstr "Višestruki zahtjevi"
+
+#. module: purchase_requisition
+#: view:purchase.requisition:0
+msgid "Approved by Supplier"
+msgstr "Odobrio dobavljač"
+
+#. module: purchase_requisition
+#: view:purchase.requisition:0
+msgid "Reset to Draft"
+msgstr "Vrati u nacrt"
+
+#. module: purchase_requisition
+#: model:ir.module.module,description:purchase_requisition.module_meta_information
+msgid ""
+"\n"
+" This module allows you to manage your Purchase Requisition.\n"
+" When a purchase order is created, you now have the opportunity to save "
+"the related requisition.\n"
+" This new object will regroup and will allow you to easily keep track and "
+"order all your purchase orders.\n"
+msgstr ""
+"\n"
+" Ovaj modul omogućuje upravljanje zahtjevima u nabavi.\n"
+" Kad se kreira nabavni nalog, imate priliku snimiti povezani zahtjev.\n"
+" Novi objekt će se pregrupirati i mogućiti vam lako praćenje i "
+"naručivanje svih vaših nabavnih naloga.\n"
+
+#. module: purchase_requisition
+#: field:purchase.requisition.partner,partner_address_id:0
+msgid "Address"
+msgstr "Adresa"
+
+#. module: purchase_requisition
+#: report:purchase.requisition:0
+msgid "Order Reference"
+msgstr "Oznaka narudžbe"
+
+#. module: purchase_requisition
+#: view:purchase.requisition:0
+msgid "Start Date"
+msgstr "Početni datum"
+
+#. module: purchase_requisition
+#: model:ir.actions.act_window,help:purchase_requisition.action_purchase_requisition
+msgid ""
+"A purchase requisition is the step before a request for quotation. In a "
+"purchase requisition (or purchase tender), you can record the products you "
+"need to buy and trigger the creation of RfQs to suppliers. After the "
+"negotiation, once you have reviewed all the supplier's offers, you can "
+"validate some and cancel others."
+msgstr ""
+"Zahtjev u nabavi je korak prije upita. U zahtjevu za nabavom (ili nabavnom "
+"tenderu), možete zabilježiti sve artikle\r\n"
+"koje morate kupiti i pokrenuti kreiranje upita dobavljačima. Nakon pregovora "
+"nakon što se razmotrili sve ponude dobavljača možete potvrditi neke, a "
+"odustati od drugih."
+
+#. module: purchase_requisition
+#: field:purchase.requisition.line,product_qty:0
+msgid "Quantity"
+msgstr "Količina"
+
+#. module: purchase_requisition
+#: model:ir.actions.act_window,name:purchase_requisition.action_purchase_requisition
+#: model:ir.ui.menu,name:purchase_requisition.menu_purchase_requisition_pro_mgt
+msgid "Purchase Requisitions"
+msgstr "Zahtjevi u nabavi"
+
+#. module: purchase_requisition
+#: view:purchase.requisition:0
+msgid "End Date"
+msgstr "Završni datum"
+
+#. module: purchase_requisition
+#: report:purchase.requisition:0
+#: field:purchase.requisition,name:0
+msgid "Requisition Reference"
+msgstr "Oznaka zahtjeva"
+
+#. module: purchase_requisition
+#: field:purchase.requisition,line_ids:0
+msgid "Products to Purchase"
+msgstr "Artikli za nabavu"
+
+#. module: purchase_requisition
+#: field:purchase.requisition,date_end:0
+msgid "Requisition Deadline"
+msgstr "Konačan rok zahtjeva"
+
+#. module: purchase_requisition
+#: view:purchase.requisition:0
+msgid "Search Purchase Requisition"
+msgstr "Pretraži zahtjeve u nabavi"
+
+#. module: purchase_requisition
+#: view:purchase.requisition:0
+msgid "Notes"
+msgstr "Bilješke"
+
+#. module: purchase_requisition
+#: report:purchase.requisition:0
+msgid "Date Ordered"
+msgstr "Datum narudžbe"
+
+#. module: purchase_requisition
+#: help:purchase.requisition,exclusive:0
+msgid ""
+"Purchase Requisition (exclusive): On the confirmation of a purchase order, "
+"it cancels the remaining purchase order.\n"
+"Purchase Requisition(Multiple): It allows to have multiple purchase "
+"orders.On confirmation of a purchase order it does not cancel the remaining "
+"orders"
+msgstr ""
+"Zahtjev u nabavi (ekskluzivni): Prilikom potvrde nabavnog naloga , "
+"poništava preostale nabavne naloge.\n"
+"Zahtjevi u nabavi(Višestruki): Omogućuje više nabavnih naloga. Prilikom "
+"potvrde nabavnog naloga ne poništava preostale naloge."
+
+#. module: purchase_requisition
+#: view:purchase.requisition:0
+msgid "Cancel Purchase Order"
+msgstr "Poništi nabavni nalog"
+
+#. module: purchase_requisition
+#: model:ir.model,name:purchase_requisition.model_purchase_order
+#: view:purchase.requisition:0
+msgid "Purchase Order"
+msgstr "Nalog za nabavu"
+
+#. module: purchase_requisition
+#: code:addons/purchase_requisition/wizard/purchase_requisition_partner.py:44
+#, python-format
+msgid "Error!"
+msgstr "Greška!"
+
+#. module: purchase_requisition
+#: report:purchase.requisition:0
+#: field:purchase.requisition.line,product_uom_id:0
+msgid "Product UoM"
+msgstr "JM proizvoda"
+
+#. module: purchase_requisition
+#: view:purchase.requisition:0
+msgid "Products"
+msgstr "Artikli"
+
+#. module: purchase_requisition
+#: view:purchase.requisition:0
+msgid "Order Date"
+msgstr "Datum naloga"
+
+#. module: purchase_requisition
+#: selection:purchase.requisition,state:0
+msgid "Cancelled"
+msgstr "Poništeno"
+
+#. module: purchase_requisition
+#: report:purchase.requisition:0
+msgid "["
+msgstr "["
+
+#. module: purchase_requisition
+#: model:ir.model,name:purchase_requisition.model_purchase_requisition_partner
+msgid "Purchase Requisition Partner"
+msgstr "Partner za zahtjev u nabavi"
+
+#. module: purchase_requisition
+#: report:purchase.requisition:0
+msgid "]"
+msgstr "]"
+
+#. module: purchase_requisition
+#: report:purchase.requisition:0
+msgid "Quotation Detail"
+msgstr "Detalji upita"
+
+#. module: purchase_requisition
+#: report:purchase.requisition:0
+msgid "Purchase for Requisitions"
+msgstr "Nabava za zahtjev"
+
+#. module: purchase_requisition
+#: model:ir.actions.act_window,name:purchase_requisition.act_res_partner_2_purchase_order
+msgid "Purchase orders"
+msgstr "Nalozi u nabavi"
+
+#. module: purchase_requisition
+#: report:purchase.requisition:0
+#: view:purchase.requisition:0
+#: field:purchase.requisition,origin:0
+msgid "Origin"
+msgstr ""
+
+#. module: purchase_requisition
+#: view:purchase.requisition:0
+msgid "Reference"
+msgstr "Vezna oznaka"
+
+#. module: purchase_requisition
+#: model:ir.model,name:purchase_requisition.model_procurement_order
+msgid "Procurement"
+msgstr "Nabava"
+
+#. module: purchase_requisition
+#: field:purchase.requisition,warehouse_id:0
+msgid "Warehouse"
+msgstr "Skladište"
+
+#. module: purchase_requisition
+#: field:procurement.order,requisition_id:0
+msgid "Latest Requisition"
+msgstr "Zadnji zahtjev"
+
+#. module: purchase_requisition
+#: view:purchase.requisition:0
+msgid "Quotations"
+msgstr "Upiti"
+
+#. module: purchase_requisition
+#: report:purchase.requisition:0
+msgid "Qty"
+msgstr "Kol."
+
+#. module: purchase_requisition
+#: selection:purchase.requisition,exclusive:0
+msgid "Purchase Requisition (exclusive)"
+msgstr "Zahtjev u nabavi (ekskluzivan)"
+
+#. module: purchase_requisition
+#: view:purchase.requisition.partner:0
+msgid "Create Quotation"
+msgstr "Kreiraj upit"
+
+#. module: purchase_requisition
+#: constraint:product.product:0
+msgid "Error: Invalid ean code"
+msgstr "Greška: neispravan EAN kod"
+
+#. module: purchase_requisition
+#: view:purchase.requisition:0
+#: selection:purchase.requisition,state:0
+msgid "Done"
+msgstr "Izvršeno"
+
+#. module: purchase_requisition
+#: view:purchase.requisition.partner:0
+msgid "_Cancel"
+msgstr "_Otkaži"
+
+#. module: purchase_requisition
+#: view:purchase.requisition:0
+msgid "Confirm Purchase Order"
+msgstr "Potvrdi nabavni nalog"
+
+#. module: purchase_requisition
+#: view:purchase.requisition:0
+msgid "Cancel"
+msgstr "Odustani"
+
+#. module: purchase_requisition
+#: field:purchase.requisition.partner,partner_id:0
+msgid "Partner"
+msgstr "Partner"
+
+#. module: purchase_requisition
+#: model:ir.module.module,shortdesc:purchase_requisition.module_meta_information
+msgid "Purchase - Purchase Requisition"
+msgstr "Nabava - Zahtjevi u nabavi"
+
+#. module: purchase_requisition
+#: view:purchase.requisition:0
+msgid "Unassigned"
+msgstr "Nedodjeljen"
+
+#. module: purchase_requisition
+#: view:purchase.order:0
+msgid "Requisition"
+msgstr "Zahtjev"
+
+#. module: purchase_requisition
+#: field:purchase.requisition,purchase_ids:0
+msgid "Purchase Orders"
+msgstr "Nalozi u nabavi"
+
+#. module: purchase_requisition
+#: code:addons/purchase_requisition/wizard/purchase_requisition_partner.py:90
+#, python-format
+msgid ""
+"You have already one %s purchase order for this partner, you must cancel "
+"this purchase order to create a new quotation."
+msgstr ""
+"Već imate jedan %s nabavni nalog za tog partnera. Morate poništiti ovaj "
+"nabavni nalog kako bi kreirali novi upit."
diff --git a/addons/purchase_requisition/purchase_requisition.py b/addons/purchase_requisition/purchase_requisition.py
index d619e3a82f5..cc0956b8755 100644
--- a/addons/purchase_requisition/purchase_requisition.py
+++ b/addons/purchase_requisition/purchase_requisition.py
@@ -19,7 +19,8 @@
# along with this program. If not, see .
#
##############################################################################
-
+from datetime import datetime
+from dateutil.relativedelta import relativedelta
import time
import netsvc
@@ -83,6 +84,89 @@ class purchase_requisition(osv.osv):
self.write(cr, uid, ids, {'state':'done', 'date_end':time.strftime('%Y-%m-%d %H:%M:%S')}, context=context)
return True
+ def _planned_date(self, requisition, delay=0.0):
+ company = requisition.company_id
+ date_planned = False
+ if requisition.date_start:
+ date_planned = datetime.strptime(requisition.date_start, '%Y-%m-%d %H:%M:%S') - relativedelta(days=company.po_lead)
+ else:
+ date_planned = datetime.today() - relativedelta(days=company.po_lead)
+ if delay:
+ date_planned -= relativedelta(days=delay)
+ return date_planned and date_planned.strftime('%Y-%m-%d %H:%M:%S') or False
+
+ def _seller_details(self, cr, uid, requisition_line, supplier, context=None):
+ product_uom = self.pool.get('product.uom')
+ pricelist = self.pool.get('product.pricelist')
+ supplier_info = self.pool.get("product.supplierinfo")
+ product = requisition_line.product_id
+ default_uom_po_id = product.uom_po_id.id
+ qty = product_uom._compute_qty(cr, uid, requisition_line.product_uom_id.id, requisition_line.product_qty, default_uom_po_id)
+ seller_delay = 0.0
+ seller_price = False
+ seller_qty = False
+ for product_supplier in product.seller_ids:
+ if supplier.id == product_supplier.name and qty >= product_supplier.qty:
+ seller_delay = product_supplier.delay
+ seller_qty = product_supplier.qty
+ supplier_pricelist = supplier.property_product_pricelist_purchase or False
+ seller_price = pricelist.price_get(cr, uid, [supplier_pricelist.id], product.id, qty, False, {'uom': default_uom_po_id})[supplier_pricelist.id]
+ if seller_qty:
+ qty = max(qty,seller_qty)
+ date_planned = self._planned_date(requisition_line.requisition_id, seller_delay)
+ return seller_price, qty, default_uom_po_id, date_planned
+
+ def make_purchase_order(self, cr, uid, ids, partner_id, context=None):
+ """
+ Create New RFQ for Supplier
+ """
+ if context is None:
+ context = {}
+ assert partner_id, 'Supplier should be specified'
+ purchase_order = self.pool.get('purchase.order')
+ purchase_order_line = self.pool.get('purchase.order.line')
+ res_partner = self.pool.get('res.partner')
+ fiscal_position = self.pool.get('account.fiscal.position')
+ supplier = res_partner.browse(cr, uid, partner_id, context=context)
+ delivery_address_id = res_partner.address_get(cr, uid, [supplier.id], ['delivery'])['delivery']
+ supplier_pricelist = supplier.property_product_pricelist_purchase or False
+ res = {}
+ for requisition in self.browse(cr, uid, ids, context=context):
+ if supplier.id in filter(lambda x: x, [rfq.state <> 'cancel' and rfq.partner_id.id or None for rfq in requisition.purchase_ids]):
+ raise osv.except_osv(_('Warning'), _('You have already one %s purchase order for this partner, you must cancel this purchase order to create a new quotation.') % supp_record.state)
+ location_id = requisition.warehouse_id.lot_input_id.id
+ purchase_id = purchase_order.create(cr, uid, {
+ 'origin': requisition.name,
+ 'partner_id': supplier.id,
+ 'partner_address_id': delivery_address_id,
+ 'pricelist_id': supplier_pricelist.id,
+ 'location_id': location_id,
+ 'company_id': requisition.company_id.id,
+ 'fiscal_position': supplier.property_account_position and supplier.property_account_position.id or False,
+ 'requisition_id':requisition.id,
+ 'notes':requisition.description,
+ 'warehouse_id':requisition.warehouse_id.id ,
+ })
+ res[requisition.id] = purchase_id
+ for line in requisition.line_ids:
+ product = line.product_id
+ seller_price, qty, default_uom_po_id, date_planned = self._seller_details(cr, uid, line, supplier, context=context)
+ taxes_ids = product.supplier_taxes_id
+ taxes = fiscal_position.map_tax(cr, uid, supplier.property_account_position, taxes_ids)
+ purchase_order_line.create(cr, uid, {
+ 'order_id': purchase_id,
+ 'name': product.partner_ref,
+ 'product_qty': qty,
+ 'product_id': product.id,
+ 'product_uom': default_uom_po_id,
+ 'price_unit': seller_price,
+ 'date_planned': date_planned,
+ 'notes': product.description_purchase,
+ 'taxes_id': [(6, 0, taxes)],
+ }, context=context)
+
+ return res
+
purchase_requisition()
class purchase_requisition_line(osv.osv):
@@ -96,7 +180,7 @@ class purchase_requisition_line(osv.osv):
'product_uom_id': fields.many2one('product.uom', 'Product UoM'),
'product_qty': fields.float('Quantity', digits_compute=dp.get_precision('Product UoM')),
'requisition_id' : fields.many2one('purchase.requisition','Purchase Requisition', ondelete='cascade'),
- 'company_id': fields.many2one('res.company', 'Company', required=True),
+ 'company_id': fields.related('requisition_id','company_id',type='many2one',relation='res.company',string='Company', store=True, readonly=True),
}
def onchange_product_id(self, cr, uid, ids, product_id,product_uom_id, context=None):
@@ -133,7 +217,7 @@ class purchase_order(osv.osv):
proc_obj.write(cr, uid, proc_ids, {'purchase_id': po.id})
wf_service = netsvc.LocalService("workflow")
wf_service.trg_validate(uid, 'purchase.order', order.id, 'purchase_cancel', cr)
- self.pool.get('purchase.requisition').write(cr, uid, [po.requisition_id.id], {'state':'done','date_end':time.strftime('%Y-%m-%d %H:%M:%S')})
+ po.requisition_id.tender_done(context=context)
return res
purchase_order()
diff --git a/addons/purchase_requisition/purchase_requisition_demo.xml b/addons/purchase_requisition/purchase_requisition_demo.xml
index deb25fe9e14..910fc22bc63 100644
--- a/addons/purchase_requisition/purchase_requisition_demo.xml
+++ b/addons/purchase_requisition/purchase_requisition_demo.xml
@@ -6,24 +6,65 @@
+
+
+
+
-
+
- multiple
+ exclusive
-
-
-
-
-
-
+
+ [HDD3] HDD Seagate 7200.8 160GB
+
+
+ 5
+
+
+
+
+
+
+
+
+
+
+
+
+ [HDD3] HDD Seagate 7200.8 160GB
+
+
+
+ 60
+ 5
+
+
+
+
+
+
+
+
+
+
+
+
+ [HDD3] HDD Seagate 7200.8 160GB
+
+
+
+ 50
+ 3
+
+
diff --git a/addons/purchase_requisition/purchase_requisition_view.xml b/addons/purchase_requisition/purchase_requisition_view.xml
index e0f09f6f7d6..bd47d093df0 100644
--- a/addons/purchase_requisition/purchase_requisition_view.xml
+++ b/addons/purchase_requisition/purchase_requisition_view.xml
@@ -174,7 +174,6 @@
diff --git a/addons/purchase_requisition/security/ir.model.access.csv b/addons/purchase_requisition/security/ir.model.access.csv
index ec8c031f88b..4c6b8d8cdde 100644
--- a/addons/purchase_requisition/security/ir.model.access.csv
+++ b/addons/purchase_requisition/security/ir.model.access.csv
@@ -1,7 +1,7 @@
-"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
-"access_purchase_requisition","purchase.requisition","model_purchase_requisition","purchase.group_purchase_user",1,1,1,1
-"access_purchase_requisition_line_purchase_user","purchase.requisition.line","model_purchase_requisition_line","purchase.group_purchase_user",1,1,1,1
-"access_purchase_requisition_manager","purchase.requisition manager","model_purchase_requisition","purchase.group_purchase_manager",1,0,0,0
-"access_purchase_requisition_line_manager","purchase.requisition.line manager","model_purchase_requisition_line","purchase.group_purchase_manager",1,0,0,0
-"access_purchase_requisition_stock_manager","purchase.requisition","model_purchase_requisition","stock.group_stock_manager",1,0,1,0
-"access_purchase_requisition_line_stock_manager","purchase.requisition.line","model_purchase_requisition_line","stock.group_stock_manager",1,0,1,0
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+access_purchase_requisition,purchase.requisition,model_purchase_requisition,purchase.group_purchase_user,1,1,1,1
+access_purchase_requisition_line_purchase_user,purchase.requisition.line,model_purchase_requisition_line,purchase.group_purchase_user,1,1,1,1
+access_purchase_requisition_manager,purchase.requisition manager,model_purchase_requisition,purchase.group_purchase_manager,1,0,0,0
+access_purchase_requisition_line_manager,purchase.requisition.line manager,model_purchase_requisition_line,purchase.group_purchase_manager,1,0,0,0
+access_purchase_requisition_stock_manager,purchase.requisition,model_purchase_requisition,stock.group_stock_manager,1,0,1,0
+access_purchase_requisition_line_stock_manager,purchase.requisition.line,model_purchase_requisition_line,stock.group_stock_manager,1,0,1,0
diff --git a/addons/purchase_requisition/security/purchase_tender.xml b/addons/purchase_requisition/security/purchase_tender.xml
index af8a1330e2d..71c54b973e3 100644
--- a/addons/purchase_requisition/security/purchase_tender.xml
+++ b/addons/purchase_requisition/security/purchase_tender.xml
@@ -2,12 +2,20 @@
+
+ Purchase Requisition
+
+ 9
+
+
- Purchase Requisition / User
+ User
+
- Purchase Requisition / Manager
+ Manager
+
diff --git a/addons/purchase_requisition/test/cancel_purchase_requisition.yml b/addons/purchase_requisition/test/cancel_purchase_requisition.yml
new file mode 100644
index 00000000000..389c328a5cf
--- /dev/null
+++ b/addons/purchase_requisition/test/cancel_purchase_requisition.yml
@@ -0,0 +1,26 @@
+-
+ I cancel requisition.
+-
+ !python {model: purchase.requisition}: |
+ self.tender_cancel(cr, uid, [ref("requisition1")])
+-
+ I check requisition after cancelled.
+-
+ !assert {model: purchase.requisition, id: requisition1}:
+ - state == 'cancel'
+-
+ I reset requisition as "New".
+-
+ !python {model: purchase.requisition}: |
+ self.tender_reset(cr, uid, [ref('requisition1')])
+-
+ I duplicate requisition.
+-
+ !python {model: purchase.requisition}: |
+ self.copy(cr, uid, ref('requisition1'))
+-
+ I delete requisition.
+-
+ !python {model: purchase.order}: |
+ self.unlink(cr, uid, [ref("requisition1")])
+
diff --git a/addons/purchase_requisition/test/purchase_requisition.yml b/addons/purchase_requisition/test/purchase_requisition.yml
index fb5fa774fc3..a2e5b743965 100644
--- a/addons/purchase_requisition/test/purchase_requisition.yml
+++ b/addons/purchase_requisition/test/purchase_requisition.yml
@@ -1,189 +1,90 @@
-
-
- In order to test the purchase requisition module, I will do a sale order -> purchase_requisition ->
- purchase flow and I will buy the required products at two different suppliers.
+ I create the procurement order and run that procurement.
-
- I start by creating a new product 'Laptop ACER', which is purchased at Asustek, in MTO,
- with the generation of purchase requisitions.
+ !python {model: make.procurement}: |
+ context.update({'active_model':'product.product', 'active_ids': [ref('product.product_product_hdd3')], 'active_id': ref('product.product_product_hdd3')})
-
- !record {model: product.product, id: product_product_laptopacer0}:
- categ_id: product.product_category_3
- cost_method: standard
- mes_type: fixed
- name: Laptop ACER
- procure_method: make_to_order
- purchase_requisition: 1
- seller_ids:
- - delay: 1
- name: base.res_partner_asus
- qty: 5.0
- min_qty: 1.0
- supply_method: buy
- type: product
+ !record {model: make.procurement, id: procurement_product_hdd3}:
+ product_id: product.product_product_hdd3
+ qty: 15
uom_id: product.product_uom_unit
- uom_po_id: product.product_uom_unit
- volume: 0.0
- warranty: 0.0
- weight: 0.0
- weight_net: 0.0
- list_price: 100.0
+ warehouse_id: stock.stock_warehouse_shop0
-
- Then I sell 5 Laptop ACER to the customer Agrolait, sale order TEST/TENDER/0001.
+ !python {model: make.procurement}: |
+ self.make_procurement(cr, uid, [ref('procurement_product_hdd3')], context)
-
- !record {model: sale.order, id: sale_order_testtender0}:
- date_order: !eval time.strftime('%Y-%m-%d')
- invoice_quantity: order
- name: TEST/TENDER/0001
- order_line:
- - name: Laptop ACER
- price_unit: 100.0
- product_uom: product.product_uom_unit
- product_uom_qty: 5.0
- state: draft
- delay: 7.0
- product_id: product_product_laptopacer0
- product_uos_qty: 5.0
- th_weight: 0.0
- type: make_to_order
- order_policy: manual
- partner_id: base.res_partner_agrolait
- partner_invoice_id: base.res_partner_address_8
- partner_order_id: base.res_partner_address_8
- partner_shipping_id: base.res_partner_address_8
- picking_policy: direct
- pricelist_id: product.list0
- shop_id: sale.shop
+ I run the scheduler.
-
- I confirm the sale order.
+ !python {model: procurement.order}: |
+ self.run_scheduler(cr, uid)
-
- !workflow {model: sale.order, action: order_confirm, ref: sale_order_testtender0}
+ I check requisition details which created after run procurement.
-
- I launch the scheduler to compute all procurements, and specify all requisitions orders.
+ !python {model: procurement.order}: |
+ procurement_ids = self.search(cr, uid, [('requisition_id','!=', False)])
+ for procurement in self.browse(cr, uid, procurement_ids, context=context):
+ requisition = procurement.requisition_id
+ assert requisition.date_end == procurement.date_planned, "End date is not correspond."
+ assert len(requisition.line_ids) == 1, "Requisition Lines should be one."
+ line = requisition.line_ids[0]
+ assert line.product_id.id == procurement.product_id.id, "Product is not correspond."
+ assert line.product_uom_id.id == procurement.product_uom.id, "UOM is not correspond."
+ assert line.product_qty == procurement.product_qty, "Quantity is not correspond."
-
- !python {model: procurement.order.compute.all}: |
- proc_obj = self.pool.get('procurement.order')
- proc_obj._procure_confirm(cr,uid)
+ I open another requisition.
-
- On the purchase requisition, I create a new purchase order for the supplier 'DistriPC' by clicking on
- the button 'New RfQ'. This opens a window to ask me the supplier and I set DistriPC .
--
- !record {model: purchase.requisition.partner, id: purchase_requisition_partner_0}:
- partner_address_id: base.res_partner_address_7
- partner_id: base.res_partner_4
--
- I create a new purchase order.
+ !python {model: purchase.requisition}: |
+ self.tender_in_progress(cr, uid, [ref("requisition1")], context=context)
+-
+ Supplier send one RFQ so I create requisition request of that supplier.
-
!python {model: purchase.requisition.partner}: |
- req_obj = self.pool.get('purchase.requisition')
- ids =req_obj.search(cr, uid, [('origin','=','Laptop ACER')])
- self.create_order(cr, uid, [ref("purchase_requisition_partner_0")], {"lang":
- 'en_US', "active_model": "purchase.requisition", "tz": False, "record_id":
- 1, "active_ids": ids, "active_id": ids[0], })
-
+ context.update({"active_model": "purchase.requisition","active_ids": [ref("requisition1")],"active_id": ref("requisition1")})
+-
+ !record {model: purchase.requisition.partner, id: requisition_partner_0}:
+ partner_id: base.res_partner_desertic_hispafuentes
+-
+ !python {model: purchase.requisition.partner}: |
+ self.create_order(cr, uid, [ref("requisition_partner_0")], context=context)
-
- I check that I have two purchase orders on the purchase requisition.
--
- !python {model: purchase.order}: |
- from tools.translate import _
- order_ids =self.search(cr, uid, [('origin','=','TEST/TENDER/0001')])
- ids=len(order_ids)
- assert(ids == 2), _('Purchase Order not Created')
-
--
- I set the purchase requisition as 'Not Exclusive'.
--
- !python {model: purchase.requisition}: |
- ids =self.search(cr, uid, [('origin','=','Laptop ACER')])
- self.write(cr,uid,ids[0],{'exclusive': 'multiple' })
--
- I change the quantities so that the purchase order for DistriPC includes 3 pieces and the
- purchase order for Asustek includes 2 pieces.
+ I check that the RFQ details which created for supplier.
-
!python {model: purchase.order}: |
- line_obj=self.pool.get('purchase.order.line')
- partner_obj=self.pool.get('res.partner')
- requistion_obj=self.pool.get('purchase.requisition')
- requistion_ids =requistion_obj.search(cr, uid, [('origin','=','Laptop ACER')])
- partner_id1=partner_obj.search(cr,uid,[('name','=','ASUStek')])[0]
- partner_id2=partner_obj.search(cr,uid,[('name','=','Distrib PC')])[0]
- purchase_id1= self.search(cr, uid, [('partner_id','=',partner_id1),('requisition_id','in',requistion_ids)])
- purchase_id2= self.search(cr, uid, [('partner_id','=',partner_id2),('requisition_id','in',requistion_ids)])
- order_line1=self.browse(cr, uid, purchase_id1, context)[0].order_line[0].id
- order_line2=self.browse(cr, uid, purchase_id2, context)[0].order_line[0].id
- line_obj.write(cr, uid, order_line1, {'product_qty':2})
- line_obj.write(cr, uid, order_line2, {'product_qty':3})
+ purchase_requisition = self.pool.get("purchase.requisition")
+ purchase_ids = self.search(cr, uid, [('requisition_id','=',ref("requisition1"))])
+ assert purchase_ids, "RFQ is not created."
+ rfq = self.browse(cr, uid, purchase_ids[0], context=context)
+ requisition = rfq.requisition_id
+ supplier = rfq.partner_id
+ assert supplier.id == ref('base.res_partner_desertic_hispafuentes'), "RFQ Partner is not correspond."
+ assert len(rfq.order_line) == len(requisition.line_ids), "Lines are not correspond."
+ for rfq_line in rfq.order_line:
+ for line in requisition.line_ids:
+ if rfq_line.product_id.id == line.product_id.id:
+ seller_price, qty, default_uom_po_id, date_planned = purchase_requisition._seller_details(cr, uid, line, supplier, context=context)
+ assert rfq_line.product_qty == qty, "Quantity is not correspond."
+ assert rfq_line.product_uom.id == default_uom_po_id, "UOM is not correspond."
+ assert rfq_line.price_unit == seller_price, "Unit Price is not correspond."
-
- I confirm and validate both purchase orders.
+ I confirmed RFQ which has best price.
-
!python {model: purchase.order}: |
- order_ids= self.search(cr, uid, [])
- import netsvc
- wf_service = netsvc.LocalService("workflow")
- for id in order_ids:
- wf_service.trg_validate(uid, 'purchase.order',id,'purchase_confirm', cr)
- wf_service.trg_validate(uid, 'purchase.order',id,'purchase_approve', cr)
--
- I check that the delivery order of the customer is in state 'Waiting Goods'.
--
- !python {model: stock.picking }: |
- from tools.translate import _
- picking_id = self.search(cr, uid, [('origin','=','TEST/TENDER/0001')])
- if picking_id:
- pick=self.browse(cr,uid,picking_id[0])
- assert (pick.state =='confirmed'),_('Picking is not in confirm state.')
- assert (pick.move_lines[0].state == 'waiting'), _('Stock Move is not Waiting state.')
+ import netsvc
+ wf_service = netsvc.LocalService("workflow")
+ purchase = self.browse(cr, uid, ref('rfq2'), context=context)
+ wf_service.trg_validate(uid, 'purchase.order', purchase.id, 'purchase_confirm', cr)
-
- I receive the order of the supplier Asustek from the Incoming Products menu.
+ I check status of requisition after confirmed best RFQ.
-
- !python {model: stock.picking }: |
- import time
- partner_obj=self.pool.get('res.partner')
- order_obj=self.pool.get('purchase.order')
- partner_id=partner_obj.search(cr,uid,[('name','=','ASUStek')])[0]
- picking_id = self.search(cr, uid, [('address_id.partner_id','=',partner_id),('type','=','in')])
- if picking_id:
- pick=self.browse(cr,uid,picking_id[0])
- move =pick.move_lines[0]
- partial_datas = {
- 'partner_id': pick.address_id.partner_id.id,
- 'address_id': pick.address_id.id,
- 'delivery_date' : time.strftime('%Y-%m-%d'),
- }
- partial_datas['move%s'%(move.id)]= {
- 'product_id': move.product_id.id,
- 'product_qty': move.product_qty,
- 'product_uom': move.product_uom.id,
- }
- self.do_partial(cr, uid, picking_id,partial_datas)
+ !python {model: purchase.requisition}: |
+ requisition = self.browse(cr, uid, ref('requisition1'), context=context)
+ requisition.state == 'done', "Requisition should be closed."
-
- I receive the order of the supplier DistriPC from the Incoming Shipments menu.
--
- !python {model: stock.picking }: |
- import time
- partner_id=self.pool.get('res.partner').search(cr,uid,[('name','=','Distrib PC')])[0]
- picking_id = self.search(cr, uid, [('address_id.partner_id','=',partner_id),('type','=','in')])
- if picking_id:
- pick=self.browse(cr,uid,picking_id[0])
- move =pick.move_lines[0]
- partial_datas = {
- 'partner_id':pick.address_id.partner_id.id,
- 'address_id': pick.address_id.id,
- 'delivery_date' : time.strftime('%Y-%m-%d'),
- }
- partial_datas['move%s'%(move.id)]= {
- 'product_id': move.product_id.id,
- 'product_qty': move.product_qty,
- 'product_uom': move.product_uom.id,
- }
- self.do_partial(cr, uid, picking_id,partial_datas)
--
- I check that the delivery order of the customer is in the state Available.
--
- !python {model: stock.picking }: |
- from tools.translate import _
- picking_id = self.search(cr, uid, [('origin','=','TEST/TENDER/0001'),('type','=','out')])
- if picking_id:
- pick=self.browse(cr,uid,picking_id[0])
- assert(pick.state == 'assigned'), _('Picking is not in available state')
-
+ I print a Requisition report
+-
+ !python {model: purchase.requisition}: |
+ import netsvc, tools, os
+ (data, format) = netsvc.LocalService('report.purchase.requisition').create(cr, uid, [ref('purchase_requisition.requisition1')], {}, {})
+ if tools.config['test_report_directory']:
+ file(os.path.join(tools.config['test_report_directory'], 'purchase_requisition-purchase_requisition_report.'+format), 'wb+').write(data)
diff --git a/addons/purchase_requisition/test/purchase_requisition_demo.yml b/addons/purchase_requisition/test/purchase_requisition_demo.yml
new file mode 100755
index 00000000000..42913f3e96e
--- /dev/null
+++ b/addons/purchase_requisition/test/purchase_requisition_demo.yml
@@ -0,0 +1,10 @@
+-
+ In order to test process of the purchase requisition ,I create requisition
+-
+ !record {model: purchase.requisition, id: requisition1}:
+ exclusive: exclusive
+ line_ids:
+ - product_id: product.product_product_cpu1
+ product_qty: 10.0
+ product_uom_id: product.product_uom_unit
+
diff --git a/addons/purchase_requisition/test/purchase_requisition_exclusive.yml b/addons/purchase_requisition/test/purchase_requisition_exclusive.yml
deleted file mode 100644
index 1ab9bca9493..00000000000
--- a/addons/purchase_requisition/test/purchase_requisition_exclusive.yml
+++ /dev/null
@@ -1,113 +0,0 @@
--
- In order to test the purchase requisition module, I will do a sale order -> purchase_requisition ->
- purchase flow and I will buy the required products at two different suppliers.
--
- I start by creating a new product 'Laptop ACER', which is purchased at Asustek, in MTO,
- with the generation of purchase requisitions.
--
- !record {model: product.product, id: product_product_laptopacer1}:
- categ_id: product.product_category_3
- cost_method: standard
- list_price: 1000.0
- mes_type: fixed
- name: Laptop ACER1
- procure_method: make_to_order
- purchase_requisition: 1
- seller_ids:
- - delay: 1
- name: base.res_partner_asus
- qty: 5.0
- min_qty: 1.0
- supply_method: buy
- type: product
- uom_id: product.product_uom_unit
- uom_po_id: product.product_uom_unit
--
- Then I sell 5 Laptop ACER to the customer Agrolait, sale order TEST/TENDER/0002
--
- !record {model: sale.order, id: sale_order_testtender1}:
- date_order: !eval time.strftime('%Y-%m-%d')
- invoice_quantity: order
- name: TEST/TENDER/0002
- order_line:
- - name: Laptop ACER1
- price_unit: 1000.0
- product_uom: product.product_uom_unit
- product_uom_qty: 5.0
- state: draft
- 'delay': 7.0
- 'product_id': product_product_laptopacer1
- 'type': make_to_order
- order_policy: manual
- partner_id: base.res_partner_agrolait
- partner_invoice_id: base.res_partner_address_8
- partner_order_id: base.res_partner_address_8
- partner_shipping_id: base.res_partner_address_8
- picking_policy: direct
- pricelist_id: product.list0
- shop_id: sale.shop
--
- I confirm sale order.
--
- !workflow {model: sale.order, action: order_confirm, ref: sale_order_testtender1}
--
- I launch the scheduler to compute all procurements, and planify all requisitions orders.
--
- !python {model: procurement.order.compute.all}: |
- proc_obj = self.pool.get('procurement.order')
- proc_obj._procure_confirm(cr,uid)
--
- I should find a purchase requisition with the origin 'TEST/TENDER/0002', that includes a request for
- 5 Laptop ACER, and a purchase order on the default supplier for this product.
--
- !python {model: purchase.requisition}: |
- requisition_ids =self.search(cr, uid, [('origin','=','Laptop ACER1')])
- ids=len(requisition_ids)
- assert len(requisition_ids), "Purchase requisition hasn't Created"
--
- On the purchase requisition, I create a new purchase order for the supplier 'DistriPC' by clicking on
- the button 'New Request for Quotation'. This opens a window to ask me the supplier and I set DistriPC .
--
- I Create purchase.requisition.partner .
--
- !record {model: purchase.requisition.partner, id: purchase_requisition_partner_0}:
- partner_address_id: base.res_partner_address_7
- partner_id: base.res_partner_4
--
- I create a new purchase order for the supplier 'DistriPC'.
--
- !python {model: purchase.requisition.partner}: |
- req_obj = self.pool.get('purchase.requisition')
- ids =req_obj.search(cr, uid, [('origin','=','Laptop ACER1')])
- self.create_order(cr, uid, [ref("purchase_requisition_partner_0")], {"lang":
- 'en_US', "active_model": "purchase.requisition", "tz": False, "record_id":
- 1, "active_ids": ids, "active_id": ids[0], })
--
- I set the purchase requisition as 'Exclusive'
--
- !python {model: purchase.requisition}: |
- ids =self.search(cr, uid, [('origin','=','Laptop ACER1')])
- self.write(cr,uid,ids[0],{'exclusive': 'exclusive' })
--
- I confirm and validate the Request for Quotation of ASUStek.
--
- !python {model: purchase.order}: |
- partner_id=self.pool.get('res.partner').search(cr,uid,[('name','=','ASUStek')])[0]
- req_obj = self.pool.get('purchase.requisition')
- ids =req_obj.search(cr, uid, [('origin','=','Laptop ACER1')])
- purchase_id= self.search(cr, uid, [('partner_id','=',partner_id),('requisition_id','in',ids)])[0]
- import netsvc
- wf_service = netsvc.LocalService("workflow")
- if purchase_id:
- wf_service.trg_validate(uid, 'purchase.order',purchase_id,'purchase_confirm', cr)
- wf_service.trg_validate(uid, 'purchase.order',purchase_id,'purchase_approve', cr)
--
- I check that Request for Quotation of DistriPC is cancelled.
--
- !python {model: purchase.order}: |
- partner_id=self.pool.get('res.partner').search(cr,uid,[('name','=','Distrib PC')])[0]
- req_obj = self.pool.get('purchase.requisition')
- ids =req_obj.search(cr, uid, [('origin','=','Laptop ACER1')])
- purchase_id= self.search(cr, uid, [('partner_id','=',partner_id),('requisition_id','in',ids)])[0]
- state=self.browse(cr,uid,purchase_id).state
- assert (state=='cancel')
diff --git a/addons/purchase_requisition/test/purchase_requisition_report.yml b/addons/purchase_requisition/test/purchase_requisition_report.yml
deleted file mode 100644
index 29edea96a8a..00000000000
--- a/addons/purchase_requisition/test/purchase_requisition_report.yml
+++ /dev/null
@@ -1,8 +0,0 @@
--
- In order to test the PDF reports defined on Purchase Requisition, we will print a Requisition report
--
- !python {model: purchase.requisition}: |
- import netsvc, tools, os
- (data, format) = netsvc.LocalService('report.purchase.requisition').create(cr, uid, [ref('purchase_requisition.order_purchase_requisition1')], {}, {})
- if tools.config['test_report_directory']:
- file(os.path.join(tools.config['test_report_directory'], 'purchase_requisition-purchase_requisition_report.'+format), 'wb+').write(data)
diff --git a/addons/purchase_requisition/test/purchase_requisition_test.yml b/addons/purchase_requisition/test/purchase_requisition_test.yml
deleted file mode 100755
index 403eaca04fc..00000000000
--- a/addons/purchase_requisition/test/purchase_requisition_test.yml
+++ /dev/null
@@ -1,166 +0,0 @@
--
- In order to test the purchase requisition flow,I start by creating a new product 'MOB1'
--
- !record {model: product.product, id: product_product_mob1}:
- name: MOB1
- categ_id: product.product_category_3
- cost_method: standard
- mes_type: fixed
- price_margin: 2.0
- procure_method: make_to_stock
- property_stock_inventory: stock.location_inventory
- property_stock_procurement: stock.location_procurement
- property_stock_production: stock.location_production
- standard_price: 2000.0
- supply_method: buy
- type: product
- uom_id: product.product_uom_unit
- uom_po_id: product.product_uom_unit
- volume: 0.0
- warranty: 0.0
- weight: 0.0
- weight_net: 0.0
--
- I create purchase requisition for MOB1 for 1 quantity.
--
- !record {model: purchase.requisition, id: purchase_requisition_te0}:
- company_id: base.main_company
- exclusive: multiple
- line_ids:
- - company_id: base.main_company
- product_id: product_product_mob1
- product_qty: 10.0
- product_uom_id: product.product_uom_unit
- name: TE00009
--
- Initially purchase requisition is in draft state.
--
- !assert {model: purchase.requisition, id: purchase_requisition_te0}:
- - state == 'draft'
--
- Copy purchase requisition which is in draft state than confirm and Done it.
--
- !python {model: purchase.requisition}: |
- copy_id = self.copy(cr, uid, ref("purchase_requisition_te0"))
- self.tender_cancel(cr, uid, [copy_id], context=None)
- self.tender_reset(cr, uid, [copy_id], context=None)
- self.tender_in_progress(cr, uid, [copy_id], context=None)
- self.tender_done(cr, uid, [copy_id], context=None)
--
- I confirm the purchase requisition for MOB1.
--
- !python {model: purchase.requisition}: |
- self.tender_in_progress(cr, uid, [ref("purchase_requisition_te0")])
--
- I check that the purchase requisition which was initially in the draft state has transmit to In Progress after confirm it.
--
- !assert {model: purchase.requisition, id: purchase_requisition_te0}:
- - state == 'in_progress'
--
- In order to create a purchase order for 'Axelor', i click on the wizard 'Request a Quotation' and create record for wizard.
--
- !record {model: purchase.requisition.partner, id: purchase_requisition_partner_0}:
- partner_address_id: base.res_partner_address_3000
- partner_id: base.res_partner_desertic_hispafuentes
--
- I click on 'Create Quotation' for creating PO.
--
- !python {model: purchase.requisition.partner}: |
- self.create_order(cr, uid, [ref("purchase_requisition_partner_0")], {"active_model": "purchase.requisition",
- "active_ids": [ref("purchase_requisition_te0")],"active_id": ref("purchase_requisition_te0"), })
--
- I confirm the purchase order of Axelor.
--
- !python {model: purchase.order}: |
- purchase_id= self.search(cr, uid, [('requisition_id','=',ref("purchase_requisition_te0"))])
- import netsvc
- wf_service = netsvc.LocalService("workflow")
- if purchase_id:
- wf_service.trg_validate(uid, 'purchase.order',purchase_id[0],'purchase_confirm', cr)
- wf_service.trg_validate(uid, 'purchase.order',purchase_id[0],'purchase_approve', cr)
--
- I check that Quotation of Axelor is Approved.
--
- !python {model: purchase.order}: |
- purchase_id= self.search(cr, uid, [('requisition_id','=',ref("purchase_requisition_te0"))])[0]
- state=self.browse(cr,uid,purchase_id).state
- assert (state=='approved')
--
- I click on Done button
--
- !python {model: purchase.requisition}: |
- self.tender_done(cr, uid, [ref("purchase_requisition_te0")],)
--
- I check that after click on Done button state is in done.
--
- !assert {model: purchase.requisition, id: purchase_requisition_te0}:
- - state == 'done'
--
- In order to test the purchase requisition flow for Requisition Type is exclusive
--
- I create purchase requisition for Requisition Type is exclusive
--
- !record {model: purchase.requisition, id: purchase_requisition_ex1}:
- company_id: base.main_company
- exclusive: exclusive
- line_ids:
- - company_id: base.main_company
- product_id: product_product_mob1
- product_qty: 10.0
- product_uom_id: product.product_uom_unit
- name: TE000010
--
- I Create a First Purchase Order for the supplier 'Distrib PC'.
--
- !record {model: purchase.requisition.partner, id: purchase_requisition_partner_1}:
- partner_address_id: base.res_partner_address_7
- partner_id: base.res_partner_4
--
- I create Quotations For supplier 'Distrib PC'.
--
- !python {model: purchase.requisition.partner}: |
- self.create_order(cr, uid, [ref("purchase_requisition_partner_1")], {"active_model": "purchase.requisition",
- "active_ids": [ref("purchase_requisition_ex1")],"active_id": ref("purchase_requisition_ex1"), })
--
- I Create a Second Purchase Order for the supplier ASUStek.
--
- !record {model: purchase.requisition.partner, id: purchase_requisition_partner_2}:
- partner_address_id: base.res_partner_address_tang
- partner_id: base.res_partner_asus
--
- I create Quotations For supplier 'ASUStek'.
--
- !python {model: purchase.requisition.partner}: |
- self.create_order(cr, uid, [ref("purchase_requisition_partner_2")], {"active_model": "purchase.requisition",
- "active_ids": [ref("purchase_requisition_ex1")],"active_id": ref("purchase_requisition_ex1"), })
--
- I check that Initially purchase requisition is draft state.
--
- !assert {model: purchase.requisition, id: purchase_requisition_ex1}:
- - state == 'draft'
--
- I confirm the Second purchase order of ASUStek, than check that Quotation is Approved.
--
- !python {model: purchase.order}: |
- purchase_id= self.search(cr, uid, [('partner_id','=',ref("base.res_partner_asus")),('requisition_id','=',ref("purchase_requisition_ex1"))])
- import netsvc
- wf_service = netsvc.LocalService("workflow")
- if purchase_id:
- wf_service.trg_validate(uid, 'purchase.order',purchase_id[0],'purchase_confirm', cr)
- wf_service.trg_validate(uid, 'purchase.order',purchase_id[0],'purchase_approve', cr)
- state=self.browse(cr,uid,purchase_id[0]).state
- assert (state=='approved')
-
--
- I check that Quotation of Distrib PC is cancelled.
--
- !python {model: purchase.order}: |
- partner_id=self.pool.get('res.partner').search(cr,uid,[('name','=','Distrib PC')])[0]
- purchase_id= self.search(cr, uid, [('partner_id','=',partner_id),('requisition_id','=',ref("purchase_requisition_ex1"))])[0]
- state=self.browse(cr,uid,purchase_id).state
- assert (state=='cancel')
--
- I check that Purchase Requisition is Done.
--
- !assert {model: purchase.requisition, id: purchase_requisition_ex1}:
- - state == 'done'
diff --git a/addons/purchase_requisition/wizard/purchase_requisition_partner.py b/addons/purchase_requisition/wizard/purchase_requisition_partner.py
index 766e0adb75a..043ed749f4b 100644
--- a/addons/purchase_requisition/wizard/purchase_requisition_partner.py
+++ b/addons/purchase_requisition/wizard/purchase_requisition_partner.py
@@ -20,8 +20,6 @@
##############################################################################
import time
-from datetime import datetime
-from dateutil.relativedelta import relativedelta
from osv import fields, osv
from osv.orm import browse_record, browse_null
from tools.translate import _
@@ -31,7 +29,7 @@ class purchase_requisition_partner(osv.osv_memory):
_description = "Purchase Requisition Partner"
_columns = {
'partner_id': fields.many2one('res.partner', 'Partner', required=True,domain=[('supplier', '=', True)]),
- 'partner_address_id':fields.many2one('res.partner.address', 'Address', required=True),
+ 'partner_address_id':fields.many2one('res.partner.address', 'Address'),
}
def view_init(self, cr, uid, fields_list, context=None):
@@ -42,7 +40,7 @@ class purchase_requisition_partner(osv.osv_memory):
tender = self.pool.get('purchase.requisition').browse(cr, uid, record_id, context=context)
if not tender.line_ids:
raise osv.except_osv(_('Error!'), _('No Product in Tender'))
- True
+ return res
def onchange_partner_id(self, cr, uid, ids, partner_id):
if not partner_id:
@@ -52,94 +50,9 @@ class purchase_requisition_partner(osv.osv_memory):
return {'value':{'partner_address_id': addr['default']}}
def create_order(self, cr, uid, ids, context=None):
- """
- To Create a purchase orders .
-
- @param self: The object pointer.
- @param cr: A database cursor
- @param uid: ID of the user currently logged in
- @param ids: the ID or list of IDs
- @param context: A standard dictionary
- @return: {}
-
- """
- if context is None:
- context = {}
- record_ids = context and context.get('active_ids', False)
- if record_ids:
- data = self.browse(cr, uid, ids,context=context)[0]
- company = self.pool.get('res.users').browse(cr, uid, uid, context).company_id
- order_obj = self.pool.get('purchase.order')
- order_line_obj = self.pool.get('purchase.order.line')
- partner_obj = self.pool.get('res.partner')
- tender_line_obj = self.pool.get('purchase.requisition.line')
- pricelist_obj = self.pool.get('product.pricelist')
- prod_obj = self.pool.get('product.product')
- tender_obj = self.pool.get('purchase.requisition')
- acc_pos_obj = self.pool.get('account.fiscal.position')
- partner_id = data.partner_id.id
- supplier_data = data.partner_id
- address_id = partner_obj.address_get(cr, uid, [partner_id], ['delivery'])['delivery']
- list_line=[]
- purchase_order_line={}
- for tender in tender_obj.browse(cr, uid, record_ids, context=context):
- for supp_record in tender.purchase_ids:
- if supp_record.partner_id.id == partner_id and supp_record.state <> 'cancel':
- raise osv.except_osv(_('Warning'), _('You have already one %s purchase order for this partner, you must cancel this purchase order to create a new quotation.') % supp_record.state)
- for line in tender.line_ids:
- partner_list = sorted([(partner.sequence, partner) for partner in line.product_id.seller_ids if partner])
- partner_rec = partner_list and partner_list[0] and partner_list[0][1] or False
- uom_id = line.product_id.uom_po_id and line.product_id.uom_po_id.id or False
-
- if tender.date_start:
- newdate = datetime.strptime(tender.date_start, '%Y-%m-%d %H:%M:%S') - relativedelta(days=company.po_lead)
- else:
- newdate = datetime.today() - relativedelta(days=company.po_lead)
- delay = partner_rec and partner_rec.delay or 0.0
- if delay:
- newdate -= relativedelta(days=delay)
-
- partner = partner_rec and partner_rec.name or supplier_data
- pricelist_id = partner.property_product_pricelist_purchase and partner.property_product_pricelist_purchase.id or False
- price = pricelist_obj.price_get(cr, uid, [pricelist_id], line.product_id.id, line.product_qty, False, {'uom': uom_id})[pricelist_id]
- product = prod_obj.browse(cr, uid, line.product_id.id, context=context)
- location_id = self.pool.get('stock.warehouse').read(cr, uid, [tender.warehouse_id.id], ['lot_input_id'])[0]['lot_input_id'][0]
-
- purchase_order_line= {
- 'name': product.partner_ref,
- 'product_qty': line.product_qty,
- 'product_id': line.product_id.id,
- 'product_uom': uom_id,
- 'price_unit': price,
- 'date_planned': newdate.strftime('%Y-%m-%d %H:%M:%S'),
- 'notes': product.description_purchase,
- }
- taxes_ids = line.product_id.product_tmpl_id.supplier_taxes_id
- taxes = acc_pos_obj.map_tax(cr, uid, partner.property_account_position, taxes_ids)
- purchase_order_line.update({
- 'taxes_id': [(6,0,taxes)]
- })
- list_line.append(purchase_order_line)
- purchase_id = order_obj.create(cr, uid, {
- 'origin': tender.purchase_ids and tender.purchase_ids[0].origin or tender.name,
- 'partner_id': partner_id,
- 'partner_address_id': address_id,
- 'pricelist_id': pricelist_id,
- 'location_id': tender.purchase_ids and tender.purchase_ids[0].location_id.id or line.product_id.product_tmpl_id.property_stock_production.id,
- 'company_id': tender.company_id.id,
- 'fiscal_position': partner.property_account_position and partner.property_account_position.id or False,
- 'requisition_id':tender.id,
- 'notes':tender.description,
- 'warehouse_id':tender.warehouse_id.id and tender.warehouse_id.id ,
- 'location_id':location_id,
- 'company_id':tender.company_id.id,
- })
- order_ids=[]
- for order_line in list_line:
- order_line.update({
- 'order_id': purchase_id
- })
- order_line_obj.create(cr,uid,order_line)
+ active_ids = context and context.get('active_ids', [])
+ data = self.browse(cr, uid, ids, context=context)[0]
+ self.pool.get('purchase.requisition').make_purchase_order(cr, uid, active_ids, data.partner_id.id, context=context)
return {'type': 'ir.actions.act_window_close'}
purchase_requisition_partner()
diff --git a/addons/report_designer/__openerp__.py b/addons/report_designer/__openerp__.py
index 77b37fd507b..45af2e956b8 100644
--- a/addons/report_designer/__openerp__.py
+++ b/addons/report_designer/__openerp__.py
@@ -25,6 +25,7 @@
"version" : "1.0",
"depends" : ["base", "base_setup"],
"author" : "OpenERP SA",
+ "complexity" : "expert",
"category": "Tools",
"description": """
Installer for reporting Hidden.
diff --git a/addons/report_designer/i18n/hr.po b/addons/report_designer/i18n/hr.po
new file mode 100644
index 00000000000..1f88aa3288c
--- /dev/null
+++ b/addons/report_designer/i18n/hr.po
@@ -0,0 +1,107 @@
+# Croatian translation for openobject-addons
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2011-01-11 11:15+0000\n"
+"PO-Revision-Date: 2011-12-12 07:38+0000\n"
+"Last-Translator: Tomislav Bosnjakovic \n"
+"Language-Team: Croatian \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-12-13 05:02+0000\n"
+"X-Generator: Launchpad (build 14458)\n"
+
+#. module: report_designer
+#: model:ir.actions.act_window,name:report_designer.action_report_designer_installer
+#: view:report_designer.installer:0
+msgid "Reporting Tools Configuration"
+msgstr "Konfiguracija alata za izvještavanje"
+
+#. module: report_designer
+#: field:report_designer.installer,base_report_creator:0
+msgid "Query Builder"
+msgstr "Kreiranje upita"
+
+#. module: report_designer
+#: view:report_designer.installer:0
+msgid "Configure"
+msgstr "Postavke"
+
+#. module: report_designer
+#: view:report_designer.installer:0
+msgid "title"
+msgstr "naziv"
+
+#. module: report_designer
+#: model:ir.model,name:report_designer.model_report_designer_installer
+msgid "report_designer.installer"
+msgstr "report_designer.installer"
+
+#. module: report_designer
+#: field:report_designer.installer,config_logo:0
+msgid "Image"
+msgstr "Slika"
+
+#. module: report_designer
+#: field:report_designer.installer,base_report_designer:0
+msgid "OpenOffice Report Designer"
+msgstr "Dizajner OpenOffice izvještaja"
+
+#. module: report_designer
+#: model:ir.module.module,shortdesc:report_designer.module_meta_information
+msgid "Reporting Tools"
+msgstr "Alati za izvještavanje"
+
+#. module: report_designer
+#: view:report_designer.installer:0
+msgid ""
+"OpenERP's built-in reporting abilities can be improved even further with "
+"some of the following applications"
+msgstr ""
+"OpenERP ugrađene mogućnosti mogu se dodatno nadograditi sa sljedećim "
+"aplikacijama"
+
+#. module: report_designer
+#: view:report_designer.installer:0
+msgid "Configure Reporting Tools"
+msgstr "Konfiguriraj alate za izvještavanje"
+
+#. module: report_designer
+#: help:report_designer.installer,base_report_creator:0
+msgid ""
+"Allows you to create any statistic reports on several objects. It's a SQL "
+"query builder and browser for end users."
+msgstr ""
+"Dozvoljava vam kreiranje statističkih izvješća na nekoliko objekata. Radi se "
+"o SQL kreatoru upita i pregledniku za kranje korisnike."
+
+#. module: report_designer
+#: help:report_designer.installer,base_report_designer:0
+msgid ""
+"Adds wizards to Import/Export .SXW report which you can modify in "
+"OpenOffice.Once you have modified it you can upload the report using the "
+"same wizard."
+msgstr ""
+"Dodaje asistenta za uvoz/izvoz .SXW izvještaja koje možete mijenjati u "
+"OpenOfficeu. Kada ga promjenite možete uploadati izvještaj koristeći isti "
+"asistent."
+
+#. module: report_designer
+#: model:ir.module.module,description:report_designer.module_meta_information
+msgid ""
+"Installer for reporting tools selection\n"
+" "
+msgstr ""
+"Instaler za odabir alata za izvještanje.\n"
+" "
+
+#. module: report_designer
+#: field:report_designer.installer,progress:0
+msgid "Configuration Progress"
+msgstr "Napredak konfiguracije"
diff --git a/addons/report_designer/security/ir.model.access.csv b/addons/report_designer/security/ir.model.access.csv
index 0343f29f43a..4a08a4aa60d 100644
--- a/addons/report_designer/security/ir.model.access.csv
+++ b/addons/report_designer/security/ir.model.access.csv
@@ -1 +1 @@
-"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
diff --git a/addons/report_intrastat/security/ir.model.access.csv b/addons/report_intrastat/security/ir.model.access.csv
index f59d76ed536..942b8e19b72 100644
--- a/addons/report_intrastat/security/ir.model.access.csv
+++ b/addons/report_intrastat/security/ir.model.access.csv
@@ -1,6 +1,6 @@
-"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
-"access_report_intrastat_code","report.intrastat.code","model_report_intrastat_code","account.group_account_manager",1,1,1,1
-"access_report_intrastat","report.intrastat","model_report_intrastat","account.group_account_manager",1,0,0,0
-"access_report_intrastat_code_sale_manager","report.intrastat.code sale manager","model_report_intrastat_code","base.group_sale_manager",1,1,1,1
-"access_report_intrastat_code_purchase_manager","report.intrastat.code purchase manager","model_report_intrastat_code","purchase.group_purchase_manager",1,1,1,1
-"access_report_intrastat_code_stock_manager","report.intrastat.code stock manager","model_report_intrastat_code","stock.group_stock_manager",1,1,1,1
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+access_report_intrastat_code,report.intrastat.code,model_report_intrastat_code,account.group_account_manager,1,1,1,1
+access_report_intrastat,report.intrastat,model_report_intrastat,account.group_account_manager,1,0,0,0
+access_report_intrastat_code_sale_manager,report.intrastat.code sale manager,model_report_intrastat_code,base.group_sale_manager,1,1,1,1
+access_report_intrastat_code_purchase_manager,report.intrastat.code purchase manager,model_report_intrastat_code,purchase.group_purchase_manager,1,1,1,1
+access_report_intrastat_code_stock_manager,report.intrastat.code stock manager,model_report_intrastat_code,stock.group_stock_manager,1,1,1,1
diff --git a/addons/report_webkit/__openerp__.py b/addons/report_webkit/__openerp__.py
index 5db184a8c58..f186593e91b 100644
--- a/addons/report_webkit/__openerp__.py
+++ b/addons/report_webkit/__openerp__.py
@@ -84,7 +84,7 @@ TODO
"version" : "0.9",
"depends" : ["base"],
"author" : "Camptocamp",
- "category": "Tools", # i.e a technical module, not shown in Application install menu
+ "category": "Reporting", # i.e a technical module, not shown in Application install menu
"url": "http://http://www.camptocamp.com/",
"data": [ "security/ir.model.access.csv",
"data.xml",
diff --git a/addons/report_webkit/i18n/hr.po b/addons/report_webkit/i18n/hr.po
new file mode 100644
index 00000000000..01ec38be92b
--- /dev/null
+++ b/addons/report_webkit/i18n/hr.po
@@ -0,0 +1,613 @@
+# Croatian translation for openobject-addons
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2011-01-11 11:16+0000\n"
+"PO-Revision-Date: 2011-12-11 21:52+0000\n"
+"Last-Translator: Tomislav Bosnjakovic \n"
+"Language-Team: Croatian \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-12-12 05:17+0000\n"
+"X-Generator: Launchpad (build 14458)\n"
+
+#. module: report_webkit
+#: field:ir.actions.report.xml,webkit_header:0
+msgid "WebKit Header"
+msgstr "Zaglavlje Webkita"
+
+#. module: report_webkit
+#: view:ir.actions.report.xml:0
+msgid "Webkit Template (used if Report File is not found)"
+msgstr "Predložak Webkita (koristi se ako datoteka izvještaja nije nađena)"
+
+#. module: report_webkit
+#: selection:ir.header_webkit,format:0
+msgid "Tabloid 29 279.4 x 431.8 mm"
+msgstr ""
+
+#. module: report_webkit
+#: model:ir.actions.act_window,name:report_webkit.action_header_img
+#: model:ir.ui.menu,name:report_webkit.menu_header_img
+msgid "Header IMG"
+msgstr ""
+
+#. module: report_webkit
+#: field:res.company,lib_path:0
+msgid "Webkit Executable Path"
+msgstr "Webkit izvršna putanja"
+
+#. module: report_webkit
+#: selection:ir.header_webkit,format:0
+msgid "Ledger 28 431.8 x 279.4 mm"
+msgstr ""
+
+#. module: report_webkit
+#: help:ir.header_img,type:0
+msgid "Image type(png,gif,jpeg)"
+msgstr "Vrsta slike (png,gif,jpeg)"
+
+#. module: report_webkit
+#: selection:ir.header_webkit,format:0
+msgid "Executive 4 7.5 x 10 inches, 190.5 x 254 mm"
+msgstr ""
+
+#. module: report_webkit
+#: field:ir.header_img,company_id:0
+#: field:ir.header_webkit,company_id:0
+msgid "Company"
+msgstr "Organizacija"
+
+#. module: report_webkit
+#: code:addons/report_webkit/webkit_report.py:97
+#, python-format
+msgid "path to Wkhtmltopdf is not absolute"
+msgstr "putanja do Wkhtmltopdf nije apsolutna"
+
+#. module: report_webkit
+#: selection:ir.header_webkit,format:0
+msgid "DLE 26 110 x 220 mm"
+msgstr ""
+
+#. module: report_webkit
+#: selection:ir.header_webkit,format:0
+msgid "B7 21 88 x 125 mm"
+msgstr "B7 21 88 x 125 mm"
+
+#. module: report_webkit
+#: code:addons/report_webkit/webkit_report.py:306
+#: code:addons/report_webkit/webkit_report.py:320
+#: code:addons/report_webkit/webkit_report.py:338
+#: code:addons/report_webkit/webkit_report.py:354
+#, python-format
+msgid "Webkit render"
+msgstr ""
+
+#. module: report_webkit
+#: selection:ir.header_webkit,format:0
+msgid "Folio 27 210 x 330 mm"
+msgstr ""
+
+#. module: report_webkit
+#: code:addons/report_webkit/webkit_report.py:67
+#, python-format
+msgid ""
+"Please install executable on your system'+\n"
+" ' (sudo apt-get install wkhtmltopdf) or "
+"download it from here:'+\n"
+" ' "
+"http://code.google.com/p/wkhtmltopdf/downloads/list and set the'+\n"
+" ' path to the executable on the Company form."
+msgstr ""
+"Molim instalirajte izvršnu datoteku u vaš sustav'+\n"
+" ' (sudo apt-get install wkhtmltopdf) ili "
+"skinite odavde:'+\n"
+" ' "
+"http://code.google.com/p/wkhtmltopdf/downloads/list i postavite'+\n"
+" ' putanju do izvršne datoteke na formi "
+"organizacije."
+
+#. module: report_webkit
+#: help:ir.header_img,name:0
+msgid "Name of Image"
+msgstr "Naziv slike"
+
+#. module: report_webkit
+#: code:addons/report_webkit/webkit_report.py:91
+#, python-format
+msgid ""
+"Wrong Wkhtmltopdf path set in company'+\n"
+" 'Given path is not executable or path is "
+"wrong"
+msgstr ""
+"Pogrešna Wkhtmltopdf putanja postavljena u organizaciji'+\n"
+" 'Odabrana putanja nije izvršna datoteka ili "
+"je putanja pogrešna"
+
+#. module: report_webkit
+#: code:addons/report_webkit/webkit_report.py:166
+#, python-format
+msgid "Webkit raise an error"
+msgstr "Webkit je uzrokovao grešku"
+
+#. module: report_webkit
+#: selection:ir.header_webkit,format:0
+msgid "Legal 3 8.5 x 14 inches, 215.9 x 355.6 mm"
+msgstr "Legal 3 8.5 x 14 inches, 215.9 x 355.6 mm"
+
+#. module: report_webkit
+#: model:ir.model,name:report_webkit.model_ir_header_webkit
+msgid "ir.header_webkit"
+msgstr "ir.header_webkit"
+
+#. module: report_webkit
+#: model:ir.actions.act_window,name:report_webkit.action_header_webkit
+#: model:ir.ui.menu,name:report_webkit.menu_header_webkit
+msgid "Header HTML"
+msgstr "HTML zaglavlja"
+
+#. module: report_webkit
+#: selection:ir.header_webkit,format:0
+msgid "A4 0 210 x 297 mm, 8.26 x 11.69 inches"
+msgstr "A4 0 210 x 297 mm, 8.26 x 11.69 inches"
+
+#. module: report_webkit
+#: view:report.webkit.actions:0
+msgid "_Cancel"
+msgstr "_Otkaži"
+
+#. module: report_webkit
+#: selection:ir.header_webkit,format:0
+msgid "B2 17 500 x 707 mm"
+msgstr "B2 17 500 x 707 mm"
+
+#. module: report_webkit
+#: model:ir.model,name:report_webkit.model_ir_header_img
+msgid "ir.header_img"
+msgstr "ir.header_img"
+
+#. module: report_webkit
+#: constraint:res.company:0
+msgid "Error! You can not create recursive companies."
+msgstr "Pogreška! Ne možete kreirati rekurzivne organizacije."
+
+#. module: report_webkit
+#: selection:ir.header_webkit,format:0
+msgid "A0 5 841 x 1189 mm"
+msgstr "A0 5 841 x 1189 mm"
+
+#. module: report_webkit
+#: selection:ir.header_webkit,format:0
+msgid "C5E 24 163 x 229 mm"
+msgstr "C5E 24 163 x 229 mm"
+
+#. module: report_webkit
+#: field:ir.header_img,type:0
+msgid "Type"
+msgstr "Vrsta"
+
+#. module: report_webkit
+#: code:addons/report_webkit/wizard/report_webkit_actions.py:134
+#, python-format
+msgid "Client Actions Connections"
+msgstr "Veze klijentskih radnji"
+
+#. module: report_webkit
+#: field:res.company,header_image:0
+msgid "Available Images"
+msgstr "Raspložive slike"
+
+#. module: report_webkit
+#: field:ir.header_webkit,html:0
+msgid "webkit header"
+msgstr "zaglavlje webkita"
+
+#. module: report_webkit
+#: selection:ir.header_webkit,format:0
+msgid "B1 15 707 x 1000 mm"
+msgstr "B1 15 707 x 1000 mm"
+
+#. module: report_webkit
+#: selection:ir.header_webkit,format:0
+msgid "A1 6 594 x 841 mm"
+msgstr "A1 6 594 x 841 mm"
+
+#. module: report_webkit
+#: help:ir.actions.report.xml,webkit_header:0
+msgid "The header linked to the report"
+msgstr "zaglavlje povezano s izvještajem"
+
+#. module: report_webkit
+#: code:addons/report_webkit/webkit_report.py:78
+#, python-format
+msgid "Wkhtmltopdf library path is not set in company"
+msgstr "Wkhtmltopdf library putanja nije povezana s organizacijom"
+
+#. module: report_webkit
+#: model:ir.module.module,description:report_webkit.module_meta_information
+msgid ""
+"This module adds a new Report Engine based on WebKit library (wkhtmltopdf) "
+"to support reports designed in HTML + CSS.\n"
+"The module structure and some code is inspired by the report_openoffice "
+"module.\n"
+"The module allows:\n"
+" -HTML report definition\n"
+" -Multi header support \n"
+" -Multi logo\n"
+" -Multi company support\n"
+" -HTML and CSS-3 support (In the limit of the actual WebKIT version)\n"
+" -JavaScript support \n"
+" -Raw HTML debugger\n"
+" -Book printing capabilities\n"
+" -Margins definition \n"
+" -Paper size definition\n"
+"and much more\n"
+"\n"
+"Multiple headers and logos can be defined per company.\n"
+"CSS style, header and footer body are defined per company\n"
+"\n"
+"The library to install can be found here\n"
+"http://code.google.com/p/wkhtmltopdf/\n"
+"The system libraries are available for Linux, Mac OS X i386 and Windows 32.\n"
+"\n"
+"After installing the wkhtmltopdf library on the OpenERP Server machine, you "
+"need to set the\n"
+"path to the wkthtmltopdf executable file on the Company.\n"
+"\n"
+"For a sample report see also the webkit_report_sample module, and this "
+"video:\n"
+" http://files.me.com/nbessi/06n92k.mov \n"
+"\n"
+"\n"
+"TODO :\n"
+"JavaScript support activation deactivation\n"
+"Collated and book format support\n"
+"Zip return for separated PDF\n"
+"Web client WYSIWYG\n"
+" "
+msgstr ""
+"Ovaj modul dodaje novu izvještajnu platformu na Webkit library (wkhtmltopdf) "
+"za podršku izvještajima dizajniranim u HTML + CSS.\n"
+"Struktura modula i dio koda je inspiriran sa modulom report_openoffice.\n"
+"Modul omogućuje:\n"
+" -Definicije HTML izvještaja\n"
+" -Podršku za više zaglavlja\n"
+" -Više loga\n"
+" -Podrušku za više kompanija\n"
+" -Podršku za HTML i CSS-3 (U granicama WebKIT verzije)\n"
+" -Podršku za JavaScript\n"
+" -Debuger za HTML\n"
+" -Mogućnost ispisa knjiga\n"
+" -Definiranje margina\n"
+" -Definiranje veličine papira\n"
+"i još mnogo toga\n"
+"\n"
+"Višestruka zaglavlja i loga se mogu definirati po organizaciji.\n"
+"Stilovi CSS-a, tijela zaglavlja i podnožja se definiraju po organizaciji\n"
+"Library za instalaciju se može naći ovdje\n"
+"http://code.google.com/p/wkhtmltopdf/\n"
+"Sistemski library je dobavljiv za Linux, Mac OS X i386 i Windows 32.\n"
+"\n"
+"Nakon instalacije wkhtmltopdf library na OpenERP poslužitelju, morate "
+"postaviti putanju \n"
+"do izvršne datoteke wkthtmltopdf na organizaciji.\n"
+"\n"
+"Za primjer izvještaja pogledajte modul webkit_report_sample i sljedeći "
+"video:\n"
+" http://files.me.com/nbessi/06n92k.mov \n"
+"\n"
+"\n"
+"TODO :\n"
+"Podrška za aktivaciju deaktivaciju JavaScripta\n"
+"\n"
+"Podrška za razvrstavanje i knjižni format\n"
+"Zip povrat za odvojeni PDF\n"
+"Web klijent WYSIWYG\n"
+" "
+
+#. module: report_webkit
+#: view:ir.actions.report.xml:0
+#: view:res.company:0
+msgid "Webkit"
+msgstr "Webkit"
+
+#. module: report_webkit
+#: help:ir.header_webkit,format:0
+msgid "Select Proper Paper size"
+msgstr "Odaberite odgovarajuću veličinu papira"
+
+#. module: report_webkit
+#: selection:ir.header_webkit,format:0
+msgid "B5 1 176 x 250 mm, 6.93 x 9.84 inches"
+msgstr "B5 1 176 x 250 mm, 6.93 x 9.84 inches"
+
+#. module: report_webkit
+#: view:ir.header_webkit:0
+msgid "Content and styling"
+msgstr "Sadržaj i stilsko oblikovanje"
+
+#. module: report_webkit
+#: selection:ir.header_webkit,format:0
+msgid "A7 11 74 x 105 mm"
+msgstr "A7 11 74 x 105 mm"
+
+#. module: report_webkit
+#: selection:ir.header_webkit,format:0
+msgid "A6 10 105 x 148 mm"
+msgstr "A6 10 105 x 148 mm"
+
+#. module: report_webkit
+#: help:ir.actions.report.xml,report_webkit_data:0
+msgid "This template will be used if the main report file is not found"
+msgstr ""
+"Ovaj predložak će se koristiti ako glavna datoteka izvještaja nije pronađena"
+
+#. module: report_webkit
+#: field:ir.header_webkit,margin_top:0
+msgid "Top Margin (mm)"
+msgstr "Gornja margina (mm)"
+
+#. module: report_webkit
+#: code:addons/report_webkit/webkit_report.py:261
+#, python-format
+msgid "Please set a header in company settings"
+msgstr "Molim postavite zaglavlje u postavkama organizacije"
+
+#. module: report_webkit
+#: view:report.webkit.actions:0
+msgid "_Ok"
+msgstr "_U redu"
+
+#. module: report_webkit
+#: help:report.webkit.actions,print_button:0
+msgid ""
+"Check this to add a Print action for this Report in the sidebar of the "
+"corresponding document types"
+msgstr ""
+"Označite ovo za dodavanje akcije ispisa za ovaj izvještaj na bočnoj traci "
+"odgovarajuće vrste dokumenta"
+
+#. module: report_webkit
+#: selection:ir.header_webkit,format:0
+msgid "B3 18 353 x 500 mm"
+msgstr "B3 18 353 x 500 mm"
+
+#. module: report_webkit
+#: help:ir.actions.report.xml,webkit_debug:0
+msgid "Enable the webkit engine debugger"
+msgstr "Omogući debuger webkit platforme"
+
+#. module: report_webkit
+#: field:ir.header_img,img:0
+msgid "Image"
+msgstr "Slika"
+
+#. module: report_webkit
+#: field:res.company,header_webkit:0
+msgid "Available html"
+msgstr "Raspoloživ html"
+
+#. module: report_webkit
+#: help:report.webkit.actions,open_action:0
+msgid ""
+"Check this to view the newly added internal print action after creating it "
+"(technical view) "
+msgstr ""
+"Označi ovo da bi pogledali novododanu internu akciju ispisa nakon kreiranja "
+"(tehnički pogled) "
+
+#. module: report_webkit
+#: view:res.company:0
+msgid "Images"
+msgstr "Slike"
+
+#. module: report_webkit
+#: selection:ir.header_webkit,orientation:0
+msgid "Portrait"
+msgstr "Portret"
+
+#. module: report_webkit
+#: selection:ir.header_webkit,orientation:0
+msgid "Landscape"
+msgstr "Pejzažno"
+
+#. module: report_webkit
+#: view:ir.header_webkit:0
+msgid "page setup"
+msgstr "postava stranice"
+
+#. module: report_webkit
+#: selection:ir.header_webkit,format:0
+msgid "B8 22 62 x 88 mm"
+msgstr "B8 22 62 x 88 mm"
+
+#. module: report_webkit
+#: selection:ir.header_webkit,format:0
+msgid "A2 7 420 x 594 mm"
+msgstr "A2 7 420 x 594 mm"
+
+#. module: report_webkit
+#: field:report.webkit.actions,print_button:0
+msgid "Add print button"
+msgstr "Dodaj gumb za ispis"
+
+#. module: report_webkit
+#: selection:ir.header_webkit,format:0
+msgid "A9 13 37 x 52 mm"
+msgstr "A9 13 37 x 52 mm"
+
+#. module: report_webkit
+#: model:ir.model,name:report_webkit.model_res_company
+msgid "Companies"
+msgstr "Organizacije"
+
+#. module: report_webkit
+#: field:ir.header_webkit,margin_bottom:0
+msgid "Bottom Margin (mm)"
+msgstr "Donja margina (mm)"
+
+#. module: report_webkit
+#: model:ir.model,name:report_webkit.model_report_webkit_actions
+msgid "Webkit Actions"
+msgstr "Webkit akcije"
+
+#. module: report_webkit
+#: field:report.webkit.actions,open_action:0
+msgid "Open added action"
+msgstr "Otvori dodanu akciju"
+
+#. module: report_webkit
+#: field:ir.header_webkit,margin_right:0
+msgid "Right Margin (mm)"
+msgstr "Desna margina (mm)"
+
+#. module: report_webkit
+#: field:ir.header_webkit,orientation:0
+msgid "Orientation"
+msgstr "Orijentacija"
+
+#. module: report_webkit
+#: selection:ir.header_webkit,format:0
+msgid "B6 20 125 x 176 mm"
+msgstr "B6 20 125 x 176 mm"
+
+#. module: report_webkit
+#: help:ir.header_webkit,html:0
+msgid "Set Webkit Report Header"
+msgstr "Postavi zaglavlje Webkit izvještaja"
+
+#. module: report_webkit
+#: field:ir.header_webkit,format:0
+msgid "Paper size"
+msgstr "Veličina papira"
+
+#. module: report_webkit
+#: selection:ir.header_webkit,format:0
+msgid ":B10 16 31 x 44 mm"
+msgstr ":B10 16 31 x 44 mm"
+
+#. module: report_webkit
+#: field:ir.header_webkit,css:0
+msgid "Header CSS"
+msgstr "Zaglavlje CSS"
+
+#. module: report_webkit
+#: selection:ir.header_webkit,format:0
+msgid "B4 19 250 x 353 mm"
+msgstr "B4 19 250 x 353 mm"
+
+#. module: report_webkit
+#: selection:ir.header_webkit,format:0
+msgid "A3 8 297 x 420 mm"
+msgstr "A3 8 297 x 420 mm"
+
+#. module: report_webkit
+#: code:addons/report_webkit/webkit_report.py:240
+#, python-format
+msgid ""
+"'))\n"
+" header = report_xml.webkit_header.html\n"
+" footer = report_xml.webkit_header.footer_html\n"
+" if not header and report_xml.header:\n"
+" raise except_osv(\n"
+" _('No header defined for this Webkit report!"
+msgstr ""
+
+#. module: report_webkit
+#: help:res.company,lib_path:0
+msgid "Complete (Absolute) path to the wkhtmltopdf executable."
+msgstr "Dovrši (apsolutnu) putanju do izvršen datoteke wkhtmltopdf"
+
+#. module: report_webkit
+#: field:ir.header_webkit,footer_html:0
+msgid "webkit footer"
+msgstr "podnožje webkita"
+
+#. module: report_webkit
+#: field:ir.actions.report.xml,webkit_debug:0
+msgid "Webkit debug"
+msgstr "Webkit debug"
+
+#. module: report_webkit
+#: selection:ir.header_webkit,format:0
+msgid "Letter 2 8.5 x 11 inches, 215.9 x 279.4 mm"
+msgstr "Letter 2 8.5 x 11 inches, 215.9 x 279.4 mm"
+
+#. module: report_webkit
+#: selection:ir.header_webkit,format:0
+msgid "B0 14 1000 x 1414 mm"
+msgstr "B0 14 1000 x 1414 mm"
+
+#. module: report_webkit
+#: field:ir.actions.report.xml,report_webkit_data:0
+msgid "Webkit Template"
+msgstr "Predložak Webkita"
+
+#. module: report_webkit
+#: model:ir.module.module,shortdesc:report_webkit.module_meta_information
+msgid "Webkit Report Engine"
+msgstr "Platforma Webkit izvještaja"
+
+#. module: report_webkit
+#: field:ir.header_img,name:0
+#: field:ir.header_webkit,name:0
+msgid "Name"
+msgstr "Naziv"
+
+#. module: report_webkit
+#: selection:ir.header_webkit,format:0
+msgid "A5 9 148 x 210 mm"
+msgstr "A5 9 148 x 210 mm"
+
+#. module: report_webkit
+#: selection:ir.header_webkit,format:0
+msgid "A8 12 52 x 74 mm"
+msgstr "A8 12 52 x 74 mm"
+
+#. module: report_webkit
+#: model:ir.actions.act_window,name:report_webkit.wizard_ofdo_report_actions
+#: view:report.webkit.actions:0
+msgid "Add Print Buttons"
+msgstr "Dodaj gumbe za ispis"
+
+#. module: report_webkit
+#: selection:ir.header_webkit,format:0
+msgid "Comm10E 25 105 x 241 mm, U.S. Common 10 Envelope"
+msgstr "Comm10E 25 105 x 241 mm, U.S. normalna 10 omotnica"
+
+#. module: report_webkit
+#: code:addons/report_webkit/webkit_report.py:255
+#, python-format
+msgid "Webkit Report template not found !"
+msgstr "Predložak Webkit izvještaja nije pronađen"
+
+#. module: report_webkit
+#: field:ir.header_webkit,margin_left:0
+msgid "Left Margin (mm)"
+msgstr "Lijeva margina (mm)"
+
+#. module: report_webkit
+#: view:res.company:0
+msgid "Headers"
+msgstr "Zaglavlja"
+
+#. module: report_webkit
+#: help:ir.header_webkit,footer_html:0
+msgid "Set Webkit Report Footer."
+msgstr "Postavi podnožje Webkit izvještaja"
+
+#. module: report_webkit
+#: selection:ir.header_webkit,format:0
+msgid "B9 23 33 x 62 mm"
+msgstr "B9 23 33 x 62 mm"
+
+#. module: report_webkit
+#: model:ir.model,name:report_webkit.model_ir_actions_report_xml
+msgid "ir.actions.report.xml"
+msgstr "ir.actions.report.xml"
diff --git a/addons/report_webkit/security/ir.model.access.csv b/addons/report_webkit/security/ir.model.access.csv
index 6c626f9873e..4ad8b3ae2be 100644
--- a/addons/report_webkit/security/ir.model.access.csv
+++ b/addons/report_webkit/security/ir.model.access.csv
@@ -1,3 +1,3 @@
-"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
-"access_ir_header_webkit","ir.header_webkit","model_ir_header_webkit",,1,,1,
-"access_ir_header_img","ir.header_img","model_ir_header_img",,1,,1,
\ No newline at end of file
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+access_ir_header_webkit,ir.header_webkit,model_ir_header_webkit,,1,,1,
+access_ir_header_img,ir.header_img,model_ir_header_img,,1,,1,
diff --git a/addons/report_webkit_sample/__openerp__.py b/addons/report_webkit_sample/__openerp__.py
index 9fb1f713d24..bad0e3279ed 100644
--- a/addons/report_webkit_sample/__openerp__.py
+++ b/addons/report_webkit_sample/__openerp__.py
@@ -43,7 +43,7 @@ You have to create the print buttons by calling the wizard. For more details see
""",
"version" : "0.9",
"depends" : ["base", "account", "report_webkit"],
- "category": "Tools",
+ "category": "Reporting",
"author" : "Camptocamp SA - NBessi",
"url": "http://www.camptocamp.com/",
"data": ["report_webkit_html_view.xml",
diff --git a/addons/report_webkit_sample/i18n/hr.po b/addons/report_webkit_sample/i18n/hr.po
new file mode 100644
index 00000000000..184eca13c99
--- /dev/null
+++ b/addons/report_webkit_sample/i18n/hr.po
@@ -0,0 +1,153 @@
+# Croatian translation for openobject-addons
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2011-01-11 11:16+0000\n"
+"PO-Revision-Date: 2011-12-11 20:28+0000\n"
+"Last-Translator: Tomislav Bosnjakovic \n"
+"Language-Team: Croatian \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-12-12 05:17+0000\n"
+"X-Generator: Launchpad (build 14458)\n"
+
+#. module: report_webkit_sample
+#: model:ir.actions.report.xml,name:report_webkit_sample.report_webkit_html
+msgid "WebKit invoice"
+msgstr "WebKit račun"
+
+#. module: report_webkit_sample
+#: report:report.webkitaccount.invoice:35
+msgid "Supplier Invoice"
+msgstr "Ulazni račun"
+
+#. module: report_webkit_sample
+#: report:report.webkitaccount.invoice:49
+msgid "Unit Price"
+msgstr "Jedinična cijena"
+
+#. module: report_webkit_sample
+#: model:ir.module.module,description:report_webkit_sample.module_meta_information
+msgid ""
+"Samples for Webkit Report Engine (report_webkit module).\n"
+"\n"
+" A sample invoice report is included in this module, as well as a wizard "
+"to\n"
+" add Webkit Report entries on any Document in the system.\n"
+" \n"
+" You have to create the print buttons by calling the wizard. For more "
+"details see:\n"
+" http://files.me.com/nbessi/06n92k.mov \n"
+" "
+msgstr ""
+"Samples for Webkit Report Engine (report_webkit module).\n"
+"Primjeri Webkit izvještajne platforme (report_webkit modul).\n"
+"\n"
+" U modul je uključen primjer izvještaja računa, kao i asistent za \n"
+" dodavanje stavaka Webkit izvještaja na bilo koji dokument u sustavu.\n"
+"\n"
+" Morate kreirati gumbe za ispis pozivajući asistenta. Za više detalja "
+"pogledajte: \n"
+" http://files.me.com/nbessi/06n92k.mov \n"
+" "
+
+#. module: report_webkit_sample
+#: model:ir.module.module,shortdesc:report_webkit_sample.module_meta_information
+msgid "Webkit Report Samples"
+msgstr "Primjeri Webkit izvještaja"
+
+#. module: report_webkit_sample
+#: report:report.webkitaccount.invoice:49
+msgid "Disc.(%)"
+msgstr "Popust (%)"
+
+#. module: report_webkit_sample
+#: report:report.webkitaccount.invoice:22
+msgid "Fax"
+msgstr "Fax"
+
+#. module: report_webkit_sample
+#: report:report.webkitaccount.invoice:44
+msgid "Document"
+msgstr "Dokument"
+
+#. module: report_webkit_sample
+#: report:report.webkitaccount.invoice:49
+msgid "Description"
+msgstr "Opis"
+
+#. module: report_webkit_sample
+#: report:report.webkitaccount.invoice:49
+msgid "Price"
+msgstr "Cijena"
+
+#. module: report_webkit_sample
+#: report:report.webkitaccount.invoice:44
+msgid "Invoice Date"
+msgstr "Datum računa"
+
+#. module: report_webkit_sample
+#: report:report.webkitaccount.invoice:49
+msgid "QTY"
+msgstr "Kol."
+
+#. module: report_webkit_sample
+#: report:report.webkitaccount.invoice:64
+msgid "Base"
+msgstr "Osnovica"
+
+#. module: report_webkit_sample
+#: report:report.webkitaccount.invoice:44
+msgid "Partner Ref."
+msgstr "Partnerova oznaka"
+
+#. module: report_webkit_sample
+#: report:report.webkitaccount.invoice:49
+msgid "Taxes"
+msgstr "Porezi"
+
+#. module: report_webkit_sample
+#: report:report.webkitaccount.invoice:64
+msgid "Amount"
+msgstr "Iznos"
+
+#. module: report_webkit_sample
+#: report:report.webkitaccount.invoice:28
+msgid "VAT"
+msgstr "PDV"
+
+#. module: report_webkit_sample
+#: report:report.webkitaccount.invoice:37
+msgid "Refund"
+msgstr "Povrat"
+
+#. module: report_webkit_sample
+#: report:report.webkitaccount.invoice:19
+msgid "Tel"
+msgstr "Tel"
+
+#. module: report_webkit_sample
+#: report:report.webkitaccount.invoice:25
+msgid "E-mail"
+msgstr "E-pošta"
+
+#. module: report_webkit_sample
+#: report:report.webkitaccount.invoice:33
+msgid "Invoice"
+msgstr "Račun"
+
+#. module: report_webkit_sample
+#: report:report.webkitaccount.invoice:39
+msgid "Supplier Refund"
+msgstr "Odobrenje dobavljača"
+
+#. module: report_webkit_sample
+#: report:report.webkitaccount.invoice:76
+msgid "Total"
+msgstr "Ukupno"
diff --git a/addons/resource/__openerp__.py b/addons/resource/__openerp__.py
index 2b8c27359d8..0c2e143c7a7 100644
--- a/addons/resource/__openerp__.py
+++ b/addons/resource/__openerp__.py
@@ -23,7 +23,7 @@
"name" : "Resource",
"version" : "1.1",
"author" : "OpenERP SA",
- "category" : "Tools",
+ "category" : "Hidden/Dependency",
"website" : "http://www.openerp.com",
"description": """
Module for resource management.
@@ -45,6 +45,10 @@ It also manages the leaves of every resource.
],
'demo_xml': ['resource_demo.xml'
],
+ 'test': [
+ 'test/resource.yml',
+ 'test/duplicate_resource.yml',
+ ],
'installable': True,
'active': False,
'certificate': '00746371192190459469',
diff --git a/addons/resource/i18n/hr.po b/addons/resource/i18n/hr.po
index 4e113fd9f49..8f18314bc61 100644
--- a/addons/resource/i18n/hr.po
+++ b/addons/resource/i18n/hr.po
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2011-01-11 11:16+0000\n"
-"PO-Revision-Date: 2010-09-10 16:28+0000\n"
-"Last-Translator: FULL NAME \n"
+"PO-Revision-Date: 2011-12-11 19:39+0000\n"
+"Last-Translator: Tomislav Bosnjakovic \n"
"Language-Team: Croatian \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-05 05:45+0000\n"
-"X-Generator: Launchpad (build 14231)\n"
+"X-Launchpad-Export-Date: 2011-12-12 05:17+0000\n"
+"X-Generator: Launchpad (build 14458)\n"
#. module: resource
#: help:resource.calendar.leaves,resource_id:0
@@ -23,27 +23,29 @@ msgid ""
"If empty, this is a generic holiday for the company. If a resource is set, "
"the holiday/leave is only for this resource"
msgstr ""
+"Ako je prazno, ovo je generički praznik za organizaciju. Ako je resurs "
+"postavljen, praznik/odsustvo je samo za taj resurs."
#. module: resource
#: selection:resource.calendar.attendance,dayofweek:0
msgid "Friday"
-msgstr ""
+msgstr "petak"
#. module: resource
#: field:resource.resource,resource_type:0
msgid "Resource Type"
-msgstr ""
+msgstr "Tip resursa"
#. module: resource
#: model:ir.model,name:resource.model_resource_calendar_leaves
#: view:resource.calendar.leaves:0
msgid "Leave Detail"
-msgstr ""
+msgstr "Detalji o odsustvu"
#. module: resource
#: model:ir.actions.act_window,name:resource.resource_calendar_resources_leaves
msgid "Resources Leaves"
-msgstr ""
+msgstr "Odsustva resursa"
#. module: resource
#: model:ir.actions.act_window,name:resource.action_resource_calendar_form
@@ -51,59 +53,60 @@ msgstr ""
#: field:resource.calendar,attendance_ids:0
#: view:resource.calendar.attendance:0
msgid "Working Time"
-msgstr ""
+msgstr "Radno vrijeme"
#. module: resource
#: selection:resource.calendar.attendance,dayofweek:0
msgid "Thursday"
-msgstr ""
+msgstr "četvrtak"
#. module: resource
#: view:resource.calendar.leaves:0
#: view:resource.resource:0
msgid "Group By..."
-msgstr ""
+msgstr "Grupiraj po..."
#. module: resource
#: selection:resource.calendar.attendance,dayofweek:0
msgid "Sunday"
-msgstr ""
+msgstr "Nedelja"
#. module: resource
#: view:resource.resource:0
msgid "Search Resource"
-msgstr ""
+msgstr "Pretraži resurse"
#. module: resource
#: view:resource.resource:0
msgid "Type"
-msgstr ""
+msgstr "Vrsta"
#. module: resource
#: model:ir.actions.act_window,name:resource.action_resource_resource_tree
#: view:resource.resource:0
msgid "Resources"
-msgstr ""
+msgstr "Resursi"
#. module: resource
#: field:resource.calendar,manager:0
msgid "Workgroup manager"
-msgstr ""
+msgstr "Voditelj radne grupe"
#. module: resource
#: help:resource.calendar.attendance,hour_from:0
msgid "Working time will start from"
-msgstr ""
+msgstr "Radno vrijeme počinje od"
#. module: resource
#: constraint:resource.calendar.leaves:0
msgid "Error! leave start-date must be lower then leave end-date."
msgstr ""
+"Greška! Datum početka odsustva mora biti manji od završnog datuma odsustva"
#. module: resource
#: model:ir.model,name:resource.model_resource_calendar
msgid "Resource Calendar"
-msgstr ""
+msgstr "Kalendar resursa"
#. module: resource
#: field:resource.calendar,company_id:0
@@ -112,48 +115,48 @@ msgstr ""
#: view:resource.resource:0
#: field:resource.resource,company_id:0
msgid "Company"
-msgstr ""
+msgstr "Organizacija"
#. module: resource
#: selection:resource.resource,resource_type:0
msgid "Material"
-msgstr ""
+msgstr "Materijal"
#. module: resource
#: field:resource.calendar.attendance,dayofweek:0
msgid "Day of week"
-msgstr ""
+msgstr "Dan u tjednu"
#. module: resource
#: help:resource.calendar.attendance,hour_to:0
msgid "Working time will end at"
-msgstr ""
+msgstr "Radno vrijeme će završiti u"
#. module: resource
#: field:resource.calendar.attendance,date_from:0
msgid "Starting date"
-msgstr ""
+msgstr "Početni datum"
#. module: resource
#: view:resource.calendar:0
msgid "Search Working Time"
-msgstr ""
+msgstr "Pretraži radno vrijeme"
#. module: resource
#: view:resource.calendar.leaves:0
msgid "Reason"
-msgstr ""
+msgstr "Razlog"
#. module: resource
#: view:resource.resource:0
#: field:resource.resource,user_id:0
msgid "User"
-msgstr ""
+msgstr "Korisnik"
#. module: resource
#: view:resource.calendar.leaves:0
msgid "Date"
-msgstr ""
+msgstr "Datum"
#. module: resource
#: view:resource.calendar.leaves:0
@@ -163,7 +166,7 @@ msgstr ""
#. module: resource
#: field:resource.calendar.leaves,date_to:0
msgid "End Date"
-msgstr ""
+msgstr "Završni datum"
#. module: resource
#: model:ir.actions.act_window,name:resource.resource_calendar_closing_days
@@ -177,7 +180,7 @@ msgstr ""
#: field:resource.calendar.leaves,resource_id:0
#: view:resource.resource:0
msgid "Resource"
-msgstr ""
+msgstr "Resurs"
#. module: resource
#: view:resource.calendar:0
@@ -186,7 +189,7 @@ msgstr ""
#: field:resource.calendar.leaves,name:0
#: field:resource.resource,name:0
msgid "Name"
-msgstr ""
+msgstr "Naziv"
#. module: resource
#: model:ir.module.module,description:resource.module_meta_information
@@ -200,11 +203,21 @@ msgid ""
"\n"
" "
msgstr ""
+"\n"
+" Module for resource management\n"
+" Modul za upravljanje resursima\n"
+" Resurs predstavlja nešto što može biti dodjeljeno\n"
+" (programer na zadataku ili proizvodni centar na radnom nalogu "
+"proizvodnje).\n"
+" Ovaj modul upravlja kalendarom resursa dodjeljenom svakom resursu.\n"
+" Također upravlja odsustvima svih resursa.\n"
+"\n"
+" "
#. module: resource
#: selection:resource.calendar.attendance,dayofweek:0
msgid "Wednesday"
-msgstr ""
+msgstr "Srijeda"
#. module: resource
#: view:resource.calendar.leaves:0
@@ -216,12 +229,12 @@ msgstr ""
#. module: resource
#: model:ir.model,name:resource.model_resource_resource
msgid "Resource Detail"
-msgstr ""
+msgstr "Detalji resursa"
#. module: resource
#: field:resource.resource,active:0
msgid "Active"
-msgstr ""
+msgstr "Aktivan"
#. module: resource
#: help:resource.resource,active:0
@@ -229,11 +242,12 @@ msgid ""
"If the active field is set to False, it will allow you to hide the resource "
"record without removing it."
msgstr ""
+"Ako je ovo polje postavljeno na NE, moežte sakriti resurs bez da ga uklonite."
#. module: resource
#: field:resource.calendar.attendance,calendar_id:0
msgid "Resource's Calendar"
-msgstr ""
+msgstr "Kalendar resursa"
#. module: resource
#: help:resource.resource,user_id:0
@@ -253,17 +267,17 @@ msgstr ""
#. module: resource
#: field:resource.resource,code:0
msgid "Code"
-msgstr ""
+msgstr "Šifra"
#. module: resource
#: selection:resource.calendar.attendance,dayofweek:0
msgid "Monday"
-msgstr ""
+msgstr "Ponedjeljak"
#. module: resource
#: field:resource.calendar.attendance,hour_to:0
msgid "Work to"
-msgstr ""
+msgstr "Radi do"
#. module: resource
#: help:resource.resource,time_efficiency:0
@@ -273,27 +287,31 @@ msgid ""
"show a load of 100% for this phase by default, but if we put a efficency of "
"200%, then his load will only be 50%."
msgstr ""
+"Ovo polje prikazuje efikasnost svakog resursa u izvršavanju zadataka. Npr. "
+"resurs se ostavi sam na 5 dana, sa 5 dodjeljenih zadataka. Predefinirano se "
+"prikazuje opterećenje od 100%, ali ako stavimo efikasnost od 200%, tada je "
+"njegovo opterećenje samo 50%."
#. module: resource
#: selection:resource.calendar.attendance,dayofweek:0
msgid "Tuesday"
-msgstr ""
+msgstr "Utorak"
#. module: resource
#: field:resource.calendar.leaves,calendar_id:0
msgid "Working time"
-msgstr ""
+msgstr "Radno vrijeme"
#. module: resource
#: model:ir.actions.act_window,name:resource.action_resource_calendar_leave_tree
#: model:ir.ui.menu,name:resource.menu_view_resource_calendar_leaves_search
msgid "Resource Leaves"
-msgstr ""
+msgstr "Odsustva resursa"
#. module: resource
#: view:resource.resource:0
msgid "General Information"
-msgstr ""
+msgstr "Opći podaci"
#. module: resource
#: model:ir.actions.act_window,help:resource.action_resource_resource_tree
@@ -302,45 +320,48 @@ msgid ""
"in a specific project phase. You can also set their efficiency level and "
"workload based on their weekly working hours."
msgstr ""
+"Resursi vam omogućuju kreiranje i upravljanje resursima koji trebaju biti "
+"uključeni u neku fazu projekta. Također možete postaviti njihovu razinu "
+"efikasnosti i opterećenje na osnovi njihovih tjednih radnih sati."
#. module: resource
#: view:resource.resource:0
msgid "Inactive"
-msgstr ""
+msgstr "Neaktivan"
#. module: resource
#: code:addons/resource/faces/resource.py:340
#, python-format
msgid "(vacation)"
-msgstr ""
+msgstr "(odmor)"
#. module: resource
#: field:resource.resource,time_efficiency:0
msgid "Efficiency factor"
-msgstr ""
+msgstr "Faktor efikasnosti"
#. module: resource
#: selection:resource.resource,resource_type:0
msgid "Human"
-msgstr ""
+msgstr "Čovjek"
#. module: resource
#: model:ir.model,name:resource.model_resource_calendar_attendance
msgid "Work Detail"
-msgstr ""
+msgstr "Detalj posla"
#. module: resource
#: field:resource.calendar.leaves,date_from:0
msgid "Start Date"
-msgstr ""
+msgstr "Početni datum"
#. module: resource
#: code:addons/resource/resource.py:246
#, python-format
msgid " (copy)"
-msgstr ""
+msgstr " (kopija)"
#. module: resource
#: selection:resource.calendar.attendance,dayofweek:0
msgid "Saturday"
-msgstr ""
+msgstr "Subota"
diff --git a/addons/resource/resource.py b/addons/resource/resource.py
index 5c11c0d9a42..fb3d8c0980e 100644
--- a/addons/resource/resource.py
+++ b/addons/resource/resource.py
@@ -22,7 +22,6 @@
from datetime import datetime, timedelta
import math
from faces import *
-from new import classobj
from osv import fields, osv
from tools.translate import _
@@ -44,9 +43,12 @@ class resource_calendar(osv.osv):
}
def working_hours_on_day(self, cr, uid, resource_calendar_id, day, context=None):
- """
+ """Calculates the Working Total Hours based on Resource Calendar and
+ given working day (datetime object).
+
@param resource_calendar_id: resource.calendar browse record
@param day: datetime object
+
@return: returns the working hours (as float) men should work on the given day if is in the attendance_ids of the resource_calendar_id (i.e if that day is a working day), returns 0.0 otherwise
"""
res = 0.0
@@ -56,9 +58,16 @@ class resource_calendar(osv.osv):
return res
def _get_leaves(self, cr, uid, id, resource):
+ """Private Method to Calculate resource Leaves days
+
+ @param id: resource calendar id
+ @param resource: resource id for which leaves will ew calculated
+
+ @return : returns the list of dates, where resource on leave in
+ resource.calendar.leaves object (e.g.['%Y-%m-%d', '%Y-%m-%d'])
+ """
resource_cal_leaves = self.pool.get('resource.calendar.leaves')
dt_leave = []
-
resource_leave_ids = resource_cal_leaves.search(cr, uid, [('calendar_id','=',id), '|', ('resource_id','=',False), ('resource_id','=',resource)])
#res_leaves = resource_cal_leaves.read(cr, uid, resource_leave_ids, ['date_from', 'date_to'])
res_leaves = resource_cal_leaves.browse(cr, uid, resource_leave_ids)
@@ -73,6 +82,21 @@ class resource_calendar(osv.osv):
return dt_leave
def interval_min_get(self, cr, uid, id, dt_from, hours, resource=False):
+ """
+ Calculates the working Schedule from supplied from date to till hours
+ will be satisfied based or resource calendar id. If resource is also
+ given then it will consider the resource leave also and than will
+ calculates resource working schedule
+
+ @param dt_from: datetime object, start of working scheduled
+ @param hours: float, total number working hours needed scheduled from
+ start date
+ @param resource : Optional Resource id, if supplied than resource leaves
+ will also taken into consideration for calculating working
+ schedule.
+ @return : List datetime object of working schedule based on supplies
+ params
+ """
if not id:
td = int(hours)*3
return [(dt_from - timedelta(hours=td), dt_from)]
@@ -162,10 +186,32 @@ class resource_calendar(osv.osv):
return results
def interval_get(self, cr, uid, id, dt_from, hours, resource=False, byday=True):
+ """Calculates Resource Working Internal Timing Based on Resource Calendar.
+
+ @param dt_from: start resource schedule calculation.
+ @param hours : total number of working hours to be scheduled.
+ @param resource: optional resource id, If supplied it will take care of
+ resource leave while scheduling.
+ @param byday: boolean flag bit enforce day wise scheduling
+
+ @return : list of scheduled working timing based on resource calendar.
+ """
res = self.interval_get_multi(cr, uid, [(dt_from.strftime('%Y-%m-%d %H:%M:%S'), hours, id)], resource, byday)[(dt_from.strftime('%Y-%m-%d %H:%M:%S'), hours, id)]
return res
def interval_hours_get(self, cr, uid, id, dt_from, dt_to, resource=False):
+ """ Calculates the Total Working hours based on given start_date to
+ end_date, If resource id is supplied that it will consider the source
+ leaves also in calculating the hours.
+
+ @param dt_from : date start to calculate hours
+ @param dt_end : date end to calculate hours
+ @param resource: optional resource id, If given resource leave will be
+ considered.
+
+ @return : Total number of working hours based dt_from and dt_end and
+ resource if supplied.
+ """
if not id:
return 0.0
dt_leave = self._get_leaves(cr, uid, id, resource)
@@ -290,6 +336,7 @@ class resource_resource(osv.osv):
def compute_vacation(self, cr, uid, calendar_id, resource_id=False, resource_calendar=False, context=None):
"""
Compute the vacation from the working calendar of the resource.
+
@param calendar_id : working calendar of the project
@param resource_id : resource working on phase/task
@param resource_calendar : working calendar of the resource
@@ -366,13 +413,6 @@ class resource_resource(osv.osv):
wktime_cal.append((non_working[:-1], time_range))
return wktime_cal
- #TODO: Write optimized alogrothem for resource availability. : Method Yet not implemented
- def check_availability(self, cr, uid, ids, start, end, context=None):
- if context == None:
- contex = {}
- allocation = {}
- return allocation
-
resource_resource()
class resource_calendar_leaves(osv.osv):
diff --git a/addons/resource/resource_demo.xml b/addons/resource/resource_demo.xml
index 2d1b6622e07..acd96cd992b 100644
--- a/addons/resource/resource_demo.xml
+++ b/addons/resource/resource_demo.xml
@@ -5,73 +5,73 @@
- 38 Hours/Week
+ 45 Hours/Week
-
+ Monday morning00812
-
+ Monday evening01318
-
+ Tuesday morning10812
-
+ Tuesday evening11318
-
+ Wednesday morning20812
-
+ Wednesday evening21318
-
+ Thursday morning30812
-
+ Thursday evening13183
-
+ Friday morning40812
-
+ Friday evening413
@@ -79,5 +79,47 @@
+
+
+
+ Analyst
+
+
+ user
+
+
+
+
+
+ Designer
+
+
+ user
+
+
+
+
+
+ Developer
+
+
+ user
+
+
+
+ 2 Hours On Leave
+
+
+
+
+
+
+
+ Dummy Resource Leave
+
+
+
+
+
diff --git a/addons/resource/security/ir.model.access.csv b/addons/resource/security/ir.model.access.csv
index 576ee965121..533ad419274 100644
--- a/addons/resource/security/ir.model.access.csv
+++ b/addons/resource/security/ir.model.access.csv
@@ -1,8 +1,6 @@
-"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
-"access_resource_calendar","resource.calendar","model_resource_calendar","base.group_system",1,1,1,1
-"access_resource_calendar_attendance","resource.calendar.attendance","model_resource_calendar_attendance","base.group_system",1,1,1,1
-"access_resource_resource","resource.resource","model_resource_resource","base.group_system",1,0,0,0
-"access_resource_resource_all","resource.resource all","model_resource_resource",,1,0,0,0
-"access_resource_calendar_leaves","resource.calendar.leaves","model_resource_calendar_leaves","base.group_system",1,1,1,1
-
-
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+access_resource_calendar,resource.calendar,model_resource_calendar,base.group_system,1,1,1,1
+access_resource_calendar_attendance,resource.calendar.attendance,model_resource_calendar_attendance,base.group_system,1,1,1,1
+access_resource_resource,resource.resource,model_resource_resource,base.group_system,1,0,0,0
+access_resource_resource_all,resource.resource all,model_resource_resource,,1,0,0,0
+access_resource_calendar_leaves,resource.calendar.leaves,model_resource_calendar_leaves,base.group_system,1,1,1,1
diff --git a/addons/resource/test/duplicate_resource.yml b/addons/resource/test/duplicate_resource.yml
new file mode 100644
index 00000000000..5869530e2f4
--- /dev/null
+++ b/addons/resource/test/duplicate_resource.yml
@@ -0,0 +1,6 @@
+-
+ I duplicate the resource "Analyst"
+-
+ !python {model: resource.resource}: |
+ copied_id = self.copy(cr, uid, ref("resource_analyst"))
+ assert copied_id, "Unable to Duplicate Resource"
diff --git a/addons/resource/test/resource.yml b/addons/resource/test/resource.yml
new file mode 100644
index 00000000000..5b7fa108101
--- /dev/null
+++ b/addons/resource/test/resource.yml
@@ -0,0 +1,59 @@
+-
+ In order to test resource.
+-
+ I assign working calendar '45 Hours/Week' to human resource.
+-
+ !python {model: resource.resource}: |
+ self.write(cr, uid, [ref('resource_analyst'), ref('resource_designer'), ref('resource_developer')], {'calendar_id' : ref('timesheet_group1'), 'resource_type': 'user'})
+
+-
+ I had Project of OpenERP Integration of 50 Hours with three human resource assigned on it. I have started project from this week start.
+-
+ First, I generate the resource detail and check the resource Efficiency assigned.
+-
+ !python {model: resource.resource}: |
+ resources = self.generate_resources(cr, uid, [ref('base.user_root'),ref('base.user_demo')], ref('timesheet_group1'), context)
+ for resource in resources.values():
+ assert resource.get('efficiency', 0.0) == 1.0, 'Invalid resource generated.'
+-
+ I check per day work hour availability of the Resource based on Working Calendar Assigned to each resource, for first day of the week.
+-
+ !python {model: resource.resource}: |
+ calendar_pool = self.pool.get('resource.calendar')
+ resources = self.browse(cr, uid, [ref('resource_analyst'), ref('resource_designer'), ref('resource_developer')], context)
+ from datetime import datetime, timedelta
+ now = datetime.now()
+ dt = now - timedelta(days=now.weekday())
+ for resource in resources:
+ result = calendar_pool.working_hours_on_day(cr, uid, resource.calendar_id, dt, context)
+ assert result == 9.0, 'Wrong calculation of day work hour availability of the Resource.'
+-
+ Now, resource "Developer" drafted leave on Thursday in this week.
+-
+ !python {model: resource.calendar.leaves}: |
+ from datetime import datetime,timedelta
+ now = datetime.now()
+ dt = (now - timedelta(days=now.weekday()) ) + timedelta(days=3)
+ self.write(cr, uid, [ref('resource_dummyleave')], {'resource_id': ref('resource_developer'), 'calendar_id': ref('timesheet_group1'), 'date_from': dt.strftime("%Y-%m-%d 09:00:00"), 'date_to': dt.strftime("%Y-%m-%d 18:00:00")})
+
+-
+ I check Actual working hours on resource 'Developer' from this week
+-
+ !python {model: resource.calendar}: |
+ from datetime import datetime, timedelta
+ now = datetime.now()
+ dt_from = now - timedelta(days=now.weekday())
+ dt_to = dt_from+ timedelta(days=6)
+ hours = self.interval_hours_get(cr, uid, ref('timesheet_group1'), dt_from, dt_to, resource=ref('resource_developer'))
+ assert hours > 27 , 'Invalid Total Week working hour calculated'
+-
+ Project Analysis work is of 20 hours which will start from Week start so i will calculate working schedule for resource Analyst for the same.
+-
+ !python {model: resource.calendar}: |
+
+ from datetime import datetime, timedelta
+ now = datetime.now()
+ work_intreval = self.interval_min_get(cr, uid, ref('timesheet_group1'), now, 20.0, resource=ref('resource_designer'))
+ assert len(work_intreval) >= 5, 'Wrong Schedule Calculated'
+
+
diff --git a/addons/sale/__openerp__.py b/addons/sale/__openerp__.py
index 8b5ae108f72..948352940a0 100644
--- a/addons/sale/__openerp__.py
+++ b/addons/sale/__openerp__.py
@@ -87,21 +87,18 @@ Dashboard for Sales Manager that includes:
],
'demo_xml': ['sale_demo.xml'],
'test': [
- 'test/edi_sale_order.yml',
- 'test/data_test.yml',
- 'test/manual_order_policy.yml',
- 'test/prepaid_order_policy.yml',
+ 'test/sale_order_demo.yml',
'test/picking_order_policy.yml',
+ 'test/manual_order_policy.yml',
'test/postpaid_order_policy.yml',
- 'test/advance_invoice.yml',
- 'test/so_make_line_invoice.yml',
- 'test/sale_procurement.yml',
- 'test/invoice_on_ordered_qty.yml',
- 'test/invoice_on_shipped_qty.yml',
- 'test/sale_report.yml',
+ 'test/prepaid_order_policy.yml',
+ 'test/cancel_order.yml',
+ 'test/delete_order.yml',
+ 'test/edi_sale_order.yml',
],
'installable': True,
'active': False,
+ 'application': True,
'certificate': '0058103601429',
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/sale/board_sale_view.xml b/addons/sale/board_sale_view.xml
index 8944a0f3724..99eb8c831c4 100644
--- a/addons/sale/board_sale_view.xml
+++ b/addons/sale/board_sale_view.xml
@@ -9,7 +9,7 @@
-
+
diff --git a/addons/sale/i18n/es_CL.po b/addons/sale/i18n/es_CL.po
index bda9cda990f..ca227ac4115 100644
--- a/addons/sale/i18n/es_CL.po
+++ b/addons/sale/i18n/es_CL.po
@@ -7,20 +7,20 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev_rc3\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2011-01-11 11:16+0000\n"
-"PO-Revision-Date: 2011-10-06 16:03+0000\n"
+"PO-Revision-Date: 2011-12-15 21:29+0000\n"
"Last-Translator: Francisco Reyes Acuña \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-05 05:17+0000\n"
-"X-Generator: Launchpad (build 14231)\n"
+"X-Launchpad-Export-Date: 2011-12-16 05:24+0000\n"
+"X-Generator: Launchpad (build 14523)\n"
#. module: sale
#: view:board.board:0
#: model:ir.actions.act_window,name:sale.action_sales_by_salesman
msgid "Sales by Salesman in last 90 days"
-msgstr "Ventas por comercial últimos 90 días"
+msgstr "Ventas por vendedor en los últimos 90 días"
#. module: sale
#: help:sale.installer,delivery:0
diff --git a/addons/sale/report/sale_report_view.xml b/addons/sale/report/sale_report_view.xml
index 7cc40c30645..5cc7c4f5ca1 100644
--- a/addons/sale/report/sale_report_view.xml
+++ b/addons/sale/report/sale_report_view.xml
@@ -128,7 +128,7 @@
This report performs analysis on your quotations and sales orders. Analysis check your sales revenues and sort it by different group criteria (salesman, partner, product, etc.) Use this report to perform analysis on sales not having invoiced yet. If you want to analyse your turnover, you should use the Invoice Analysis report in the Accounting application.
-
+
diff --git a/addons/sale/sale.py b/addons/sale/sale.py
index 0ab0da1b076..73796217482 100644
--- a/addons/sale/sale.py
+++ b/addons/sale/sale.py
@@ -206,8 +206,8 @@ class sale_order(osv.osv):
('invoice_except', 'Invoice Exception'),
('done', 'Done'),
('cancel', 'Cancelled')
- ], 'Order State', readonly=True, help="Givwizard = self.browse(cr, uid, ids)[0]es the state of the quotation or sales order. \nThe exception state is automatically set when a cancel operation occurs in the invoice validation (Invoice Exception) or in the picking list process (Shipping Exception). \nThe 'Waiting Schedule' state is set when the invoice is confirmed but waiting for the scheduler to run on the date 'Ordered Date'.", select=True),
- 'date_order': fields.date('Ordered Date', required=True, readonly=True, select=True, states={'draft': [('readonly', False)]}),
+ ], 'Order State', readonly=True, help="Givwizard = self.browse(cr, uid, ids)[0]es the state of the quotation or sales order. \nThe exception state is automatically set when a cancel operation occurs in the invoice validation (Invoice Exception) or in the picking list process (Shipping Exception). \nThe 'Waiting Schedule' state is set when the invoice is confirmed but waiting for the scheduler to run on the order date.", select=True),
+ 'date_order': fields.date('Date', required=True, readonly=True, select=True, states={'draft': [('readonly', False)]}),
'create_date': fields.datetime('Creation Date', readonly=True, select=True, help="Date on which sales order is created."),
'date_confirm': fields.date('Confirmation Date', readonly=True, select=True, help="Date on which sales order is confirmed."),
'user_id': fields.many2one('res.users', 'Salesman', states={'draft': [('readonly', False)]}, select=True),
@@ -324,7 +324,6 @@ class sale_order(osv.osv):
return True
def onchange_pricelist_id(self, cr, uid, ids, pricelist_id, order_lines, context={}):
- print order_lines
if (not pricelist_id) or (not order_lines):
return {}
warning = {
@@ -711,14 +710,14 @@ class sale_order(osv.osv):
location_id = order.shop_id.warehouse_id.lot_stock_id.id
output_id = order.shop_id.warehouse_id.lot_output_id.id
return {
- 'name': line.name[:64],
+ 'name': line.name[:250],
'picking_id': picking_id,
'product_id': line.product_id.id,
'date': date_planned,
'date_expected': date_planned,
'product_qty': line.product_uom_qty,
'product_uom': line.product_uom.id,
- 'product_uos_qty': line.product_uos_qty,
+ 'product_uos_qty': (line.product_uos and line.product_uos_qty) or line.product_uom_qty,
'product_uos': (line.product_uos and line.product_uos.id)\
or line.product_uom.id,
'product_packaging': line.product_packaging.id,
@@ -750,6 +749,33 @@ class sale_order(osv.osv):
'company_id': order.company_id.id,
}
+ def ship_recreate(self, cr, uid, order, line, move_id, proc_id):
+ # FIXME: deals with potentially cancelled shipments, seems broken (specially if shipment has production lot)
+ """
+ Define ship_recreate for process after shipping exception
+ param order: sale order to which the order lines belong
+ param line: sale order line records to procure
+ param move_id: the ID of stock move
+ param proc_id: the ID of procurement
+ """
+ move_obj = self.pool.get('stock.move')
+ if order.state == 'shipping_except':
+ for pick in order.picking_ids:
+ for move in pick.move_lines:
+ if move.state == 'cancel':
+ mov_ids = move_obj.search(cr, uid, [('state', '=', 'cancel'),('sale_line_id', '=', line.id),('picking_id', '=', pick.id)])
+ if mov_ids:
+ for mov in move_obj.browse(cr, uid, mov_ids):
+ # FIXME: the following seems broken: what if move_id doesn't exist? What if there are several mov_ids? Shouldn't that be a sum?
+ move_obj.write(cr, uid, [move_id], {'product_qty': mov.product_qty, 'product_uos_qty': mov.product_uos_qty})
+ self.pool.get('procurement.order').write(cr, uid, [proc_id], {'product_qty': mov.product_qty, 'product_uos_qty': mov.product_uos_qty})
+ return True
+
+ def _get_date_planned(self, cr, uid, order, line, start_date, *args):
+ date_planned = datetime.strptime(start_date, DEFAULT_SERVER_DATE_FORMAT) + relativedelta(days=line.delay or 0.0)
+ date_planned = (date_planned - timedelta(days=order.company_id.security_lead)).strftime(DEFAULT_SERVER_DATETIME_FORMAT)
+ return date_planned
+
def _create_pickings_and_procurements(self, cr, uid, order, order_lines, picking_id=False, *args):
"""Create the required procurements to supply sale order lines, also connecting
the procurements to appropriate stock moves in order to bring the goods to the
@@ -772,14 +798,13 @@ class sale_order(osv.osv):
move_obj = self.pool.get('stock.move')
picking_obj = self.pool.get('stock.picking')
procurement_obj = self.pool.get('procurement.order')
-
proc_ids = []
+
for line in order_lines:
if line.state == 'done':
continue
- date_planned = datetime.strptime(order.date_order, DEFAULT_SERVER_DATE_FORMAT) + relativedelta(days=line.delay or 0.0)
- date_planned = (date_planned - timedelta(days=order.company_id.security_lead)).strftime(DEFAULT_SERVER_DATETIME_FORMAT)
+ date_planned = self._get_date_planned(cr, uid, order, line, order.date_order, *args)
if line.product_id:
if line.product_id.product_tmpl_id.type in ('product', 'consu'):
@@ -793,19 +818,7 @@ class sale_order(osv.osv):
proc_id = procurement_obj.create(cr, uid, self._prepare_order_line_procurement(cr, uid, order, line, move_id, date_planned, *args))
proc_ids.append(proc_id)
line.write({'procurement_id': proc_id})
-
- # FIXME: deals with potentially cancelled shipments, seems broken, see below
- # FIXME: was introduced by revid: mtr@mtr-20101125100355-0a1b7m792t63mssv
- if order.state == 'shipping_except':
- for pick in order.picking_ids:
- for move in pick.move_lines:
- if move.state == 'cancel':
- mov_ids = move_obj.search(cr, uid, [('state', '=', 'cancel'),('sale_line_id', '=', line.id),('picking_id', '=', pick.id)])
- if mov_ids:
- for mov in move_obj.browse(cr, uid, mov_ids):
- # FIXME: the following seems broken: what if move_id doesn't exist? What if there are several mov_ids? Shouldn't that be a sum?
- move_obj.write(cr, uid, [move_id], {'product_qty': mov.product_qty, 'product_uos_qty': mov.product_uos_qty})
- procurement_obj.write(cr, uid, [proc_id], {'product_qty': mov.product_qty, 'product_uos_qty': mov.product_uos_qty})
+ self.ship_recreate(cr, uid, order, line, move_id, proc_id)
wf_service = netsvc.LocalService("workflow")
if picking_id:
diff --git a/addons/sale/sale_demo.xml b/addons/sale/sale_demo.xml
index 4fcce85c5b5..5da496a1c4b 100644
--- a/addons/sale/sale_demo.xml
+++ b/addons/sale/sale_demo.xml
@@ -12,6 +12,9 @@
+ picking
+ procurement
+ Invoice after delivery
@@ -19,9 +22,9 @@
New server config + material
-
-
- 123
+
+
+ 123.20make_to_stock
@@ -30,20 +33,20 @@
[PC1] Basic PC
- 450
+ 450.5033make_to_stock
- [PC1] Basic PC
-
+ [PC3] Medium PC
+
- 450
- 3
- 3
+ 900
+ 5make_to_stock
+ 1
@@ -66,6 +69,9 @@
+ order
+ postpaid
+
@@ -99,6 +105,7 @@
+ prepaid
@@ -120,7 +127,6 @@
make_to_order7
-
@@ -176,6 +182,16 @@
make_to_order15
+
+
+ [CPU1] Processor AMD Athlon XP 1800+
+
+
+ 75
+ 3
+ 3
+ make_to_stock
+
@@ -228,7 +244,7 @@
[MB1] Mainboard ASUStek A7N8X
- 4
+ 15250make_to_order15
@@ -238,13 +254,12 @@
[MB2] Mainboard ASUStek A7V8X-X
- 4
+ 5500make_to_order15
-
-
+
@@ -257,8 +272,9 @@
service150.0100.0
-
-
+ produce
+
+
diff --git a/addons/sale/sale_view.xml b/addons/sale/sale_view.xml
index 3610d2d5e9e..8f80b33c331 100644
--- a/addons/sale/sale_view.xml
+++ b/addons/sale/sale_view.xml
@@ -84,7 +84,6 @@
-
@@ -166,7 +165,8 @@
-
+
+
@@ -259,7 +259,8 @@
-
+
diff --git a/addons/sale/security/ir.model.access.csv b/addons/sale/security/ir.model.access.csv
index 22517bca44c..2e08a025971 100644
--- a/addons/sale/security/ir.model.access.csv
+++ b/addons/sale/security/ir.model.access.csv
@@ -1,70 +1,61 @@
-"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
-"access_sale_shop","sale.shop","model_sale_shop","base.group_user",1,0,0,0
-"access_sale_order","sale.order","model_sale_order","base.group_sale_salesman",1,1,1,0
-"access_sale_order_line","sale.order.line","model_sale_order_line","base.group_sale_salesman",1,1,1,1
-"access_sale_order_line_accountant","sale.order.line accountant","model_sale_order_line","account.group_account_user",1,1,0,0
-"access_account_invoice_tax_salesman","account_invoice_tax salesman","account.model_account_invoice_tax","base.group_sale_salesman",1,1,1,0
-"access_account_invoice_salesman","account_invoice salesman","account.model_account_invoice","base.group_sale_salesman",1,1,1,0
-"access_account_invoice_manager","account_invoice manager","account.model_account_invoice","base.group_sale_manager",1,1,1,1
-"access_account_invoice_line_salesman","account_invoice.line salesman","account.model_account_invoice_line","base.group_sale_salesman",1,1,1,0
-"access_account_payment_term_salesman","account_payment_term salesman","account.model_account_payment_term","base.group_sale_salesman",1,0,0,0
-"access_account_analytic_account_salesman","account_analytic_account salesman","analytic.model_account_analytic_account","base.group_sale_salesman",1,1,1,0
-"access_stock_picking_salesman","stock_picking salesman","stock.model_stock_picking","base.group_sale_salesman",1,1,1,0
-"access_stock_move_salesman","stock_move salesman","stock.model_stock_move","base.group_sale_salesman",1,1,1,0
-"access_stock_move_manager","stock_move manager","stock.model_stock_move","base.group_sale_manager",1,1,1,1
-"access_procurement_salesman","procurement.order salesman","procurement.model_procurement_order","base.group_sale_salesman",1,1,1,0
-"access_procurement_manager","procurement.order manager","procurement.model_procurement_order","base.group_sale_manager",1,1,1,1
-"access_sale_order_stock_worker","sale.order stock worker","model_sale_order","stock.group_stock_user",1,1,0,0
-"access_sale_order_line_stock_worker","sale.order.line stock worker","model_sale_order_line","stock.group_stock_user",1,1,0,0
-"access_sale_order_manager","sale.order.manager","model_sale_order","base.group_sale_manager",1,1,1,1
-"access_sale_order_accountant","sale.order.accountant","model_sale_order","account.group_account_user",1,1,0,0
-"access_sale_order_line_manager","sale.order.line.manager","model_sale_order_line","base.group_sale_manager",1,1,1,1
-"access_sale_report_salesman","sale.report","model_sale_report","base.group_sale_salesman",1,1,1,0
-"access_sale_report_manager","sale.report","model_sale_report","base.group_sale_manager",1,1,1,1
-"access_ir_property_sales","ir.property.sales","base.model_ir_property","base.group_sale_salesman",1,1,1,1
-"access_sale_account_journal","account.journal sale order.user","account.model_account_journal","base.group_sale_salesman",1,0,0,0
-"access_res_partner_sale_user","res.partner.sale.user","base.model_res_partner","base.group_sale_salesman",1,0,0,0
-"access_res_partner_sale_manager","res.partner.sale.manager","base.model_res_partner","base.group_sale_manager",1,1,1,0
-"access_report_stock_move_sales","report.stock.move.sale","stock.model_report_stock_move","base.group_sale_manager",1,1,1,1
-"access_stock_picking_sales","stock.picking.sales","stock.model_stock_picking","base.group_sale_manager",1,1,1,1
-"access_product_template_sale_user","product.template sale use","product.model_product_template","base.group_sale_salesman",1,0,0,0
-"access_product_product_sale_user","product.product sale use","product.model_product_product","base.group_sale_salesman",1,0,0,0
-"access_product_template_sale","product.template sale manager","product.model_product_template","base.group_sale_manager",1,0,0,0
-"access_product_product_sale","product.product sale manager","product.model_product_product","base.group_sale_manager",1,0,0,0
-"access_sale_shop_manager","account.journal sale order.user","model_sale_shop","base.group_sale_manager",1,1,1,1
-"access_account_fiscalyear_manager","account.fiscalyear.manager","account.model_account_fiscalyear","base.group_sale_manager",1,0,0,0
-"access_account_fiscalyear_user","account.fiscalyear.user","account.model_account_fiscalyear","base.group_sale_salesman",1,0,0,0
-"access_res_partner_address_user","res.partner.address.user","base.model_res_partner_address","base.group_sale_salesman",1,0,0,0
-"access_account_tax_user","account.tax.user","account.model_account_tax","base.group_sale_salesman",1,0,0,0
-"access_product_packaging_user","product.packaging.user","product.model_product_packaging","base.group_sale_salesman",1,1,1,0
-"access_ir_attachment_sales","ir.attachment.sales","base.model_ir_attachment","base.group_sale_salesman",1,1,1,0
-"access_ir_attachment_manager","ir.attachment.manager","base.model_ir_attachment","base.group_sale_manager",1,1,1,1
-"access_stock_warehouse_manager","stock.warehouse.manager","stock.model_stock_warehouse","base.group_sale_manager",1,0,0,0
-"access_product_uom_manager","product.uom.manager","product.model_product_uom","base.group_sale_manager",1,0,0,0
-"access_product_supplierinfo_manager","product.supplierinfo.manager","product.model_product_supplierinfo","base.group_sale_manager",1,0,0,0
-"access_product_packaging_manager","product.packaging.manager","product.model_product_packaging","base.group_sale_manager",1,0,0,0
-"access_stock_location_manager","stock.location.manager","stock.model_stock_location","base.group_sale_manager",1,0,0,0
-"access_stock_warehouse_user","stock.warehouse.user","stock.model_stock_warehouse","base.group_sale_salesman",1,0,0,0
-"access_res_partner_bank_type_manager","res.partner.bank.type.manager","base.model_res_partner_bank_type","base.group_sale_manager",1,0,0,0
-"access_res_partner_bank_type_user","res.partner.bank.type.user","base.model_res_partner_bank_type","base.group_sale_salesman",1,0,0,0
-"access_stock_location_user","stock.location.user","stock.model_stock_location","base.group_sale_salesman",1,0,0,0
-"access_res_partner_bank_type_field_user","res.partner.bank.type.field.user","base.model_res_partner_bank_type_field","base.group_sale_salesman",1,0,0,0
-"access_product_uom_user","product.uom.user","product.model_product_uom","base.group_sale_salesman",1,0,0,0
-"access_product_supplierinfo_user","product.supplierinfo.user","product.model_product_supplierinfo","base.group_sale_salesman",1,0,0,0
-"access_product_pricelist_sale_user","product.pricelist.sale.user","product.model_product_pricelist","base.group_sale_salesman",1,0,0,0
-"access_account_account_salesman","account_account salesman","account.model_account_account","base.group_sale_salesman",1,0,0,0
-"access_sale_shop_sale_user","sale.shop.sale.user","model_sale_shop","base.group_sale_salesman",1,0,0,0
-"access_sale_shop_sale_manager","sale.shop.sale.manager","model_sale_shop","base.group_sale_manager",1,1,1,1
-"access_product_uom_categ_sale_manager","product.uom.categ salemanager","product.model_product_uom_categ","base.group_sale_manager",1,1,1,1
-"access_product_uom_sale_manager","product.uom salemanager","product.model_product_uom","base.group_sale_manager",1,1,1,1
-"access_product_ul_sale_manager","product.ul salemanager","product.model_product_ul","base.group_sale_manager",1,1,1,1
-"access_product_category_sale_manager","product.category salemanager","product.model_product_category","base.group_sale_manager",1,1,1,1
-"access_product_packaging_sale_manager","product.packaging salemanager","product.model_product_packaging","base.group_sale_manager",1,1,1,1
-"access_product_supplierinfo_sale_manager","product.supplierinfo salemanager","product.model_product_supplierinfo","base.group_sale_manager",1,1,1,1
-"access_pricelist_partnerinfo_sale_manager","pricelist.partnerinfo salemanager","product.model_pricelist_partnerinfo","base.group_sale_manager",1,1,1,1
-"access_product_price_type_sale_manager","product.price.type salemanager","product.model_product_price_type","base.group_sale_manager",1,1,1,1
-"access_product_pricelist_type_sale_manager","product.pricelist.type salemanager","product.model_product_pricelist_type","base.group_sale_manager",1,1,1,1
-"access_product_pricelist_sale_manager","product.pricelist salemanager","product.model_product_pricelist","base.group_sale_manager",1,1,1,1
-"access_ir_property_group_sale_manager","ir_property group_sale_manager","base.model_ir_property","base.group_sale_manager",1,1,1,1
-"access_product_group_res_partner_sale_manager","res_partner group_sale_manager","base.model_res_partner","base.group_sale_manager",1,1,1,0
-"access_product_pricelist_version_sale_manager","product.pricelist.version sale_manager","product.model_product_pricelist_version","base.group_sale_manager",1,1,1,1
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+access_sale_shop,sale.shop,model_sale_shop,base.group_user,1,0,0,0
+access_sale_order,sale.order,model_sale_order,base.group_sale_salesman,1,1,1,0
+access_sale_order_line,sale.order.line,model_sale_order_line,base.group_sale_salesman,1,1,1,1
+access_sale_order_line_accountant,sale.order.line accountant,model_sale_order_line,account.group_account_user,1,1,0,0
+access_account_invoice_tax_salesman,account_invoice_tax salesman,account.model_account_invoice_tax,base.group_sale_salesman,1,1,1,0
+access_account_invoice_salesman,account_invoice salesman,account.model_account_invoice,base.group_sale_salesman,1,1,1,0
+access_account_invoice_manager,account_invoice manager,account.model_account_invoice,base.group_sale_manager,1,1,1,1
+access_account_invoice_line_salesman,account_invoice.line salesman,account.model_account_invoice_line,base.group_sale_salesman,1,1,1,0
+access_account_payment_term_salesman,account_payment_term salesman,account.model_account_payment_term,base.group_sale_salesman,1,0,0,0
+access_account_analytic_account_salesman,account_analytic_account salesman,analytic.model_account_analytic_account,base.group_sale_salesman,1,1,1,0
+access_stock_picking_salesman,stock_picking salesman,stock.model_stock_picking,base.group_sale_salesman,1,1,1,0
+access_stock_move_salesman,stock_move salesman,stock.model_stock_move,base.group_sale_salesman,1,1,1,0
+access_stock_move_manager,stock_move manager,stock.model_stock_move,base.group_sale_manager,1,1,1,1
+access_procurement_salesman,procurement.order salesman,procurement.model_procurement_order,base.group_sale_salesman,1,1,1,0
+access_procurement_manager,procurement.order manager,procurement.model_procurement_order,base.group_sale_manager,1,1,1,1
+access_sale_order_stock_worker,sale.order stock worker,model_sale_order,stock.group_stock_user,1,1,0,0
+access_sale_order_line_stock_worker,sale.order.line stock worker,model_sale_order_line,stock.group_stock_user,1,1,0,0
+access_sale_order_manager,sale.order.manager,model_sale_order,base.group_sale_manager,1,1,1,1
+access_sale_order_accountant,sale.order.accountant,model_sale_order,account.group_account_user,1,1,0,0
+access_sale_report_salesman,sale.report,model_sale_report,base.group_sale_salesman,1,1,1,0
+access_sale_report_manager,sale.report,model_sale_report,base.group_sale_manager,1,1,1,1
+access_ir_property_sales,ir.property.sales,base.model_ir_property,base.group_sale_salesman,1,1,1,1
+access_sale_account_journal,account.journal sale order.user,account.model_account_journal,base.group_sale_salesman,1,0,0,0
+access_res_partner_sale_user,res.partner.sale.user,base.model_res_partner,base.group_sale_salesman,1,0,0,0
+access_res_partner_sale_manager,res.partner.sale.manager,base.model_res_partner,base.group_sale_manager,1,1,1,0
+access_report_stock_move_sales,report.stock.move.sale,stock.model_report_stock_move,base.group_sale_manager,1,1,1,1
+access_stock_picking_sales,stock.picking.sales,stock.model_stock_picking,base.group_sale_manager,1,1,1,1
+access_product_template_sale_user,product.template sale use,product.model_product_template,base.group_sale_salesman,1,0,0,0
+access_product_product_sale_user,product.product sale use,product.model_product_product,base.group_sale_salesman,1,0,0,0
+access_sale_shop_manager,account.journal sale order.user,model_sale_shop,base.group_sale_manager,1,1,1,1
+access_account_fiscalyear_user,account.fiscalyear.user,account.model_account_fiscalyear,base.group_sale_salesman,1,0,0,0
+access_res_partner_address_user,res.partner.address.user,base.model_res_partner_address,base.group_sale_salesman,1,0,0,0
+access_account_tax_user,account.tax.user,account.model_account_tax,base.group_sale_salesman,1,0,0,0
+access_product_packaging_user,product.packaging.user,product.model_product_packaging,base.group_sale_salesman,1,1,1,0
+access_ir_attachment_sales,ir.attachment.sales,base.model_ir_attachment,base.group_sale_salesman,1,1,1,0
+access_ir_attachment_manager,ir.attachment.manager,base.model_ir_attachment,base.group_sale_manager,1,1,1,1
+access_product_packaging_manager,product.packaging.manager,product.model_product_packaging,base.group_sale_manager,1,0,0,0
+access_stock_warehouse_user,stock.warehouse.user,stock.model_stock_warehouse,base.group_sale_salesman,1,0,0,0
+access_res_partner_bank_type_user,res.partner.bank.type.user,base.model_res_partner_bank_type,base.group_sale_salesman,1,0,0,0
+access_stock_location_user,stock.location.user,stock.model_stock_location,base.group_sale_salesman,1,0,0,0
+access_res_partner_bank_type_field_user,res.partner.bank.type.field.user,base.model_res_partner_bank_type_field,base.group_sale_salesman,1,0,0,0
+access_product_uom_user,product.uom.user,product.model_product_uom,base.group_sale_salesman,1,0,0,0
+access_product_supplierinfo_user,product.supplierinfo.user,product.model_product_supplierinfo,base.group_sale_salesman,1,0,0,0
+access_product_pricelist_sale_user,product.pricelist.sale.user,product.model_product_pricelist,base.group_sale_salesman,1,0,0,0
+access_account_account_salesman,account_account salesman,account.model_account_account,base.group_sale_salesman,1,0,0,0
+access_sale_shop_sale_user,sale.shop.sale.user,model_sale_shop,base.group_sale_salesman,1,0,0,0
+access_sale_shop_sale_manager,sale.shop.sale.manager,model_sale_shop,base.group_sale_manager,1,1,1,1
+access_product_uom_categ_sale_manager,product.uom.categ salemanager,product.model_product_uom_categ,base.group_sale_manager,1,1,1,1
+access_product_uom_sale_manager,product.uom salemanager,product.model_product_uom,base.group_sale_manager,1,1,1,1
+access_product_ul_sale_manager,product.ul salemanager,product.model_product_ul,base.group_sale_manager,1,1,1,1
+access_product_category_sale_manager,product.category salemanager,product.model_product_category,base.group_sale_manager,1,1,1,1
+access_product_packaging_sale_manager,product.packaging salemanager,product.model_product_packaging,base.group_sale_manager,1,1,1,1
+access_product_supplierinfo_sale_manager,product.supplierinfo salemanager,product.model_product_supplierinfo,base.group_sale_manager,1,1,1,1
+access_pricelist_partnerinfo_sale_manager,pricelist.partnerinfo salemanager,product.model_pricelist_partnerinfo,base.group_sale_manager,1,1,1,1
+access_product_price_type_sale_manager,product.price.type salemanager,product.model_product_price_type,base.group_sale_manager,1,1,1,1
+access_product_pricelist_type_sale_manager,product.pricelist.type salemanager,product.model_product_pricelist_type,base.group_sale_manager,1,1,1,1
+access_product_pricelist_sale_manager,product.pricelist salemanager,product.model_product_pricelist,base.group_sale_manager,1,1,1,1
+access_product_group_res_partner_sale_manager,res_partner group_sale_manager,base.model_res_partner,base.group_sale_manager,1,1,1,0
+access_product_pricelist_version_sale_manager,product.pricelist.version sale_manager,product.model_product_pricelist_version,base.group_sale_manager,1,1,1,1
+access_account_invoice_report_salesman,account.invoice.report salesman,account.model_account_invoice_report,base.group_sale_salesman,1,0,0,0
\ No newline at end of file
diff --git a/addons/sale/security/sale_security.xml b/addons/sale/security/sale_security.xml
index b7a228acf6a..ae8c8bf62e3 100644
--- a/addons/sale/security/sale_security.xml
+++ b/addons/sale/security/sale_security.xml
@@ -3,16 +3,19 @@
- Sales / User - Own Leads Only
+ User - Own Leads Only
+
- Sales / User - All Leads
+ User - All Leads
+
- Sales / Manager
+ Manager
+
diff --git a/addons/sale/static/src/img/icon.png b/addons/sale/static/src/img/icon.png
new file mode 100644
index 00000000000..46d395d70ee
Binary files /dev/null and b/addons/sale/static/src/img/icon.png differ
diff --git a/addons/sale/stock.py b/addons/sale/stock.py
index 9e0a47b3ceb..378af21c1b4 100644
--- a/addons/sale/stock.py
+++ b/addons/sale/stock.py
@@ -27,12 +27,11 @@ class stock_move(osv.osv):
'sale_line_id': fields.many2one('sale.order.line', 'Sales Order Line', ondelete='set null', select=True, readonly=True),
}
- def _create_chained_picking(self, cr, uid, pick_name, picking, ptype, move, context=None):
- res = super(stock_move, self)._create_chained_picking(cr, uid, pick_name, picking, ptype, move, context=context)
+ def _prepare_chained_picking(self, cr, uid, picking_name, picking, picking_type, moves_todo, context=None):
+ values = super(stock_move, self)._prepare_chained_picking(cr, uid, picking_name, picking, picking_type, moves_todo, context=context)
if picking.sale_id:
- self.pool.get('stock.picking').write(cr, uid, [res], {'sale_id': picking.sale_id.id})
- return res
-stock_move()
+ values['sale_id'] = picking.sale_id.id
+ return values
class stock_picking(osv.osv):
_inherit = 'stock.picking'
@@ -196,7 +195,4 @@ class stock_picking(osv.osv):
})
return result
-stock_picking()
-
-
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/sale/test/advance_invoice.yml b/addons/sale/test/advance_invoice.yml
deleted file mode 100644
index 06bd0a309f5..00000000000
--- a/addons/sale/test/advance_invoice.yml
+++ /dev/null
@@ -1,144 +0,0 @@
--
- In order to test the Deposit wizard of sale module in the Open-ERP,
- I create a Sale Order for LG Viewty Smart for qty 100 having order_policy manual.
--
- !record {model: sale.order, id: sale_order_so5}:
- invoice_quantity: order
- order_line:
- - product_uom_qty: 100.0
- product_id: sale.product_product_lgviewtysmart0
- name: LG View
- product_uos_qty: 100.0
- type: make_to_order
- order_policy: manual
- partner_id: sale.res_partner_cleartrail0
- picking_policy: direct
--
- I use the Advance Payment wizard.
--
- !record {model: sale.advance.payment.inv, id: sale_advance_payment_inv_0}:
- amount: 1000.0
- product_id: product.product_product_pc3
- qtty: 3.0
--
- Then I click on the "Create Partial Invoice" button
--
- !python {model: sale.advance.payment.inv}: |
- self.create_invoices(cr, uid, [ref("sale_advance_payment_inv_0")], {"lang": 'en_US',
- "active_model": 'sale.order', "active_ids": [ref("sale_order_so5")], "tz":
- False, "active_id": ref("sale_order_so5"), })
--
- I verify whether the invoice has been generated.
--
- !python {model: sale.order}: |
- so = self.read(cr, uid, ref("sale_order_so5"))
- assert so['invoice_ids'], "Invoices has not been generated for sale_order_so5"
--
- I open the Invoice for the SO.
--
- !python {model: account.invoice}: |
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so5"))
- import netsvc
- wf_service = netsvc.LocalService("workflow")
- invoice_ids = so.invoice_ids
- for invoice in invoice_ids:
- wf_service.trg_validate(uid, 'account.invoice',invoice.id,'invoice_open', cr)
--
- I verify that an invoice state has transit from draft to open state
--
- !python {model: account.invoice}: |
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so5"))
- invoice_id = self.search(cr, uid, [('origin','=',so.name),('state','=','open')])
- assert invoice_id, "Invoice is not in the open state"
--
- I pay the invoice
--
- !python {model: account.invoice}: |
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so5"))
- invoice_id = self.search(cr, uid, [('origin','=',so.name),('state','=','open')])
- self.pay_and_reconcile(cr, uid, invoice_id,
- 3000.0, ref('account.cash'), ref('account.period_5'),
- ref('sale.account_journal_bankjournal0'), ref('account.cash'),
- ref('account.period_8'), ref('sale.account_journal_bankjournal0'),
- name='test')
--
- I verify that invoice has transit from Open to Paid state
--
- !python {model: account.invoice}: |
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so5"))
- invoice_id = self.search(cr, uid, [('origin','=',so.name),('state','=','paid')])
- assert invoice_id, "Invoice for SO is not in paid state."
--
- I verify that Paid has been set to true.
--
- !python {model: sale.order}: |
- sale_id=self.browse(cr, uid, ref("sale_order_so5"))
- assert(sale_id.invoiced == True), "Paid has not been set to true"
--
- I confirm the Sale Order.
--
- !workflow {model: sale.order, action: order_confirm, ref: sale_order_so5}
--
- I click on "Create Invoice" button of Sales order to create the invoice.
--
- !workflow {model: sale.order, action: manual_invoice, ref: sale_order_so5}
--
- I verify whether the invoice has been generated for SO
--
- !python {model: sale.order}: |
- so = self.browse(cr, uid, ref("sale_order_so5"))
- assert so.invoice_ids[1], "Invoices has not been generated for sale_order_so5"
--
- I open the Invoice for the SO.
--
- !python {model: account.invoice}: |
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so5"))
- import netsvc
- wf_service = netsvc.LocalService("workflow")
- invoice_ids = so.invoice_ids
- for invoice in invoice_ids:
- wf_service.trg_validate(uid, 'account.invoice',invoice.id,'invoice_open', cr)
--
- I verify that an invoice state has transit from draft to open state
--
- !python {model: account.invoice}: |
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so5"))
- invoice_id = self.search(cr, uid, [('origin','=',so.name),('state','=','open')])
- assert invoice_id, "Invoice is not in the open state"
--
- I assign an analytic journal to the bank journal
--
- !record {model: account.journal, id: sale.account_journal_bankjournal0}:
- analytic_journal_id: account.cose_journal_sale
--
- I pay the invoice
--
- !python {model: account.invoice}: |
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so5"))
- invoice_id = self.search(cr, uid, [('origin','=',so.name),('state','=','open')])
- self.pay_and_reconcile(cr, uid, invoice_id,
- 14000.0, ref('account.cash'), ref('account.period_5'),
- ref('sale.account_journal_bankjournal0'), ref('account.cash'),
- ref('account.period_5'), ref('sale.account_journal_bankjournal0'),
- name='test')
--
- I verify that an invoice is in done state.
--
- !python {model: account.invoice}: |
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so5"))
- invoice_id = self.search(cr, uid, [('origin','=',so.name),('state','=','paid')])
- assert invoice_id, "Invoice for SO is not in done state."
--
- I verify that Paid has been set to true.
--
- !python {model: sale.order}: |
- sale_id=self.browse(cr, uid, ref("sale_order_so5"))
- assert(sale_id.invoiced == True), "Paid has not been set to true"
diff --git a/addons/sale/test/cancel_order.yml b/addons/sale/test/cancel_order.yml
new file mode 100644
index 00000000000..a398e1545ab
--- /dev/null
+++ b/addons/sale/test/cancel_order.yml
@@ -0,0 +1,88 @@
+-
+ In order to test the cancel sale order.
+-
+ Now I cancel Quotation.
+-
+ !python {model: sale.order}: |
+ self.action_cancel(cr, uid, [ref("order7")])
+-
+ I check state of Quotation after cancelled.
+-
+ !assert {model: sale.order, id: order7, string: sale order should be in cancel state}:
+ - state == 'cancel'
+-
+ I set cancelled quotation to draft.
+-
+ !python {model: sale.order}: |
+ self.action_cancel_draft(cr, uid, [ref("order7")])
+-
+ I confirm order.
+-
+ !workflow {model: sale.order, action: order_confirm, ref: order7}
+-
+ I send delivery in two shipments, so I am doing a partial delivery order.
+-
+ !python {model: stock.picking}: |
+ delivery_orders = self.search(cr, uid, [('sale_id','=',ref("order7"))])
+ first_picking = self.browse(cr, uid, delivery_orders[0], context=context)
+ if first_picking.force_assign(cr, uid, first_picking):
+ first_move = first_picking.move_lines[0]
+ values = {'move%s'%(first_move.id): {'product_qty': 5}}
+ first_picking.do_partial(values, context=context)
+-
+ Now I cancel latest shipment.
+-
+ !python {model: stock.picking}: |
+ import netsvc
+ delivery_orders = self.search(cr, uid, [('sale_id','=',ref("order7"))])
+ last_delivery_order_id = delivery_orders[0]
+ wf_service = netsvc.LocalService("workflow")
+ wf_service.trg_validate(uid, 'stock.picking', last_delivery_order_id, 'button_cancel', cr)
+-
+ I run the scheduler.
+-
+ !python {model: procurement.order}: |
+
+ self.run_scheduler(cr, uid)
+-
+ I check order status in "Ship Exception".
+-
+ !assert {model: sale.order, id: order7, string: Sale order should be in shipping exception}:
+ - state == "shipping_except"
+-
+ Now I regenerate shipment.
+-
+ !workflow {model: sale.order, action: ship_recreate, ref: order7}
+-
+ I check state of order in 'To Invoice'.
+-
+ !assert {model: sale.order, id: order7, string: Sale order should be In Progress state}:
+ - state == 'manual'
+-
+ I make invoice for order.
+-
+ !workflow {model: sale.order, action: manual_invoice, ref: order7}
+-
+ To cancel the sale order from Invoice Exception, I have to cancel the invoice of sale order.
+-
+ !python {model: sale.order}: |
+ import netsvc
+ invoice_ids = self.browse(cr, uid, ref("order7")).invoice_ids
+ wf_service = netsvc.LocalService("workflow")
+ first_invoice_id = invoice_ids[0]
+ wf_service.trg_validate(uid, 'account.invoice', first_invoice_id.id, 'invoice_cancel', cr)
+-
+ I check order status in "Invoice Exception" and related invoice is in cancel state.
+-
+ !assert {model: sale.order, id: order7, string: Sale order should be in Invoice Exception state}:
+ - state == "invoice_except", "Order should be in Invoice Exception state after cancel Invoice"
+-
+ Then I click on the Ignore Exception button.
+-
+ !workflow {model: sale.order, action: invoice_corrected, ref: order7}
+
+-
+ I check state of order in 'In Progress'.
+-
+ !assert {model: sale.order, id: order7, string: Sale order should be In progress state}:
+ - state == 'progress'
diff --git a/addons/sale/test/data_test.yml b/addons/sale/test/data_test.yml
deleted file mode 100644
index 8b5d32a086a..00000000000
--- a/addons/sale/test/data_test.yml
+++ /dev/null
@@ -1,258 +0,0 @@
--
- In order to test the sale module, I need to configure details regarding product,customer and account.
--
- I am going to sell my Mobile products to the customer with name Cleartrail
--
- I create View Account Type.
--
- !record {model: account.account.type, id: account_account_type_view0}:
- close_method: none
- code: View
- name: View
- sign: 1
--
- I create Income Account Type.
--
- !record {model: account.account.type, id: account_account_type_income0}:
- close_method: unreconciled
- code: Income
- name: Income
- sign: 1
--
- I create Expense Account Type.
--
- !record {model: account.account.type, id: account_account_type_expense0}:
- close_method: unreconciled
- code: Expense
- name: Expense
- sign: 1
--
- I create Cash Account Type.
--
- !record {model: account.account.type, id: account_account_type_cash0}:
- close_method: balance
- code: Cash
- name: Cash
- sign: 1
--
- I create Minimal Chart Account.
--
- !record {model: account.account, id: account_account_minimalchart0}:
- code: MC
- company_id: base.main_company
- currency_mode: current
- name: Minimal Chart
- parent_left: 1
- parent_right: 12
- type: view
- user_type: account_account_type_view0
--
- I create Payable Account.
--
- !record {model: account.account, id: account_account_payable1}:
- code: AP
- company_id: base.main_company
- currency_mode: current
- name: Payable
- parent_id: account_account_minimalchart0
- parent_left: 2
- parent_right: 3
- reconcile: true
- type: payable
- user_type: account_account_type_expense0
--
- I create Receivable Account.
--
- !record {model: account.account, id: account_account_receivable0}:
- code: AR
- company_id: base.main_company
- currency_mode: current
- name: Receivable
- parent_id: account_account_minimalchart0
- parent_left: 4
- parent_right: 5
- reconcile: true
- type: receivable
- user_type: account_account_type_income0
--
- I create Cash Account.
--
- !record {model: account.account, id: account_account_cash0}:
- code: C
- company_id: base.main_company
- currency_mode: current
- name: Cash
- parent_id: account_account_minimalchart0
- parent_left: 6
- parent_right: 7
- type: other
- user_type: account_account_type_cash0
--
- I create Purchases Account.
--
- !record {model: account.account, id: account_account_purchases0}:
- code: P
- company_id: base.main_company
- currency_mode: current
- name: Purchases
- parent_id: account_account_minimalchart0
- parent_left: 8
- parent_right: 9
- type: other
- user_type: account_account_type_expense0
--
- I create Sales Account.
--
- !record {model: account.account, id: account_account_sales0}:
- code: S
- company_id: base.main_company
- currency_mode: current
- name: Sales
- parent_id: account_account_minimalchart0
- parent_left: 10
- parent_right: 11
- type: other
- user_type: account_account_type_income0
--
- I create Purchase Journal - (test).
--
- !record {model: account.journal, id: account_journal_purchasejournal0}:
- code: PUJ
- company_id: base.main_company
- default_credit_account_id: account_account_purchases0
- default_debit_account_id: account_account_purchases0
- name: Purchase Journal - (test)
- type: purchase
- view_id: account.account_journal_view
--
- I create Sale Journal.
--
- !record {model: account.journal, id: account_journal_salejournal0}:
- code: SJ
- company_id: base.main_company
- default_credit_account_id: account_account_sales0
- default_debit_account_id: account_account_sales0
- name: Sale Journal
- type: sale
- view_id: account.account_journal_view
--
- I create Bank Journal.
--
- !record {model: account.journal, id: account_journal_bankjournal0}:
- code: BNK
- company_id: base.main_company
- default_credit_account_id: account_account_cash0
- default_debit_account_id: account_account_cash0
- name: Bank Journal
- type: cash
- view_id: account.account_journal_bank_view
--
- I create ir.property for account payable.
--
- !record {model: ir.property, id: ir_property_propertyaccountexpensecateg0}:
- company_id: base.main_company
- fields_id: account.field_res_partner_property_account_payable
- name: property_account_expense_categ
- value_reference: account.account,5
--
- I create ir.property for account receivable.
--
- !record {model: ir.property, id: ir_property_propertyaccountincomecateg0}:
- company_id: base.main_company
- fields_id: account.field_res_partner_property_account_receivable
- name: property_account_income_categ
- value_reference: account.account,6
--
- I create Partner category Customers.
--
- !record {model: res.partner.category, id: res_partner_category_customers0}:
- name: Customers
--
- I create Cleartrail Customer.
--
- !record {model: res.partner, id: res_partner_cleartrail0}:
- category_id:
- - res_partner_category_customers0
- name: Cleartrail
- opt_out: True
--
- I create contact address for Cleartrail.
--
- !record {model: res.partner.address, id: res_partner_address_1}:
- partner_id: res_partner_cleartrail0
- street: onam plaza, 14 B palasia A B Road
- type: contact
--
- I create invoice address for Cleartrail.
--
- !record {model: res.partner.address, id: res_partner_address_2}:
- partner_id: res_partner_cleartrail0
- street: sarda house 24 B palasia, A B Road
- type: invoice
--
- I create delivery address for Cleartrail.
--
- !record {model: res.partner.address, id: res_partner_address_3}:
- partner_id: res_partner_cleartrail0
- street: sangam house 15 B palasia, A B Road
- type: delivery
--
- Customer Cleartrail has specific instrument requirement regarding the stockable products.
--
- I define product category Mobile Products Sellable.
--
- !record {model: product.category, id: product_category_allproductssellable0}:
- name: Mobile Products Sellable
--
- I define product category Mobile Services.
--
- !record {model: product.category, id: product_category_services0}:
- name: Mobile Services
--
-
- I define LG Viewty Smart product.
--
- !record {model: product.product, id: product_product_lgviewtysmart0}:
- categ_id: product_category_allproductssellable0
- cost_method: standard
- list_price: 170.0
- mes_type: fixed
- name: LG Viewty Smart
- procure_method: make_to_order
- property_account_expense: sale.account_account_payable1
- property_account_income: sale.account_account_receivable0
- seller_delay: '1'
- seller_ids:
- - delay: 1
- name: base.res_partner_agrolait
- min_qty: 2.0
- qty: 5.0
- standard_price: 160.0
- supply_method: produce
- type: product
- uom_id: product.product_uom_unit
- uom_po_id: product.product_uom_unit
-
--
- I define Slider Mobile.
--
- !record {model: product.product, id: product_product_slidermobile0}:
- categ_id: product_category_allproductssellable0
- cost_method: standard
- list_price: 200
- mes_type: fixed
- name: Slider Mobile
- procure_method: make_to_order
- property_account_expense: sale.account_account_payable1
- property_account_income: sale.account_account_receivable0
- seller_delay: '1'
- seller_ids:
- - delay: 1
- name: base.res_partner_agrolait
- min_qty: 2.0
- qty: 5.0
- standard_price: 189.0
- supply_method: buy
- type: product
- uom_id: product.product_uom_unit
- uom_po_id: product.product_uom_unit
diff --git a/addons/sale/test/delete_order.yml b/addons/sale/test/delete_order.yml
new file mode 100644
index 00000000000..2bbfed9771d
--- /dev/null
+++ b/addons/sale/test/delete_order.yml
@@ -0,0 +1,14 @@
+-
+ I try to delete In progress order and check Error Message.
+-
+ !python {model: sale.order}: |
+ try:
+ self.unlink(cr, uid, [ref("order")])
+ except Exception,e:
+ pass
+-
+ I make duplicate order and delete.
+-
+ !python {model: sale.order}: |
+ id = self.copy(cr, uid, ref('order'))
+ self.unlink(cr, uid, [id])
diff --git a/addons/sale/test/invoice_on_ordered_qty.yml b/addons/sale/test/invoice_on_ordered_qty.yml
deleted file mode 100644
index 313aa3a0d63..00000000000
--- a/addons/sale/test/invoice_on_ordered_qty.yml
+++ /dev/null
@@ -1,110 +0,0 @@
--
- In order to test the Sale module in OpenERP,
- I create a Sale Order for Slider Mobile for 500 quantity having Shipping Policy 'Shipping & Manual Invoice' and Invoice on 'Ordered quantities'
- in order to create an invoice based on the ordered quantity
--
- !record {model: sale.order, id: sale_order_so9}:
- date_order: !eval time.strftime('%Y-%m-%d')
- invoice_quantity: order
- name: Test_SO006
- order_line:
- - name: Slider Mobile
- price_unit: 200
- product_uom: product.product_uom_unit
- product_uom_qty: 200.0
- state: draft
- delay: 7.0
- product_id: sale.product_product_slidermobile0
- product_uos_qty: 200.0
- type: make_to_order
- order_policy: manual
- invoice_quantity: order
- partner_id: sale.res_partner_cleartrail0
- partner_invoice_id: sale.res_partner_address_2
- partner_order_id: sale.res_partner_address_1
- partner_shipping_id: sale.res_partner_address_3
- picking_policy: direct
- pricelist_id: product.list0
- shop_id: sale.shop
--
- I confirm the Sale Order.
--
- !workflow {model: sale.order, action: order_confirm, ref: sale_order_so9}
--
- I verify that the picking has been generated for the sale order and I process it
--
- !python {model: sale.order}: |
- so = self.browse(cr, uid, ref("sale_order_so9"))
- assert so.picking_ids,"Picking has not been generated for sale_order_so9"
- picking, = so.picking_ids
- stock_partial_picking = self.pool.get('stock.partial.picking')
- partial_id = stock_partial_picking.create(cr, uid, {},
- context={'active_model': 'stock.picking',
- 'active_ids': [picking.id]})
- stock_partial_picking.do_partial(cr, uid, [partial_id])
--
- I click on Create Invoice button to create the invoice.
--
- !workflow {model: sale.order, action: manual_invoice, ref: sale_order_so9}
--
- I verify whether the invoice has been generated for SO
--
- !python {model: sale.order}: |
- so = self.browse(cr, uid, ref("sale_order_so9"))
- assert so.invoice_ids, "Invoices has not been generated for sale_order_so9"
--
- I verify that an invoice is created on the basis of ordered quantity
--
- !python {model: account.invoice}: |
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so9"))
- for so_lines in so.order_line:
- qty = so_lines.product_uom_qty
- ids = self.search(cr, uid, [('origin','=',so.name)])
- inv_brw = self.browse(cr,uid,ids)[0]
- for inv_lines in inv_brw.invoice_line:
- qty1 = inv_lines.quantity
- assert qty1==qty, "Quantities are not same"
--
- I open the Invoice for the SO.
--
- !python {model: account.invoice}: |
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so9"))
- import netsvc
- wf_service = netsvc.LocalService("workflow")
- invoice_ids = so.invoice_ids
- for invoice in invoice_ids:
- wf_service.trg_validate(uid, 'account.invoice',invoice.id,'invoice_open', cr)
--
- Assign analytic journal into bank journal
--
- !record {model: account.journal, id: sale.account_journal_bankjournal0}:
- analytic_journal_id: account.cose_journal_sale
--
- I pay the invoice
--
- !python {model: account.invoice}: |
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so9"))
- invoice_id = self.search(cr, uid, [('origin','=',so.name),('state','=','open')])
- self.pay_and_reconcile(cr, uid, invoice_id,
- 40000.0, ref('account.cash'), ref('account.period_9'),
- ref('sale.account_journal_bankjournal0'), ref('account.cash'),
- ref('account.period_8'), ref('sale.account_journal_bankjournal0'),
- name='test')
--
- I verify the invoice are in paid state or not.
--
- !python {model: account.invoice}: |
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so9"))
- invoice_ids = so.invoice_ids
- for invoice in invoice_ids:
- assert invoice.state =='paid', "Invoice for SO is not in done state."
--
- I check that Paid has been set to true.
--
- !python {model: sale.order}: |
- sale_id=self.browse(cr, uid, ref("sale_order_so9"))
- assert sale_id.invoiced == True, "Paid has not been set to true"
diff --git a/addons/sale/test/invoice_on_shipped_qty.yml b/addons/sale/test/invoice_on_shipped_qty.yml
deleted file mode 100644
index c6ac86471be..00000000000
--- a/addons/sale/test/invoice_on_shipped_qty.yml
+++ /dev/null
@@ -1,124 +0,0 @@
--
- In order to test the Sale module in OpenERP,
- I create a Sale Order for Slider Mobile for 200 quantity having Shipping Policy 'Invoice from Picking' and Invoice on 'Shipped quantities'
--
- !record {model: sale.order, id: sale_order_so6}:
- date_order: !eval time.strftime('%Y-%m-%d')
- invoice_quantity: order
- name: Test_SO006BIS
- order_line:
- - name: Slider Mobile
- price_unit: 200
- product_uom: product.product_uom_unit
- product_uom_qty: 200.0
- state: draft
- delay: 7.0
- product_id: sale.product_product_slidermobile0
- product_uos_qty: 200.0
- type: make_to_order
- order_policy: picking
- invoice_quantity: procurement
- partner_id: sale.res_partner_cleartrail0
- partner_invoice_id: sale.res_partner_address_2
- partner_order_id: sale.res_partner_address_1
- partner_shipping_id: sale.res_partner_address_3
- picking_policy: direct
- pricelist_id: product.list0
- shop_id: sale.shop
--
- I confirm the Sale Order.
--
- !workflow {model: sale.order, action: order_confirm, ref: sale_order_so6}
--
- I verify that the picking has been generated for the sale order and I process it
--
- !python {model: sale.order}: |
- so = self.browse(cr, uid, ref("sale_order_so6"))
- assert so.picking_ids,"Picking has not been generated for sale_order_so6"
- picking, = so.picking_ids
- stock_partial_picking = self.pool.get('stock.partial.picking')
- partial_id = stock_partial_picking.create(cr, uid, {},
- context={'active_model': 'stock.picking',
- 'active_ids': [picking.id]})
- # I change the qty to 100 for a partial delivery
- partial = stock_partial_picking.browse(cr,uid,partial_id)
- line_id = partial.move_ids[0].id
- partial.write({'move_ids': [(1,line_id,{'quantity':100})]})
- partial.do_partial()
--
- Then I click on 'Create Invoices' button
--
- !python {model: stock.invoice.onshipping}: |
- import time
- sale_obj = self.pool.get('sale.order')
- sale_id = sale_obj.browse(cr, uid, ref("sale_order_so6"))
- ids = [x.id for x in sale_id.picking_ids if x.state == 'done']
- wiz_id = self.create(cr, uid, {'invoice_date': time.strftime('%Y-%m-%d'), 'journal_id': ref('account.sales_journal')},
- {'active_ids': ids, 'active_model': 'stock.picking'})
- self.create_invoice(cr, uid, [wiz_id], {"active_ids": ids, "active_id": ids[0]})
--
- I verify whether the invoice has been generated for SO
--
- !python {model: sale.order}: |
- so = self.browse(cr, uid, ref("sale_order_so6"))
- assert so.invoice_ids, "Invoices has not been generated for sale_order_so6"
--
- I verify that an invoice is created on the basis of shipped quantities 100 not ordered quantities 200
--
- !python {model: account.invoice}: |
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so6"))
- picking_obj = self.pool.get('stock.picking')
- ids = picking_obj.search(cr, uid, [('origin', '=', so.name),('type','=','out'),('state','=','done')])
- qty = qty1 = 0.0
- for pick_brw in picking_obj.browse(cr,uid, ids):
- for lines in pick_brw.move_lines:
- qty=lines.product_qty
- inv_id = self.search(cr, uid, [('origin', 'like', so.name)])
- inv_brw = self.browse(cr,uid,inv_id)[0]
- for inv_lines in inv_brw.invoice_line:
- qty1=inv_lines.quantity
- assert (qty1 == qty), "Quantities are not the same: invoiced: %s, shipped: %s" % (qty1,qty)
--
- I open the Invoice for the SO.
--
- !python {model: account.invoice}: |
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so6"))
- import netsvc
- wf_service = netsvc.LocalService("workflow")
- invoice_ids = so.invoice_ids
- for invoice in invoice_ids:
- wf_service.trg_validate(uid, 'account.invoice',invoice.id,'invoice_open', cr)
--
- Assign analytic journal into bank journal
--
- !record {model: account.journal, id: sale.account_journal_bankjournal0}:
- analytic_journal_id: account.cose_journal_sale
--
- I pay the invoice
--
- !python {model: account.invoice}: |
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so6"))
- invoice_id = self.search(cr, uid, [('origin','like',so.name),('state','=','open')])
- self.pay_and_reconcile(cr, uid, invoice_id,
- 40000.0, ref('account.cash'), ref('account.period_8'),
- ref('sale.account_journal_bankjournal0'), ref('account.cash'),
- ref('account.period_8'), ref('sale.account_journal_bankjournal0'),
- name='test')
--
- I verify the invoice are in paid state or not.
--
- !python {model: account.invoice}: |
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so6"))
- invoice_ids = so.invoice_ids
- for invoice in invoice_ids:
- assert invoice.state=='paid', "Invoice for SO is not in done state."
--
- I check that Paid has been set to true.
--
- !python {model: sale.order}: |
- sale_id=self.browse(cr, uid, ref("sale_order_so6"))
- assert sale_id.invoiced == True, "Paid has not been set to true"
diff --git a/addons/sale/test/manual_order_policy.yml b/addons/sale/test/manual_order_policy.yml
index af515b2d4e4..d997e792696 100644
--- a/addons/sale/test/manual_order_policy.yml
+++ b/addons/sale/test/manual_order_policy.yml
@@ -1,261 +1,89 @@
-
- In order to test the Sale module in OpenERP,
- I create a Sale Order for Slider Mobile for 500 quantity having Shipping Policy 'Shipping & Manual Invoice'
+ I confirm the Quotation with "Deliver & invoice on demand".
-
- !record {model: sale.order, id: sale_order_so0}:
- date_order: !eval time.strftime('%Y-%m-%d')
- invoice_quantity: order
- name: Test_SO002
- order_line:
- - name: Slider Mobile
- price_unit: 200
- product_uom: product.product_uom_unit
- product_uom_qty: 500.0
- state: draft
- delay: 7.0
- product_id: sale.product_product_slidermobile0
- product_uos_qty: 500.0
- type: make_to_order
- order_policy: manual
- partner_id: sale.res_partner_cleartrail0
- partner_invoice_id: sale.res_partner_address_2
- partner_order_id: sale.res_partner_address_1
- partner_shipping_id: sale.res_partner_address_3
- picking_policy: direct
- pricelist_id: product.list0
- shop_id: sale.shop
+ !workflow {model: sale.order, action: order_confirm, ref: order4}
-
- I confirm the Sale Order.
--
- !workflow {model: sale.order, action: order_confirm, ref: sale_order_so0}
--
- I click on Create Invoice button to create the invoice.
--
- !workflow {model: sale.order, action: manual_invoice, ref: sale_order_so0}
-
--
- I verify whether the invoice has been generated for SO
+ I check that Invoice should not created.
-
!python {model: sale.order}: |
- so = self.browse(cr, uid, ref("sale_order_so0"))
- assert so.invoice_ids, "Invoices has not been generated for sale_order_so0"
+ sale_order = self.browse(cr, uid, ref("order4"))
+ assert len(sale_order.invoice_ids) == False, "Invoice should not created."
+ assert sale_order.picking_ids, "Delivery order should be created."
-
- I open the Invoice for the SO.
+ I create advance invoice.
-
- !python {model: account.invoice}: |
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so0"))
+ !python {model: sale.advance.payment.inv}: |
+ ctx = context.copy()
+ ctx.update({"active_model": 'sale.order', "active_ids": [ref("order4")], "active_id":ref("order4")})
+ order_line = self.pool.get('sale.order.line').browse(cr, uid, ref("line7"), context=context)
+ pay_id = self.create(cr, uid, {'product_id': order_line.product_id.id, 'amount': order_line.price_subtotal, 'qtty': order_line.product_uom_qty})
+ self.create_invoices(cr, uid, [pay_id], context=ctx)
+-
+ I check Invoice which made advance
+-
+ !python {model: sale.order}: |
+ order = self.browse(cr, uid, ref('order4'))
+ assert order.invoice_ids, "Invoice should be created after make advance invoice."
+-
+ I create Invoice from sale order line.
+-
+ !python {model: sale.order.line.make.invoice}: |
+ ctx = context.copy()
+ ctx.update({"active_model": 'sale.order.line', "active_ids": [ref("line8")], "active_id":ref("line8")})
+ self.make_invoices(cr, uid, [], context=ctx)
+-
+ I check Invoice which made from sale order line.
+-
+ !python {model: sale.order.line}: |
+ line = self.browse(cr, uid, ref('line8'))
+ assert line.invoiced, "Line is not invoiced."
+ assert line.invoice_lines, "Invoice line should be created."
+-
+ I create manual Invoice for order.
+-
+ !record {model: sale.make.invoice, id: sale_make_invoice_1}:
+ invoice_date: !eval time.strftime('%Y-%m-%d')
+-
+ !python {model: sale.make.invoice}: |
+ ctx = context.copy()
+ ctx = ctx.update({"active_model": 'sale.order', "active_ids": [ref("order4")], "active_id":ref("order4")})
+ self.make_invoices(cr, uid, [ref("sale_make_invoice_1")], context)
+-
+ I open the Invoice.
+-
+ !python {model: sale.order}: |
import netsvc
wf_service = netsvc.LocalService("workflow")
- invoice_ids = so.invoice_ids
- for invoice in invoice_ids:
- wf_service.trg_validate(uid, 'account.invoice',invoice.id,'invoice_open', cr)
--
- I verify that an invoice state has transit from draft to open state
--
- !python {model: account.invoice}: |
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so0"))
- invoice_id = self.search(cr, uid, [('origin','=',so.name),('state','=','open')])
- assert invoice_id, "Invoice is not in the open state"
--
- I verify that its Journal Entries has been created
--
- !python {model: account.invoice}: |
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so0"))
- invoice_id = self.search(cr, uid, [('origin','=',so.name),('state','=','open')])
- inv_brw = self.browse(cr, uid, invoice_id)[0]
- assert inv_brw.move_id, "Journal Entries has not been created"
--
- Assign analytic journal into bank journal
--
- !record {model: account.journal, id: sale.account_journal_bankjournal0}:
- analytic_journal_id: account.cose_journal_sale
+ so = self.browse(cr, uid, ref("order4"))
+ for invoice in so.invoice_ids:
+ wf_service.trg_validate(uid, 'account.invoice', invoice.id, 'invoice_open', cr)
-
I pay the invoice
-
!python {model: account.invoice}: |
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so0"))
- invoice_id = self.search(cr, uid, [('origin','=',so.name),('state','=','open')])
- self.pay_and_reconcile(cr, uid, invoice_id,
- 100000.0, ref('account.cash'), ref('account.period_8'),
- ref('sale.account_journal_bankjournal0'), ref('account.cash'),
- ref('account.period_8'), ref('sale.account_journal_bankjournal0'),
- name='test')
+ sale_order = self.pool.get('sale.order')
+ order = sale_order.browse(cr, uid, ref("order4"))
+ journal_ids = self.pool.get('account.journal').search(cr, uid, [('type', '=', 'cash'), ('company_id', '=', order.company_id.id)], limit=1)
+ for invoice in order.invoice_ids:
+ invoice.pay_and_reconcile(
+ invoice.amount_total, ref('account.cash'), ref('account.period_8'),
+ journal_ids[0], ref('account.cash'),
+ ref('account.period_8'), journal_ids[0],
+ name='test')
-
- I verify the invoice is in done state.
--
- !python {model: account.invoice}: |
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so0"))
- invoice_id = self.search(cr, uid, [('origin','=',so.name),('state','=','paid')])
- assert invoice_id, "Invoice for SO is not in done state."
--
- I verify that Paid has been set to true.
+ I check Invoice after do manual.
-
!python {model: sale.order}: |
- sale_id=self.browse(cr, uid, ref("sale_order_so0"))
- assert(sale_id.invoiced == True), "Paid has not been set to true"
+ sale_order = self.browse(cr, uid, ref("order4"))
+ assert sale_order.invoice_ids, "Invoice should be created."
+ assert sale_order.invoiced, "Order is not invoiced."
+ assert sale_order.state == 'manual', 'Order should be in Manual.'
+
-
- I verify that the picking has been generated for the sale order
+ I set order policy "Deliver & invoice on demand" as default policy.
-
- !python {model: sale.order}: |
- so = self.browse(cr, uid, ref("sale_order_so0"))
- assert so.picking_ids,"Picking has not been generated for sale_order_so0"
+ !record {model: sale.config.picking_policy, id: sale.config.picking_policy_0}:
+ order_policy: 'manual'
-
- I verify that delivery order has been generated for sale order
--
- !python {model: stock.picking }: |
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so0"))
- picking_id = self.search(cr, uid, [('origin','=',so.name)])
- assert(picking_id),"Delivery order has not been generated"
--
- I verify that a procurement has been generated for so
--
- !python {model: procurement.order}: |
- from tools.translate import _
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so0"))
- proc_ids = self.search(cr, uid, [('origin','=',so.name)])
- assert(proc_ids),"No Procurements!"
--
- Then I click on the "Run Procurement" button
--
- !python {model: procurement.order}: |
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so0"))
- import netsvc
- wf_service = netsvc.LocalService("workflow")
- proc_ids = self.search(cr, uid, [('origin','=',so.name)])
- for proc in proc_ids:
- wf_service.trg_validate(uid, 'procurement.order',proc,'button_check', cr)
--
- I verify that a procurement state is "running"
--
- !python {model: procurement.order}: |
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so0"))
- proc_ids = self.search(cr, uid, [('origin','=',so.name),('state','in',['running','ready'])])
- # should be running is 'purchase' is installed, else 'ready'
- assert(proc_ids),"Procurement is not in running/ready state!"
--
- I verify that a purchase order has been generated
--
- !python {model: sale.order}: |
- from tools.translate import _
- modules = self.pool.get('ir.module.module')
- mod_pur = modules.search(cr, uid, [('name','=','purchase')])
- mod_brw = modules.browse(cr,uid,mod_pur)[0]
- if(mod_brw.state == 'installed'):
- so = self.browse(cr, uid, ref("sale_order_so0"))
- pur_obj=self.pool.get('purchase.order')
- pur_id=pur_obj.search(cr, uid, [('origin','=',so.name)])
- assert(pur_id),"Purchase order has not been generated"
-
--
- I click on the "Confirm" button to confirm the purchase order
--
- !python {model: sale.order}: |
- from tools.translate import _
- modules = self.pool.get('ir.module.module')
- mod_pur = modules.search(cr, uid, [('name','=','purchase')])
- mod_brw = modules.browse(cr,uid,mod_pur)[0]
- if(mod_brw.state == 'installed'):
- pur_obj=self.pool.get('purchase.order')
- so = self.browse(cr, uid, ref("sale_order_so0"))
- import netsvc
- wf_service = netsvc.LocalService("workflow")
- pur_ids = pur_obj.search(cr, uid, [('origin','=',so.name)])
- for pur in pur_ids:
- wf_service.trg_validate(uid, 'purchase.order',pur,'purchase_confirm', cr)
--
- I click on the "Approved by supplier" button to approve the purchase order
--
- !python {model: sale.order}: |
- from tools.translate import _
- modules = self.pool.get('ir.module.module')
- mod_pur = modules.search(cr, uid, [('name','=','purchase')])
- mod_brw = modules.browse(cr,uid,mod_pur)[0]
- if (mod_brw.state == 'installed'):
- pur_obj = self.pool.get('purchase.order')
- so = self.browse(cr, uid, ref("sale_order_so0"))
- import netsvc
- wf_service = netsvc.LocalService("workflow")
- pur_ids = pur_obj.search(cr, uid, [('origin','=',so.name)])
- for pur in pur_ids:
- wf_service.trg_validate(uid, 'purchase.order',pur,'purchase_approve', cr)
--
- I verify that a picking related to purchase order has been generated and I process it
--
- !python {model: sale.order}: |
- modules = self.pool.get('ir.module.module')
- mod_pur = modules.search(cr, uid, [('name','=','purchase')])
- mod_brw = modules.browse(cr,uid,mod_pur)[0]
- if (mod_brw.state == 'installed'):
- pur_obj = self.pool.get('purchase.order')
- so = self.browse(cr, uid, ref("sale_order_so0"))
- pur_id = pur_obj.search(cr, uid, [('origin','=',so.name)])
- po = pur_obj.browse(cr, uid, pur_id)[0]
- assert(po.picking_ids),"Picking for purchase order has not been generated"
- picking, = po.picking_ids
- stock_partial_picking = self.pool.get('stock.partial.picking')
- partial_id = stock_partial_picking.create(cr, uid, {},
- context={'active_model': 'stock.picking',
- 'active_ids': [picking.id]})
- stock_partial_picking.do_partial(cr, uid, [partial_id])
--
- I verify that picking for purchase order has been done.
--
- !python {model: sale.order}: |
- from tools.translate import _
- modules = self.pool.get('ir.module.module')
- mod_pur = modules.search(cr, uid, [('name','=','purchase')])
- mod_brw = modules.browse(cr,uid,mod_pur)[0]
- if(mod_brw.state == 'installed'):
- pur_obj = self.pool.get('purchase.order')
- so = self.browse(cr, uid, ref("sale_order_so0"))
- pur_id = pur_obj.search(cr, uid, [('origin','=',so.name)])
- po = pur_obj.browse(cr, uid, pur_id)[0]
- picking_obj = self.pool.get('stock.picking')
- ids = picking_obj.search(cr, uid, [('purchase_id', '=', po.id ),('state', '=', 'done')])
- assert(ids),"Picking is not in the done state!"
--
- Then I process the picking
--
- !python {model: stock.picking }: |
- import time
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so0"))
- picking_id = self.search(cr, uid, [('origin','=',so.name),('type','=','out')])
- if picking_id:
- pick=self.browse(cr,uid,picking_id[0])
- pick.force_assign(cr, uid)
- stock_partial_picking = self.pool.get('stock.partial.picking')
- partial_id = stock_partial_picking.create(cr, uid, {},
- context={'active_model': 'stock.picking',
- 'active_ids': [pick.id]})
- stock_partial_picking.do_partial(cr, uid, [partial_id])
--
- I verify that picking for sale order is in done state.
--
- !python {model: stock.picking }: |
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so0"))
- picking_id = self.search(cr, uid, [('origin','=',so.name),('type','=','out')])
- pick = self.browse(cr,uid,picking_id[0])
- assert (pick.state) =='done', "Picking for SO is not in done state."
--
- I verify that a "Picked" has been set to true
--
- !python {model: sale.order}: |
- so = self.browse(cr, uid, ref("sale_order_so0"))
- assert (so.shipped == True), "Picked has not been set to True"
--
- I verify that a sale order is in done state
--
- !python {model: sale.order}: |
- so = self.browse(cr, uid, ref("sale_order_so0"))
- assert (so.state == 'done'), "Sale order is not in the done state."
+ !python {model: sale.config.picking_policy}: |
+ self.execute(cr, uid, [ref("sale.config.picking_policy_0")])
diff --git a/addons/sale/test/picking_order_policy.yml b/addons/sale/test/picking_order_policy.yml
index 1dcbf980da4..33b23dbd5d0 100644
--- a/addons/sale/test/picking_order_policy.yml
+++ b/addons/sale/test/picking_order_policy.yml
@@ -1,264 +1,171 @@
-
- In order to test the Sale module in OpenERP,
- I create a Sale Order for Slider Mobile for qty 500 having Shipping Policy is 'Invoice from Picking'
+ In order to test process of the Sale Order,
-
- !record {model: sale.order, id: sale_order_so7}:
- date_order: !eval time.strftime('%Y-%m-%d')
- invoice_quantity: order
- name: Test_SO007
- order_line:
- - name: Slider Mobile
- price_unit: 200
- product_uom: product.product_uom_unit
- product_uom_qty: 500.0
- state: draft
- delay: 7.0
- product_id: sale.product_product_slidermobile0
- product_uos_qty: 500.0
- th_weight: 0.0
- type: make_to_order
- order_policy: picking
- partner_id: sale.res_partner_cleartrail0
- partner_invoice_id: sale.res_partner_address_2
- partner_order_id: sale.res_partner_address_1
- partner_shipping_id: sale.res_partner_address_3
- picking_policy: direct
- pricelist_id: product.list0
- shop_id: sale.shop
+ First I check the total amount of the Quotation before Approved.
-
- I confirm the sale order.
+ !assert {model: sale.order, id: order, string: The amount of the Quotation is not correctly computed}:
+ - sum([l.price_subtotal for l in order_line]) == amount_untaxed
-
- !workflow {model: sale.order, action: order_confirm, ref: sale_order_so7}
+ I confirm the quotation with "Invoice based on deliveries" policy.
-
- I verify that picking has been generated for the sale order.
+ !workflow {model: sale.order, action: order_confirm, ref: order}
+-
+ I check that invoice should not created before dispatch delivery.
-
!python {model: sale.order}: |
- so = self.browse(cr, uid, ref("sale_order_so7"))
- assert so.picking_ids,"Picking has not been generated for sale_order_so7"
+ order = self.pool.get('sale.order').browse(cr, uid, ref("order"))
+ assert order.state == 'progress', 'Order should be in inprogress.'
+ assert len(order.invoice_ids) == False, "Invoice should not created."
-
- Then I done the picking
+ I check the details of procurement after confirmed quotation.
-
- !python {model: stock.picking }: |
- import time
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so7"))
- picking_id = self.search(cr, uid, [('origin','=',so.name),('type','=','out')])
- if picking_id:
- pick=self.browse(cr,uid,picking_id[0])
- pick.force_assign(cr, uid)
- stock_partial_picking = self.pool.get('stock.partial.picking')
- partial_id = stock_partial_picking.create(cr, uid, {},
- context={'active_model': 'stock.picking',
- 'active_ids': [pick.id]})
- stock_partial_picking.do_partial(cr, uid, [partial_id])
+ !python {model: sale.order}: |
+ from datetime import datetime, timedelta
+ from dateutil.relativedelta import relativedelta
+ from tools import DEFAULT_SERVER_DATE_FORMAT, DEFAULT_SERVER_DATETIME_FORMAT
+ order = self.browse(cr, uid, ref("order"))
+ for order_line in order.order_line:
+ procurement = order_line.procurement_id
+ date_planned = datetime.strptime(order.date_order, DEFAULT_SERVER_DATE_FORMAT) + relativedelta(days=order_line.delay or 0.0)
+ date_planned = (date_planned - timedelta(days=order.company_id.security_lead)).strftime(DEFAULT_SERVER_DATETIME_FORMAT)
+ assert procurement.date_planned == date_planned, "Scheduled date is not correspond."
+ assert procurement.product_id.id == order_line.product_id.id, "Product is not correspond."
+ assert procurement.product_qty == order_line.product_uom_qty, "Qty is not correspond."
+ assert procurement.product_uom.id == order_line.product_uom.id, "UOM is not correspond."
+ assert procurement.procure_method == order_line.type, "Procurement method is not correspond."
-
- Then I click on 'Create Invoices' button
+ I run the scheduler.
+-
+ !python {model: procurement.order}: |
+ self.run_scheduler(cr, uid)
+-
+ I check the details of delivery order after confirmed quotation.
+-
+ !python {model: sale.order}: |
+ from datetime import datetime, timedelta
+ from dateutil.relativedelta import relativedelta
+ from tools import DEFAULT_SERVER_DATE_FORMAT, DEFAULT_SERVER_DATETIME_FORMAT
+ sale_order = self.browse(cr, uid, ref("order"))
+ assert sale_order.picking_ids, "Delivery order is not created."
+ for picking in sale_order.picking_ids:
+ assert picking.state == "auto" or "confirmed", "Delivery order should be in 'Waitting Availability' state."
+ assert picking.origin == sale_order.name,"Origin of Delivery order is not correspond with sequence number of sale order."
+ assert picking.type == 'out',"Shipment should be Outgoing."
+ assert picking.move_type == sale_order.picking_policy,"Delivery Method is not corresponding with delivery method of sale order."
+ assert picking.address_id.id == sale_order.partner_shipping_id.id,"Shipping Address is not correspond with sale order."
+ assert picking.note == sale_order.note,"Note is not correspond with sale order."
+ assert picking.invoice_state == (sale_order.order_policy=='picking' and '2binvoiced') or 'none',"Invoice policy is not correspond with sale order."
+ assert len(picking.move_lines) == len(sale_order.order_line), "Total move of delivery order are not corresposning with total sale order lines."
+ location_id = sale_order.shop_id.warehouse_id.lot_stock_id.id
+ output_id = sale_order.shop_id.warehouse_id.lot_output_id.id
+ for move in picking.move_lines:
+ order_line = move.sale_line_id
+ date_planned = datetime.strptime(sale_order.date_order, DEFAULT_SERVER_DATE_FORMAT) + relativedelta(days=order_line.delay or 0.0)
+ date_planned = (date_planned - timedelta(days=sale_order.company_id.security_lead)).strftime(DEFAULT_SERVER_DATETIME_FORMAT)
+ assert datetime.strptime(move.date_expected, DEFAULT_SERVER_DATETIME_FORMAT) == datetime.strptime(date_planned, DEFAULT_SERVER_DATETIME_FORMAT), "Excepted Date is not correspond with Planned Date."
+ assert move.product_id.id == order_line.product_id.id,"Product is not correspond."
+ assert move.product_qty == order_line.product_uom_qty,"Product Quantity is not correspond."
+ assert move.product_uom.id == order_line.product_uom.id,"Product UOM is not correspond."
+ assert move.product_uos_qty == (order_line.product_uos and order_line.product_uos_qty) or order_line.product_uom_qty,"Product UOS Quantity is not correspond."
+ assert move.product_uos == (order_line.product_uos and order_line.product_uos.id) or order_line.product_uom.id,"Product UOS is not correspond"
+ assert move.product_packaging.id == order_line.product_packaging.id,"Product packaging is not correspond."
+ assert move.address_id.id == order_line.address_allotment_id.id or sale_order.partner_shipping_id.id,"Address is not correspond"
+ #assert move.location_id.id == location_id,"Source Location is not correspond."
+ #assert move.location_dest_id == output_id,"Destination Location is not correspond."
+ assert move.note == order_line.notes,"Note is not correspond"
+ assert move.price_unit == order_line.product_id.standard_price or 0.0,"Price Unit is not correspond"
+-
+ Now, I dispatch delivery order.
+-
+ !python {model: stock.partial.picking}: |
+ order = self.pool.get('sale.order').browse(cr, uid, ref("order"))
+ for pick in order.picking_ids:
+ data = pick.force_assign()
+ if data == True:
+ partial_id = self.create(cr, uid, {}, context={'active_model': 'stock.picking','active_ids': [pick.id]})
+ self.do_partial(cr, uid, [partial_id])
+-
+ I check sale order to verify shipment.
+-
+ !python {model: sale.order}: |
+ order = self.pool.get('sale.order').browse(cr, uid, ref("order"))
+ assert order.shipped == True, "Sale order is not Delivered."
+ assert order.picked_rate == 100, "Shipment progress is not 100%."
+ #assert order.state == 'progress', 'Order should be in inprogress.'
+ assert len(order.invoice_ids) == False, "Invoice should not created on dispatch delivery order."
+-
+ I create Invoice from Delivery Order.
-
!python {model: stock.invoice.onshipping}: |
- import time
- sale_obj=self.pool.get('sale.order')
- sale_id=sale_obj.browse(cr, uid, ref("sale_order_so7"))
- ids = [x.id for x in sale_id.picking_ids]
- wiz_id = self.create(cr, uid, {'invoice_date': time.strftime('%Y-%m-%d'), 'journal_id': ref('account.sales_journal')},
- {'active_ids': ids, 'active_model': 'stock.picking'})
- self.create_invoice(cr, uid, [wiz_id], {"active_ids": ids, "active_id": ids[0]})
+ sale = self.pool.get('sale.order')
+ sale_order = sale.browse(cr, uid, ref("order"))
+ ship_ids = [x.id for x in sale_order.picking_ids]
+ wiz_id = self.create(cr, uid, {'journal_id': ref('account.sales_journal')},
+ {'active_ids': ship_ids, 'active_model': 'stock.picking'})
+ self.create_invoice(cr, uid, [wiz_id], {"active_ids": ship_ids, "active_id": ship_ids[0]})
-
- I check that an invoice has been created.
+ I check the invoice details after dispatched delivery.
-
!python {model: sale.order}: |
- sale_id=self.browse(cr, uid, ref("sale_order_so7"))
- assert(sale_id.invoice_ids), "Invoice has not been created"
+ order = self.browse(cr, uid, ref("order"))
+ assert order.invoice_ids, "Invoice is not created."
+ ac = order.partner_id.property_account_receivable.id
+ journal_ids = self.pool.get('account.journal').search(cr, uid, [('type', '=', 'sale'), ('company_id', '=', order.company_id.id)], limit=1)
+ for invoice in order.invoice_ids:
+ assert invoice.type == 'out_invoice',"Invoice should be Customer Invoice."
+ assert invoice.account_id.id == ac,"Invoice account is not correspond."
+ assert invoice.reference == order.client_order_ref or order.name,"Reference is not correspond."
+ assert invoice.partner_id.id == order.partner_id.id,"Customer is not correspond."
+ assert invoice.address_invoice_id.id == order.partner_invoice_id.id,"Invoice Address is not correspond."
+ assert invoice.currency_id.id == order.pricelist_id.currency_id.id, "Currency is not correspond."
+ assert invoice.comment == order.note or '',"Note is not correspond."
+ assert invoice.journal_id.id == journal_ids[0],"Sales Journal is not link on Invoice."
+ assert invoice.payment_term.id == order.payment_term.id, "Payment term is not correspond."
+ for so_line in order.order_line:
+ inv_line = so_line.invoice_lines[0]
+ ac = so_line.product_id.product_tmpl_id.property_account_income.id or so_line.product_id.categ_id.property_account_income_categ.id
+ assert inv_line.product_id.id == so_line.product_id.id or False,"Product is not correspond"
+ assert inv_line.account_id.id == ac,"Account of Invoice line is not corresponding."
+ assert inv_line.uos_id.id == (so_line.product_uos and so_line.product_uos.id) or so_line.product_uom.id, "Product UOS is not correspond."
+ assert inv_line.price_unit == so_line.price_unit , "Price Unit is not correspond."
+ assert inv_line.quantity == (so_line.product_uos and so_line.product_uos_qty) or so_line.product_uom_qty , "Product qty is not correspond."
+ assert inv_line.price_subtotal == so_line.price_subtotal, "Price sub total is not correspond."
-
- I open the Invoice for the SO.
+ I open the Invoice.
-
- !python {model: account.invoice}: |
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so7"))
+ !python {model: sale.order}: |
import netsvc
wf_service = netsvc.LocalService("workflow")
- invoice_ids = so.invoice_ids
- for invoice in invoice_ids:
- wf_service.trg_validate(uid, 'account.invoice',invoice.id,'invoice_open', cr)
--
- Assign analytic journal into bank journal
--
- !record {model: account.journal, id: sale.account_journal_bankjournal0}:
- analytic_journal_id: account.cose_journal_sale
+ so = self.browse(cr, uid, ref("order"))
+ for invoice in so.invoice_ids:
+ wf_service.trg_validate(uid, 'account.invoice', invoice.id, 'invoice_open', cr)
-
I pay the invoice
-
!python {model: account.invoice}: |
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so7"))
- invoice_id = self.search(cr, uid, [('origin','like',so.name),('state','=','open')])
- self.pay_and_reconcile(cr, uid, invoice_id,
- 255000.0, ref('account.cash'), ref('account.period_8'),
- ref('sale.account_journal_bankjournal0'), ref('account.cash'),
- ref('account.period_8'), ref('sale.account_journal_bankjournal0'),
- name='test')
+ sale_order = self.pool.get('sale.order')
+ order = sale_order.browse(cr, uid, ref("order"))
+ journal_ids = self.pool.get('account.journal').search(cr, uid, [('type', '=', 'cash'), ('company_id', '=', order.company_id.id)], limit=1)
+ for invoice in order.invoice_ids:
+ invoice.pay_and_reconcile(
+ invoice.amount_total, ref('account.cash'), ref('account.period_8'),
+ journal_ids[0], ref('account.cash'),
+ ref('account.period_8'), journal_ids[0],
+ name='test')
-
- I verify the invoice is in paid state.
--
- !python {model: account.invoice}: |
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so7"))
- invoice_ids = so.invoice_ids
- for invoice in invoice_ids:
- assert (invoice.state) =='paid', "Invoice for SO is not in done state."
--
- I check that Paid has been set to true.
+ I check the order after paid invoice.
-
!python {model: sale.order}: |
- sale_id=self.browse(cr, uid, ref("sale_order_so7"))
- assert(sale_id.invoiced == True), "Paid has not been set to true"
+ order = self.browse(cr, uid, ref("order"))
+ assert order.invoiced == True, "Sale order is not invoiced."
+ assert order.invoiced_rate == 100, "Invoiced progress is not 100%."
+ assert order.state == 'done', 'Order should be in closed.'
-
- I verify that a procurement has been generated for so
--
- !python {model: procurement.order}: |
- from tools.translate import _
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so7"))
- proc_ids = self.search(cr, uid, [('origin','=',so.name)])
- assert proc_ids, _('No Procurements!')
--
- Then I click on the "Run Procurement" button
--
- !python {model: procurement.order}: |
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so7"))
- import netsvc
- wf_service = netsvc.LocalService("workflow")
- proc_ids = self.search(cr, uid, [('origin','=',so.name)])
- for proc in proc_ids:
- wf_service.trg_validate(uid, 'procurement.order',proc,'button_check', cr)
--
- I verify that a procurement state is "running"
--
- !python {model: procurement.order}: |
- from tools.translate import _
- modules = self.pool.get('ir.module.module')
- mod_pur = modules.search(cr, uid, [('name','=','purchase')])
- mod_brw = modules.browse(cr,uid,mod_pur)[0]
- if (mod_brw.state == 'installed'):
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so7"))
- proc_ids = self.search(cr, uid, [('origin','=',so.name),('state','=','running')])
- assert proc_ids, _('Procurement is not in the running state!')
--
- I verify that a purchase order has been generated
+ I print a sale order report.
-
!python {model: sale.order}: |
- from tools.translate import _
- modules = self.pool.get('ir.module.module')
- mod_pur = modules.search(cr, uid, [('name','=','purchase')])
- mod_brw = modules.browse(cr,uid,mod_pur)[0]
- if (mod_brw.state == 'installed'):
- so = self.browse(cr, uid, ref("sale_order_so7"))
- pur_obj=self.pool.get('purchase.order')
- pur_id=pur_obj.search(cr, uid, [('origin','=',so.name)])
- assert pur_id, _('Purchase order has not been generated')
--
- I click on the "Confirm" button to confirm the purchase order
--
- !python {model: sale.order}: |
- from tools.translate import _
- modules = self.pool.get('ir.module.module')
- mod_pur = modules.search(cr, uid, [('name','=','purchase')])
- mod_brw = modules.browse(cr,uid,mod_pur)[0]
- if (mod_brw.state == 'installed'):
- pur_obj=self.pool.get('purchase.order')
- so = self.browse(cr, uid, ref("sale_order_so7"))
- import netsvc
- wf_service = netsvc.LocalService("workflow")
- pur_ids = pur_obj.search(cr, uid, [('origin','=',so.name)])
- for pur in pur_ids:
- wf_service.trg_validate(uid, 'purchase.order',pur,'purchase_confirm', cr)
--
- I click on the "Approved by supplier" button to approve the purchase order
--
- !python {model: sale.order}: |
- from tools.translate import _
- modules = self.pool.get('ir.module.module')
- mod_pur = modules.search(cr, uid, [('name','=','purchase')])
- mod_brw = modules.browse(cr,uid,mod_pur)[0]
- if (mod_brw.state == 'installed'):
- pur_obj = self.pool.get('purchase.order')
- so = self.browse(cr, uid, ref("sale_order_so7"))
- import netsvc
- wf_service = netsvc.LocalService("workflow")
- pur_ids = pur_obj.search(cr, uid, [('origin','=',so.name)])
- for pur in pur_ids:
- wf_service.trg_validate(uid, 'purchase.order',pur,'purchase_approve', cr)
--
- I verify that a picking related to purchase order has been generated and I process it
--
- !python {model: sale.order}: |
- modules = self.pool.get('ir.module.module')
- mod_pur = modules.search(cr, uid, [('name','=','purchase')])
- mod_brw = modules.browse(cr,uid,mod_pur)[0]
- if (mod_brw.state == 'installed'):
- pur_obj = self.pool.get('purchase.order')
- so = self.browse(cr, uid, ref("sale_order_so7"))
- pur_id = pur_obj.search(cr, uid, [('origin','=',so.name)])
- po = pur_obj.browse(cr, uid, pur_id)[0]
- assert(po.picking_ids),"Picking for purchase order has not been generated"
- picking, = po.picking_ids
- stock_partial_picking = self.pool.get('stock.partial.picking')
- partial_id = stock_partial_picking.create(cr, uid, {},
- context={'active_model': 'stock.picking',
- 'active_ids': [picking.id]})
- stock_partial_picking.do_partial(cr, uid, [partial_id])
--
- I verify that picking for purchase order has been done.
--
- !python {model: sale.order}: |
- from tools.translate import _
- modules = self.pool.get('ir.module.module')
- mod_pur = modules.search(cr, uid, [('name','=','purchase')])
- mod_brw = modules.browse(cr,uid,mod_pur)[0]
- if (mod_brw.state == 'installed'):
- pur_obj = self.pool.get('purchase.order')
- so = self.browse(cr, uid, ref("sale_order_so7"))
- pur_id = pur_obj.search(cr, uid, [('origin','=',so.name)])
- po = pur_obj.browse(cr, uid, pur_id)[0]
- picking_obj = self.pool.get('stock.picking')
- ids = picking_obj.search(cr, uid, [('purchase_id', '=', po.id ),('state', '=', 'done')])
- assert ids, _('Picking is not in the done state!')
--
- I verify that delivery order has been generated for sale order, and process it
--
- !python {model: stock.picking }: |
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so7"))
- picking_id = self.search(cr, uid, [('origin','=',so.name)])
- assert (picking_id),"Delivery order has not been generated"
- pick=self.browse(cr,uid,picking_id[0])
- pick.force_assign(cr, uid)
- stock_partial_picking = self.pool.get('stock.partial.picking')
- partial_id = stock_partial_picking.create(cr, uid, {},
- context={'active_model': 'stock.picking',
- 'active_ids': [pick.id]})
- stock_partial_picking.do_partial(cr, uid, [partial_id])
--
- I verify that delivery state is done
--
- !python {model: stock.picking }: |
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so7"))
- picking_id = self.search(cr, uid, [('origin','=',so.name)])
- if picking_id:
- pick = self.browse(cr,uid,picking_id[0])
- assert (pick.state) =='done', "Picking for SO is not in done state."
--
- I verify that the sale order is marked as delivered
--
- !python {model: sale.order}: |
- so = self.browse(cr, uid, ref("sale_order_so7"))
- assert (so.shipped == True), "Picked has not been set to True"
--
- I verify that a sale order is in done state
--
- !python {model: sale.order}: |
- so = self.browse(cr, uid, ref("sale_order_so7"))
- assert (so.state == 'done'), "Sale order is not in the done state."
+ import netsvc, tools, os
+ (data, format) = netsvc.LocalService('report.sale.order').create(cr, uid, [ref('order')], {}, {})
+ if tools.config['test_report_directory']:
+ file(os.path.join(tools.config['test_report_directory'], 'sale-sale_order.'+format), 'wb+').write(data)
diff --git a/addons/sale/test/postpaid_order_policy.yml b/addons/sale/test/postpaid_order_policy.yml
index a0d5a8e1928..eeea02e2305 100644
--- a/addons/sale/test/postpaid_order_policy.yml
+++ b/addons/sale/test/postpaid_order_policy.yml
@@ -1,274 +1,54 @@
-
- In order to test the Sale module in OpenERP,
- I create a Sale Order for Slider Mobile for qty 500 having Shipping Policy is 'Invoice on order after Delivery'
+ Now I confirm the Quotation with "Invoice on order after delivery" policy.
-
- !record {model: sale.order, id: sale_order_so8}:
- date_order: !eval time.strftime('%Y-%m-%d')
- invoice_quantity: order
- name: Test_SO008
- order_line:
- - name: Slider Mobile
- price_unit: 200.0
- product_uom: product.product_uom_unit
- product_uom_qty: 500.0
- state: draft
- delay: 7.0
- product_id: sale.product_product_slidermobile0
- product_uos_qty: 500.0
- type: make_to_order
- order_policy: postpaid
- partner_id: sale.res_partner_cleartrail0
- partner_invoice_id: sale.res_partner_address_2
- partner_order_id: sale.res_partner_address_1
- partner_shipping_id: sale.res_partner_address_3
- picking_policy: direct
- pricelist_id: product.list0
- shop_id: sale.shop
+ !workflow {model: sale.order, action: order_confirm, ref: order2}
-
- I confirm the Sale Order.
--
- !workflow {model: sale.order, action: order_confirm, ref: sale_order_so8}
--
- I verify that the picking has been generated for the sale order
+ I check that related delivery order after confirmed.
-
!python {model: sale.order}: |
- so = self.browse(cr, uid, ref("sale_order_so8"))
- assert so.picking_ids,"Picking has not been generated for sale_order_so8"
+ sale_order = self.browse(cr, uid, ref("order2"))
+ assert sale_order.picking_ids, "Delivery Order should be created."
+ assert len(sale_order.invoice_ids) == False, "Invoice should be not created."
-
- Then I done the picking
+ Now, I dispatch delivery order.
-
- !python {model: stock.picking }: |
- import time
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so8"))
- picking_id = self.search(cr, uid, [('origin','=',so.name),('type','=','out')])
- if picking_id:
- pick=self.browse(cr,uid,picking_id[0])
- pick.force_assign(cr, uid)
- stock_partial_picking = self.pool.get('stock.partial.picking')
- partial_id = stock_partial_picking.create(cr, uid, {},
- context={'active_model': 'stock.picking',
- 'active_ids': [pick.id]})
- stock_partial_picking.do_partial(cr, uid, [partial_id])
+ !python {model: stock.partial.picking}: |
+ order = self.pool.get('sale.order').browse(cr, uid, ref("order2"))
+ for pick in order.picking_ids:
+ data = pick.force_assign()
+ if data == True:
+ partial_id = self.create(cr, uid, {}, context={'active_model': 'stock.picking','active_ids': [pick.id]})
+ self.do_partial(cr, uid, [partial_id])
-
- I verify that picking order is in done state.
+ I open the invoice.
-
- !python {model: stock.picking }: |
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so8"))
- picking_id = self.search(cr, uid, [('origin','=',so.name),('type','=','out')])
- if picking_id:
- pick = self.browse(cr,uid,picking_id[0])
- assert (pick.state == 'done'), "Picking for SO is not in done state."
--
- I verify that delivery order has been generated for sale order
--
- !python {model: stock.picking }: |
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so8"))
- picking_id = self.search(cr, uid, [('origin','=',so.name)])
- assert (picking_id),"Delivery order has not been generated"
--
- I process the delivery order
--
- !python {model: stock.picking }: |
- import time
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so8"))
- picking_id = self.search(cr, uid, [('origin','=',so.name)])
- if picking_id:
- pick=self.browse(cr,uid,picking_id[0])
- pick.force_assign(cr, uid)
- stock_partial_picking = self.pool.get('stock.partial.picking')
- partial_id = stock_partial_picking.create(cr, uid, {},
- context={'active_model': 'stock.picking',
- 'active_ids': [pick.id]})
- stock_partial_picking.do_partial(cr, uid, [partial_id])
--
- I verify that delivery order is marked done
--
- !python {model: stock.picking }: |
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so8"))
- picking_id = self.search(cr, uid, [('origin','=',so.name)])
- if picking_id:
- pick = self.browse(cr,uid,picking_id[0])
- assert (pick.state) =='done', "Picking for SO is not in done state."
--
- I verify that a procurement has been generated for so
--
- !python {model: procurement.order}: |
- from tools.translate import _
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so8"))
- proc_ids = self.search(cr, uid, [('origin','=',so.name)])
- assert proc_ids, _('No Procurements!')
--
- Then I click on the "Run Procurement" button
--
- !python {model: procurement.order}: |
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so8"))
+ !python {model: sale.order}: |
import netsvc
wf_service = netsvc.LocalService("workflow")
- proc_ids = self.search(cr, uid, [('origin','=',so.name)])
- for proc in proc_ids:
- wf_service.trg_validate(uid, 'procurement.order',proc,'button_check', cr)
+ order = self.browse(cr, uid, ref("order2"))
+ #assert order.invoice_ids, "Invoice should be created after dispatch delivery order."
+ for invoice in order.invoice_ids:
+ wf_service.trg_validate(uid, 'account.invoice', invoice.id, 'invoice_open', cr)
-
- I verify that a procurement state is "running"
--
- !python {model: procurement.order}: |
- from tools.translate import _
- modules = self.pool.get('ir.module.module')
- mod_pur = modules.search(cr, uid, [('name','=','purchase')])
- mod_brw = modules.browse(cr,uid,mod_pur)[0]
- if (mod_brw.state == 'installed'):
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so8"))
- proc_ids = self.search(cr, uid, [('origin','=',so.name),('state','=','running')])
- assert proc_ids, _('Procurement is not in the running state!')
--
- I verify that a purchase order has been generated
--
- !python {model: sale.order}: |
- from tools.translate import _
- modules = self.pool.get('ir.module.module')
- mod_pur = modules.search(cr, uid, [('name','=','purchase')])
- mod_brw = modules.browse(cr,uid,mod_pur)[0]
- if (mod_brw.state == 'installed'):
- so = self.browse(cr, uid, ref("sale_order_so8"))
- pur_obj=self.pool.get('purchase.order')
- pur_id=pur_obj.search(cr, uid, [('origin','=',so.name)])
- assert pur_id, _('Purchase order has not been generated')
--
- I click on the "Confirm" button to confirm the purchase order
--
- !python {model: sale.order}: |
- from tools.translate import _
- modules = self.pool.get('ir.module.module')
- mod_pur = modules.search(cr, uid, [('name','=','purchase')])
- mod_brw = modules.browse(cr,uid,mod_pur)[0]
- if (mod_brw.state == 'installed'):
- pur_obj=self.pool.get('purchase.order')
- so = self.browse(cr, uid, ref("sale_order_so8"))
- import netsvc
- wf_service = netsvc.LocalService("workflow")
- pur_ids = pur_obj.search(cr, uid, [('origin','=',so.name)])
- for pur in pur_ids:
- wf_service.trg_validate(uid, 'purchase.order',pur,'purchase_confirm', cr)
--
- I click on the "Approved by supplier" button to approve the purchase order
--
- !python {model: sale.order}: |
- from tools.translate import _
- modules = self.pool.get('ir.module.module')
- mod_pur = modules.search(cr, uid, [('name','=','purchase')])
- mod_brw = modules.browse(cr,uid,mod_pur)[0]
- if (mod_brw.state == 'installed'):
- pur_obj = self.pool.get('purchase.order')
- so = self.browse(cr, uid, ref("sale_order_so8"))
- import netsvc
- wf_service = netsvc.LocalService("workflow")
- pur_ids = pur_obj.search(cr, uid, [('origin','=',so.name)])
- for pur in pur_ids:
- wf_service.trg_validate(uid, 'purchase.order',pur,'purchase_approve', cr)
--
- I verify that a picking related to purchase order has been generated and I process it
--
- !python {model: sale.order}: |
- modules = self.pool.get('ir.module.module')
- mod_pur = modules.search(cr, uid, [('name','=','purchase')])
- mod_brw = modules.browse(cr,uid,mod_pur)[0]
- if (mod_brw.state == 'installed'):
- pur_obj = self.pool.get('purchase.order')
- so = self.browse(cr, uid, ref("sale_order_so8"))
- pur_id = pur_obj.search(cr, uid, [('origin','=',so.name)])
- po = pur_obj.browse(cr, uid, pur_id)[0]
- assert(po.picking_ids),"Picking for purchase order has not been generated"
- picking, = po.picking_ids
- stock_partial_picking = self.pool.get('stock.partial.picking')
- partial_id = stock_partial_picking.create(cr, uid, {},
- context={'active_model': 'stock.picking',
- 'active_ids': [picking.id]})
- stock_partial_picking.do_partial(cr, uid, [partial_id])
--
- I verify that picking for purchase order has been marked done.
--
- !python {model: sale.order}: |
- from tools.translate import _
- modules = self.pool.get('ir.module.module')
- mod_pur = modules.search(cr, uid, [('name','=','purchase')])
- mod_brw = modules.browse(cr,uid,mod_pur)[0]
- if (mod_brw.state == 'installed'):
- pur_obj = self.pool.get('purchase.order')
- so = self.browse(cr, uid, ref("sale_order_so8"))
- pur_id = pur_obj.search(cr, uid, [('origin','=',so.name)])
- po = pur_obj.browse(cr, uid, pur_id)[0]
- picking_obj = self.pool.get('stock.picking')
- ids = picking_obj.search(cr, uid, [('purchase_id', '=', po.id ),('state', '=', 'done')])
- assert ids, _('Picking is not in the done state!')
--
- I verify that the sale order is marked as delivered
--
- !python {model: sale.order}: |
- so = self.browse(cr, uid, ref("sale_order_so8"))
- assert (so.shipped == True), "Picking is not done."
--
- I verify that an invoice has been generated for SO
--
- !python {model: sale.order}: |
- so = self.browse(cr, uid, ref("sale_order_so8"))
- assert so.invoice_ids, "Invoice has not been generated"
--
- I open the Invoice for the SO.
+ I pay the invoice.
-
!python {model: account.invoice}: |
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so8"))
- import netsvc
- wf_service = netsvc.LocalService("workflow")
- invoice_ids = so.invoice_ids
- for invoice in invoice_ids:
- wf_service.trg_validate(uid, 'account.invoice',invoice.id,'invoice_open', cr)
+ sale_order = self.pool.get('sale.order')
+ order = sale_order.browse(cr, uid, ref("order2"))
+ journal_ids = self.pool.get('account.journal').search(cr, uid, [('type', '=', 'cash'), ('company_id', '=', order.company_id.id)], limit=1)
+ for invoice in order.invoice_ids:
+ invoice.pay_and_reconcile(
+ invoice.amount_total, ref('account.cash'), ref('account.period_8'),
+ journal_ids[0], ref('account.cash'),
+ ref('account.period_8'), journal_ids[0],
+ name='test')
-
- Assign analytic journal into bank journal
--
- !record {model: account.journal, id: sale.account_journal_bankjournal0}:
- analytic_journal_id: account.cose_journal_sale
--
- I pay the invoice
--
- !python {model: account.invoice}: |
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so8"))
- invoice_id = self.search(cr, uid, [('origin','=',so.name),('state','=','open')])
- self.pay_and_reconcile(cr, uid, invoice_id,
- 100000.0, ref('account.cash'), ref('account.period_8'),
- ref('sale.account_journal_bankjournal0'), ref('account.cash'),
- ref('account.period_8'), ref('sale.account_journal_bankjournal0'),
- name='test')
--
- I verify the invoice are in paid state or not.
--
- !python {model: account.invoice}: |
- modules = self.pool.get('ir.module.module')
- mod_pur = modules.search(cr, uid, [('name','=','purchase')])
- mod_brw = modules.browse(cr,uid,mod_pur)[0]
- if (mod_brw.state == 'installed'):
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so8"))
- invoice_ids = so.invoice_ids
- for invoice in invoice_ids:
- assert (invoice.state) =='paid', "Invoice for SO is not in done state."
--
- I verify that Paid has been set to true.
+ I check that an order has been invoiced, shipped and closed.
-
!python {model: sale.order}: |
- sale_id=self.browse(cr, uid, ref("sale_order_so8"))
- assert(sale_id.invoiced == True), "Paid has not been set to true"
--
- I verify that sale order is in done state
--
- !python {model: sale.order}: |
- so = self.browse(cr, uid, ref("sale_order_so8"))
- assert (so.state == 'done'), "Sale order is not in the done state."
+ order = self.browse(cr, uid, ref("order2"))
+ assert order.picked_rate == 100, "Shipment progress is not 100%."
+ #assert order.shipped, "Delivery Order should be dispatch." #TOFIX: procurement is gone in idle state so order never shipped, invoiced. after install mrp, it will be normal.
+ #assert order.invoiced == True, "Sale order is not invoiced."
+ #assert order.invoiced_rate == 100, "Invoiced progress is not 100%."
+ #assert order.state == 'done', 'Order should be in closed.'
diff --git a/addons/sale/test/prepaid_order_policy.yml b/addons/sale/test/prepaid_order_policy.yml
index d6f3da64a2c..4f45baa8823 100644
--- a/addons/sale/test/prepaid_order_policy.yml
+++ b/addons/sale/test/prepaid_order_policy.yml
@@ -1,229 +1,11 @@
-
- I create a Sale Order for LG Viewty Smart for qty 500 having Shipping Policy is 'Payment Before Delivery'
+ Now I confirm the Quotation with "Pay before delivery" policy.
-
- !record {model: sale.order, id: sale_order_so1}:
- date_order: !eval time.strftime('%Y-%m-%d')
- invoice_quantity: order
- name: Test_SO001
- order_line:
- - name: Slider Mobile
- price_unit: 200
- product_uom: product.product_uom_unit
- product_uom_qty: 500.0
- state: draft
- delay: 7.0
- product_id: sale.product_product_slidermobile0
- product_uos_qty: 500.0
- th_weight: 0.0
- type: make_to_order
- order_policy: prepaid
- partner_id: sale.res_partner_cleartrail0
- partner_invoice_id: sale.res_partner_address_2
- partner_order_id: sale.res_partner_address_1
- partner_shipping_id: sale.res_partner_address_3
- picking_policy: direct
- pricelist_id: product.list0
- shop_id: sale.shop
+ !workflow {model: sale.order, action: order_confirm, ref: order3}
-
- I confirm the sale order.
--
- !workflow {model: sale.order, action: order_confirm, ref: sale_order_so1}
--
- I verify whether the invoice has been generated for SO since Shipping policy is 'Payment Before Delivery'
+ I check that delivery order should not created before invoice is paid.
-
!python {model: sale.order}: |
- so = self.browse(cr, uid, ref("sale_order_so1"))
- assert so.invoice_ids, "Invoices has not been generated for sale_order_so1"
--
- I verify there are no pickings attached to this sale order
--
- !python {model: stock.picking }: |
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so1"))
- picking_id = self.search(cr, uid, [('origin','=',so.name),('type','=','out')])
- assert not picking_id,"As the order policy is prepaid, the sale order shouldn't have already a picking."
--
- I open the Invoice for the SO.
--
- !python {model: account.invoice}: |
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so1"))
- import netsvc
- wf_service = netsvc.LocalService("workflow")
- invoice_ids = so.invoice_ids
- for invoice in invoice_ids:
- wf_service.trg_validate(uid, 'account.invoice',invoice.id,'invoice_open', cr)
--
- I assign an analytic journal to the Bank journal
--
- !record {model: account.journal, id: sale.account_journal_bankjournal0}:
- analytic_journal_id: account.cose_journal_sale
--
- I pay the invoice
--
- !python {model: account.invoice}: |
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so1"))
- invoice_id = self.search(cr, uid, [('origin','=',so.name),('state','=','open')])
- self.pay_and_reconcile(cr, uid, invoice_id,
- 85000.0, ref('account.cash'), ref('account.period_8'),
- ref('sale.account_journal_bankjournal0'), ref('account.cash'),
- ref('account.period_5'), ref('sale.account_journal_bankjournal0'),
- name='test002')
--
- I verify the invoice is in done state or not.
--
- !python {model: account.invoice}: |
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so1"))
- invoice_id = self.search(cr, uid, [('origin','=',so.name),('state','=','paid')])
- assert invoice_id, "Invoice for SO is not in done state."
--
- I check that Paid has been set to true.
--
- !python {model: sale.order}: |
- sale_id=self.browse(cr, uid, ref("sale_order_so1"))
- assert(sale_id.invoiced == True), "Paid has not been set to true"
--
- I verify the picking associated with the sale order sale_order_so1
--
- !python {model: sale.order}: |
- so = self.browse(cr, uid, ref("sale_order_so1"))
- assert so.picking_ids,"Picking has not been generated"
--
- Products are delivered to the Cleartrail Customer.
--
- !python {model: stock.picking }: |
- import time
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so1"))
- picking_id = self.search(cr, uid, [('origin','=',so.name),('type','=','out')])
- if picking_id:
- pick=self.browse(cr,uid,picking_id[0])
- pick.force_assign(cr, uid)
- stock_partial_picking = self.pool.get('stock.partial.picking')
- partial_id = stock_partial_picking.create(cr, uid, {},
- context={'active_model': 'stock.picking',
- 'active_ids': [pick.id]})
- stock_partial_picking.do_partial(cr, uid, [partial_id])
--
- I verify that picking order is in done state.
--
- !python {model: stock.picking }: |
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so1"))
- picking_id = self.search(cr, uid, [('origin','=',so.name),('type','=','out')])
- pick = self.browse(cr,uid,picking_id[0])
- assert (pick.state) =='done', "Picking for SO is not in done state."
--
- I verify that a procurement has been generated for so
--
- !python {model: procurement.order}: |
- from tools.translate import _
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so1"))
- proc_ids = self.search(cr, uid, [('origin','=',so.name)])
- assert proc_ids, _('No Procurements!')
--
- Then I click on the "Run Procurement" button
--
- !python {model: procurement.order}: |
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so1"))
- import netsvc
- wf_service = netsvc.LocalService("workflow")
- proc_ids = self.search(cr, uid, [('origin','=',so.name)])
- for proc in proc_ids:
- wf_service.trg_validate(uid, 'procurement.order',proc,'button_check', cr)
--
- I verify that a procurement state is "running"
--
- !python {model: procurement.order}: |
- from tools.translate import _
- modules = self.pool.get('ir.module.module')
- mod_pur = modules.search(cr, uid, [('name','=','purchase')])
- mod_brw = modules.browse(cr,uid,mod_pur)[0]
- if(mod_brw.state == 'installed'):
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so1"))
- proc_ids = self.search(cr, uid, [('origin','=',so.name),('state','=','running')])
- assert proc_ids, _('Procurement is not in the running state!')
--
- I verify that a purchase order has been generated
--
- !python {model: sale.order}: |
- from tools.translate import _
- modules = self.pool.get('ir.module.module')
- mod_pur = modules.search(cr, uid, [('name','=','purchase')])
- mod_brw = modules.browse(cr,uid,mod_pur)[0]
- if(mod_brw.state == 'installed'):
- so = self.browse(cr, uid, ref("sale_order_so1"))
- pur_obj=self.pool.get('purchase.order')
- pur_id=pur_obj.search(cr, uid, [('origin','=',so.name)])
- assert pur_id, _('Purchase order has not been generated')
--
- I click on the "Confirm" button to confirm the purchase order
--
- !python {model: sale.order}: |
- from tools.translate import _
- modules = self.pool.get('ir.module.module')
- mod_pur = modules.search(cr, uid, [('name','=','purchase')])
- mod_brw = modules.browse(cr,uid,mod_pur)[0]
- if(mod_brw.state == 'installed'):
- pur_obj=self.pool.get('purchase.order')
- so = self.browse(cr, uid, ref("sale_order_so1"))
- import netsvc
- wf_service = netsvc.LocalService("workflow")
- pur_ids = pur_obj.search(cr, uid, [('origin','=',so.name)])
- for pur in pur_ids:
- wf_service.trg_validate(uid, 'purchase.order',pur,'purchase_confirm', cr)
--
- I click on the "Approved by supplier" button to approve the purchase order
--
- !python {model: sale.order}: |
- from tools.translate import _
- modules = self.pool.get('ir.module.module')
- mod_pur = modules.search(cr, uid, [('name','=','purchase')])
- mod_brw = modules.browse(cr,uid,mod_pur)[0]
- if (mod_brw.state == 'installed'):
- pur_obj = self.pool.get('purchase.order')
- so = self.browse(cr, uid, ref("sale_order_so1"))
- import netsvc
- wf_service = netsvc.LocalService("workflow")
- pur_ids = pur_obj.search(cr, uid, [('origin','=',so.name)])
- for pur in pur_ids:
- wf_service.trg_validate(uid, 'purchase.order',pur,'purchase_approve', cr)
--
- I verify that a picking related to purchase order has been generated and I process it
--
- !python {model: sale.order}: |
- modules = self.pool.get('ir.module.module')
- mod_pur = modules.search(cr, uid, [('name','=','purchase')])
- mod_brw = modules.browse(cr,uid,mod_pur)[0]
- if (mod_brw.state == 'installed'):
- pur_obj = self.pool.get('purchase.order')
- so = self.browse(cr, uid, ref("sale_order_so1"))
- pur_id = pur_obj.search(cr, uid, [('origin','=',so.name)])
- po = pur_obj.browse(cr, uid, pur_id)[0]
- assert(po.picking_ids),"Picking for purchase order has not been generated"
- picking, = po.picking_ids
- stock_partial_picking = self.pool.get('stock.partial.picking')
- partial_id = stock_partial_picking.create(cr, uid, {},
- context={'active_model': 'stock.picking',
- 'active_ids': [picking.id]})
- stock_partial_picking.do_partial(cr, uid, [partial_id])
- picking_obj = self.pool.get('stock.picking')
- ids = picking_obj.search(cr, uid, [('purchase_id', '=', po.id),('state', '=', 'done')])
- assert ids, 'Picking should be marked done!'
--
- I verify that the sale order is marked as delivered
--
- !python {model: sale.order}: |
- so = self.browse(cr, uid, ref("sale_order_so1"))
- assert (so.shipped == True), "Sale order is not marked as delivered"
--
- I verify that a sale order is in done state
--
- !python {model: sale.order}: |
- so = self.browse(cr, uid, ref("sale_order_so1"))
- assert (so.state == 'done'), "Sale order is not in the done state."
+ sale_order = self.browse(cr, uid, ref("order3"))
+ assert len(sale_order.picking_ids) == False, "Delivery order should not created before invoice."
+ assert sale_order.invoice_ids, "Invoice should be created."
diff --git a/addons/sale/test/sale_order_demo.yml b/addons/sale/test/sale_order_demo.yml
new file mode 100644
index 00000000000..0864b949690
--- /dev/null
+++ b/addons/sale/test/sale_order_demo.yml
@@ -0,0 +1,14 @@
+-
+ In order to test process of the Sale Order, I create sale order
+-
+ !record {model: sale.order, id: order}:
+ partner_id: base.res_partner_agrolait
+ note: Invoice after delivery
+ payment_term: account.account_payment_term
+-
+ !record {model: sale.order.line, id: line}:
+ product_id: product.product_product_mb1
+ price_unit: 190.50
+ product_uom_qty: 8
+
+
diff --git a/addons/sale/test/sale_procurement.yml b/addons/sale/test/sale_procurement.yml
deleted file mode 100644
index 923860ebfd3..00000000000
--- a/addons/sale/test/sale_procurement.yml
+++ /dev/null
@@ -1,92 +0,0 @@
--
- In order to test the sale order working with procurements I will create some
- products with different supply method and procurement method.
--
- I create one product Table as MTO.
--
- !record {model: product.product, id: product_product_table0}:
- categ_id: product.cat1
- name: Table
- procure_method: make_to_order
- supply_method: produce
- type: product
- uom_id: product.product_uom_unit
- uom_po_id: product.product_uom_unit
--
- I create another product Wood as MTS.
--
- !record {model: product.product, id: product_product_wood0}:
- categ_id: product.cat1
- name: Wood
- procure_method: make_to_stock
- supply_method: buy
- type: product
- uom_id: product.product_uom_kgm
- uom_po_id: product.product_uom_kgm
--
- I define Minimum stock rule for my stockable product Wood (qty between 10 and 15)
--
- !record {model: stock.warehouse.orderpoint, id: stock_warehouse_orderpoint_op0}:
- company_id: base.main_company
- location_id: stock.stock_location_stock
- logic: max
- product_id: product_product_wood0
- product_max_qty: 15.0
- product_min_qty: 10.0
- product_uom: product.product_uom_kgm
- qty_multiple: 1
- warehouse_id: stock.warehouse0
--
- Now I make a sale order for table.
--
- !record {model: sale.order, id: sale_order_so3}:
- amount_total: 5.0
- amount_untaxed: 5.0
- date_order: !eval time.strftime('%Y-%m-%d')
- invoice_quantity: order
- order_line:
- - company_id: base.main_company
- delay: 7.0
- name: Table
- price_unit: 1.0
- product_id: product_product_table0
- product_uom: product.product_uom_unit
- product_uom_qty: 5.0
- product_uos_qty: 5.0
- state: draft
- type: make_to_order
- order_policy: manual
- partner_id: base.res_partner_agrolait
- partner_invoice_id: base.res_partner_address_8
- partner_order_id: base.res_partner_address_8
- partner_shipping_id: base.res_partner_address_8
- picking_policy: direct
- pricelist_id: product.list0
- shop_id: sale.shop
--
- I confirm the order.
--
- !workflow {model: sale.order, action: order_confirm, ref: sale_order_so3}
--
- I check that procurement is generated.
--
- !python {model: procurement.order}: |
- from tools.translate import _
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so3"))
- proc_ids = self.search(cr, uid, [('origin','=',so.name)])
- assert proc_ids, _('No Procurements!')
--
- I run the scheduler.
--
- !function {model: procurement.order, name: run_scheduler}:
- - model: procurement.order
- search: "[('state','=','confirmed')]"
--
- I check that the procurement for the product table is in exception state.
- As my product's supply method is produce and the BoM is not defined.
--
- !python {model: procurement.order}: |
- from tools.translate import _
- proc_ids = self.search(cr, uid, [('state','=','exception'),('product_id','=',ref('sale.product_product_table0'))])
- assert not proc_ids, _('There is no procurement in exception state!')
diff --git a/addons/sale/test/sale_report.yml b/addons/sale/test/sale_report.yml
deleted file mode 100644
index 8b55c21ec23..00000000000
--- a/addons/sale/test/sale_report.yml
+++ /dev/null
@@ -1,8 +0,0 @@
--
- In order to test the PDF reports defined on a sale order, we will print a sale order
--
- !python {model: sale.order}: |
- import netsvc, tools, os
- (data, format) = netsvc.LocalService('report.sale.order').create(cr, uid, [ref('sale.order'),ref('sale.order2')], {}, {})
- if tools.config['test_report_directory']:
- file(os.path.join(tools.config['test_report_directory'], 'sale-sale_order.'+format), 'wb+').write(data)
diff --git a/addons/sale/test/so_make_invoice.yml b/addons/sale/test/so_make_invoice.yml
deleted file mode 100644
index 727731b4745..00000000000
--- a/addons/sale/test/so_make_invoice.yml
+++ /dev/null
@@ -1,142 +0,0 @@
--
- In order to test the 'Make Invoices' wizard of sale module in the Open-ERP,
- I create two Sale order,group them and create invoice.
--
- I create a Sale Order for Slider Mobile for qty 100 having order_policy manual.
--
- !record {model: sale.order, id: sale_order_so3}:
- date_order: !eval time.strftime('%Y-%m-%d')
- invoice_quantity: order
- name: Test_SO003
- order_line:
- - name: Slider Mobile
- price_unit: 200.0
- product_uom: product.product_uom_unit
- product_uom_qty: 100.0
- state: draft
- delay: 7.0
- product_id: sale.product_product_slidermobile0
- product_uos_qty: 100.0
- type: make_to_order
- order_policy: manual
- partner_id: sale.res_partner_cleartrail0
- partner_invoice_id: sale.res_partner_address_2
- partner_order_id: sale.res_partner_address_1
- partner_shipping_id: sale.res_partner_address_3
- picking_policy: direct
- pricelist_id: product.list0
- shop_id: sale.shop
--
- I confirm the Sale Order.
--
- !workflow {model: sale.order, action: order_confirm, ref: sale_order_so3}
--
- I create a Sale Order for products Slider Mobile and LG Viewty Smart for qty 100 having order_policy manual.
--
- !record {model: sale.order, id: sale_order_so4}:
- date_order: !eval time.strftime('%Y-%m-%d')
- invoice_quantity: order
- name: Test_SO004
- order_line:
- - name: Slider Mobile
- price_unit: 200.0
- product_uom: product.product_uom_unit
- product_uom_qty: 100.0
- state: draft
- delay: 7.0
- product_id: sale.product_product_slidermobile0
- product_uos_qty: 100.0
- type: make_to_order
- - name: LG Viewty Smart
- price_unit: 170.0
- product_uom: product.product_uom_unit
- product_uom_qty: 100.0
- state: draft
- delay: 7.0
- product_id: sale.product_product_lgviewtysmart0
- product_uos_qty: 100.0
- th_weight: 0.0
- type: make_to_order
- order_policy: manual
- partner_id: sale.res_partner_cleartrail0
- partner_invoice_id: sale.res_partner_address_2
- partner_order_id: sale.res_partner_address_1
- partner_shipping_id: sale.res_partner_address_3
- picking_policy: direct
- pricelist_id: product.list0
- shop_id: sale.shop
--
- I confirm the Sale Order.
--
- !workflow {model: sale.order, action: order_confirm, ref: sale_order_so4}
--
- Then I click on the "Make Invoices" button
--
- !record {model: sale.make.invoice, id: sale_make_invoice_1}:
- grouped: 1
- invoice_date: !eval time.strftime('%Y-%m-%d')
--
- Then I click on the "Create Invoices" button of wizard
--
- !python {model: sale.make.invoice}: |
- self.make_invoices(cr, uid, [ref("sale_make_invoice_1")], {"lang": 'en_US', "search_default_user_id":
- 1, "tz": False, "active_model": 'sale.order', "active_ids": [ref("sale_order_so4"),ref("sale_order_so3")], "active_id":
- ref("sale_order_so4")})
--
- I verify that an invoice has been created
--
- !python {model: account.invoice}: |
- inv = self.search(cr, uid, [('origin','=','Test_SO004|Test_SO003|')])
- assert inv, "Invoices has not been generated"
--
- I verify that an account invoice line with origin 'Test_SO004' is created
--
- !python {model: account.invoice.line}: |
- sale_order_obj = self.pool.get('sale.order')
- acc_inv_obj = self.pool.get('account.invoice')
- inv = acc_inv_obj.search(cr, uid, [('origin','=','Test_SO004|Test_SO003|')])
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so4"))
- inv_line = self.search(cr, uid, [('origin','=',so.name),('name','=','Slider Mobile'),('invoice_id','=',inv)])
- assert inv_line, "Account invoice line has not been created"
--
- I verify that an account invoice line with origin 'Test_SO003' is created
--
- !python {model: account.invoice.line}: |
- sale_order_obj = self.pool.get('sale.order')
- acc_inv_obj = self.pool.get('account.invoice')
- inv = acc_inv_obj.search(cr, uid, [('origin','=','Test_SO004|Test_SO003|')])
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so3"))
- inv_line = self.search(cr, uid, [('origin','=',so.name),('name','=','Slider Mobile'),('invoice_id','=',inv)])
- assert inv_line, "Account invoice line has not been created"
--
- I open the Invoice for the SO.
--
- !python {model: account.invoice}: |
- import netsvc
- wf_service = netsvc.LocalService("workflow")
- inv = self.search(cr, uid, [('origin','=','Test_SO004|Test_SO003|')])
- for id in inv:
- wf_service.trg_validate(uid, 'account.invoice',id,'invoice_open', cr)
--
- I assign an analytic journal to the bank journal
--
- !record {model: account.journal, id: sale.account_journal_bankjournal0}:
- analytic_journal_id: account.cose_journal_sale
--
- I pay the invoice
--
- !python {model: account.invoice}: |
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so3"))
- invoice_id = self.search(cr, uid, [('origin','=',so.name),('state','=','open')])
- self.pay_and_reconcile(cr, uid, invoice_id,
- 40000.0, ref('account.cash'), ref('account.period_5'),
- ref('sale.account_journal_bankjournal0'), ref('account.cash'),
- ref('account.period_8'), ref('sale.account_journal_bankjournal0'),
- name='tst')
--
- I verify the invoice is in Paid state
--
- !python {model: account.invoice}: |
- invoice_id = self.search(cr, uid, [('origin','=','Test_SO004|Test_SO003|'),('state','=','paid')])
- assert invoice_id, "Invoice for SO is not in done state."
diff --git a/addons/sale/test/so_make_line_invoice.yml b/addons/sale/test/so_make_line_invoice.yml
deleted file mode 100644
index 14d405b0083..00000000000
--- a/addons/sale/test/so_make_line_invoice.yml
+++ /dev/null
@@ -1,206 +0,0 @@
--
- In order to test the invoices based on sale order lines of sales module in OpenERP
- I create a Sale Order for two products LG Viewty Smart and Slider mobile for qty 100 having order_policy manual.
--
- !record {model: sale.order, id: sale_order_so3}:
- date_order: !eval time.strftime('%Y-%m-%d')
- invoice_quantity: order
- name: Test_SO003
- order_line:
- - name: Slider Mobile
- sequence: 1
- price_unit: 200.0
- product_uom: product.product_uom_unit
- product_uom_qty: 100.0
- state: draft
- delay: 7.0
- product_id: sale.product_product_slidermobile0
- product_uos_qty: 100.0
- type: make_to_order
- - name: LG Viewty Smart
- price_unit: 170.0
- sequence: 2
- product_uom: product.product_uom_unit
- product_uom_qty: 100.0
- state: draft
- delay: 7.0
- product_id: sale.product_product_lgviewtysmart0
- product_uos_qty: 100.0
- th_weight: 0.0
- type: make_to_order
- order_policy: manual
- partner_id: sale.res_partner_cleartrail0
- partner_invoice_id: sale.res_partner_address_2
- partner_order_id: sale.res_partner_address_1
- partner_shipping_id: sale.res_partner_address_3
- picking_policy: direct
- pricelist_id: product.list0
- shop_id: sale.shop
--
- I confirm the Sale Order.
--
- !workflow {model: sale.order, action: order_confirm, ref: sale_order_so3}
--
- I click on the "Make Invoice" button of sale order line
--
- !record {model: sale.order.line.make.invoice, id: sale_order_line_make_invoice_0}:
- {}
--
- I click on the "Create Invoice" button of wizard
--
- !python {model: sale.order.line.make.invoice}: |
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so3"))
- sol = so.order_line[0]
- self.make_invoices(cr, uid, [ref("sale_order_line_make_invoice_0")], {"lang": "en_US",
- "tz": False, "active_model": "sale.order.line", "active_ids": [sol.id],
- "search_default_uninvoiced": 1, "active_id": sol.id,
- })
--
- I verify that "Invoiced" has been set to True.
--
- !python {model: sale.order}: |
- sale_id=self.browse(cr, uid, ref("sale_order_so3"))
- sol = sale_id.order_line[0]
- assert(sol.invoiced == True), "Invoiced has not been set to true"
--
- I verify that an invoice for sale order line has been created.
--
- !python {model: sale.order}: |
- so = self.browse(cr, uid, ref("sale_order_so3"))
- assert so.invoice_ids, "Invoices has not been generated for sale_order_so3"
--
- I click on the Create button of invoice
--
- !python {model: account.invoice}: |
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so3"))
- import netsvc
- wf_service = netsvc.LocalService("workflow")
- invoice_ids = so.invoice_ids
- for invoice in invoice_ids:
- wf_service.trg_validate(uid, 'account.invoice',invoice.id,'invoice_open', cr)
--
- I verify that an invoice state has transit from draft to open state
--
- !python {model: account.invoice}: |
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so3"))
- invoice_id = self.search(cr, uid, [('origin','=',so.name),('state','=','open')])
- assert invoice_id, "Invoice is not in the open state"
--
- I assign an analytic journal to the bank journal
--
- !record {model: account.journal, id: sale.account_journal_bankjournal0}:
- analytic_journal_id: account.cose_journal_sale
--
- I pay the invoice
--
- !python {model: account.invoice}: |
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so3"))
- invoice_id = self.search(cr, uid, [('origin','=',so.name),('state','=','open')])
- self.pay_and_reconcile(cr, uid, invoice_id,
- 20000.0, ref('account.cash'), ref('account.period_8'),
- ref('sale.account_journal_bankjournal0'), ref('account.cash'),
- ref('account.period_8'), ref('sale.account_journal_bankjournal0'),
- name='test')
--
- I verify that an invoice is in done state.
--
- !python {model: account.invoice}: |
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so3"))
- invoice_id = self.search(cr, uid, [('origin','=',so.name),('state','=','paid')])
- assert invoice_id, "Invoice for SO is not in done state."
--
- I verify that Paid has been set to true.
--
- !python {model: sale.order}: |
- sale_id=self.browse(cr, uid, ref("sale_order_so3"))
- assert(sale_id.invoiced == True), "Paid has not been set to true"
--
- I create an invoice for another sale order line. I click on the "Make Invoice" button of sale order line
--
- !record {model: sale.order.line.make.invoice, id: sale_order_line_make_invoice_1}:
- {}
--
- I click on the "Create Invoice" button of wizard
--
- !python {model: sale.order.line.make.invoice}: |
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so3"))
- sol = so.order_line[1]
- self.make_invoices(cr, uid, [ref("sale_order_line_make_invoice_1")], {"lang": "en_US",
- "tz": False, "active_model": "sale.order.line", "active_ids": [sol.id],
- "search_default_uninvoiced": 1, "active_id": sol.id,
- })
--
- I verify that invoice for sale order line has been created.
--
- !python {model: sale.order}: |
- so = self.browse(cr, uid, ref("sale_order_so3"))
- assert so.invoice_ids[1], "Invoices has not been generated for sale_order_so3"
--
- I verify that "Invoiced" has been set to True.
--
- !python {model: sale.order}: |
- sale_id=self.browse(cr, uid, ref("sale_order_so3"))
- sol = sale_id.order_line[1]
- assert(sol.invoiced == True), "Invoiced has not been set to true"
--
- I verify that "Paid" has been set to False.
--
- !python {model: sale.order}: |
- sale_id=self.browse(cr, uid, ref("sale_order_so3"))
- assert(sale_id.invoiced == False), "Paid has not been set to true"
--
- I open the Invoice for the SO.
--
- !python {model: account.invoice}: |
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so3"))
- import netsvc
- wf_service = netsvc.LocalService("workflow")
- invoice_ids = so.invoice_ids
- for invoice in invoice_ids:
- wf_service.trg_validate(uid, 'account.invoice',invoice.id,'invoice_open', cr)
--
- I verify that an invoice state has transit from draft to open state
--
- !python {model: account.invoice}: |
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so3"))
- invoice_id = self.search(cr, uid, [('origin','=',so.name),('state','=','open')])
- assert invoice_id, "Invoice is not in the open state"
--
- Assign analytic journal into bank journal
--
- !record {model: account.journal, id: sale.account_journal_bankjournal0}:
- analytic_journal_id: account.cose_journal_sale
--
- I pay the invoice
--
- !python {model: account.invoice}: |
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so3"))
- invoice_id = self.search(cr, uid, [('origin','=',so.name),('state','=','open')])
- self.pay_and_reconcile(cr, uid, invoice_id,
- 17000.0, ref('account.cash'), ref('account.period_8'),
- ref('sale.account_journal_bankjournal0'), ref('account.cash'),
- ref('account.period_8'), ref('sale.account_journal_bankjournal0'),
- name='test')
--
- I verify the invoice is in done state.
--
- !python {model: account.invoice}: |
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so3"))
- invoice_id = self.search(cr, uid, [('origin','=',so.name),('state','=','paid')])
- assert invoice_id, "Invoice for SO is not in done state."
--
- I verify that Paid has been set to true.
--
- !python {model: sale.order}: |
- sale_id=self.browse(cr, uid, ref("sale_order_so3"))
- assert(sale_id.invoiced == True), "Paid has not been set to true"
diff --git a/addons/sale/wizard/sale_line_invoice.py b/addons/sale/wizard/sale_line_invoice.py
index 2fa7488a669..45347a5e131 100644
--- a/addons/sale/wizard/sale_line_invoice.py
+++ b/addons/sale/wizard/sale_line_invoice.py
@@ -39,7 +39,7 @@ class sale_order_line_make_invoice(osv.osv_memory):
@return: A dictionary which of fields with values.
"""
-
+ if context is None: context = {}
res = False
invoices = {}
diff --git a/addons/sale_analytic_plans/__openerp__.py b/addons/sale_analytic_plans/__openerp__.py
index 453a51fc724..5401ad42967 100644
--- a/addons/sale_analytic_plans/__openerp__.py
+++ b/addons/sale_analytic_plans/__openerp__.py
@@ -22,7 +22,7 @@
{
'name': 'Sales Analytic Distribution',
'version': '1.0',
- 'category': 'Tools',
+ 'category': 'Sales Management',
'description': """
The base module to manage analytic distribution and sales orders.
=================================================================
diff --git a/addons/sale_crm/__openerp__.py b/addons/sale_crm/__openerp__.py
index c3f4365bfee..c0b8ae09b5f 100644
--- a/addons/sale_crm/__openerp__.py
+++ b/addons/sale_crm/__openerp__.py
@@ -22,7 +22,7 @@
{
'name': 'Opportunity to Quotation',
'version': '1.0',
- 'category': 'Hidden/Link',
+ 'category': 'Hidden/Links',
'complexity': "easy",
'description': """
This module adds a shortcut on one or several opportunity cases in the CRM.
diff --git a/addons/sale_crm/board_sale_crm_view.xml b/addons/sale_crm/board_sale_crm_view.xml
index 9d383a4ac28..b34e8880a10 100644
--- a/addons/sale_crm/board_sale_crm_view.xml
+++ b/addons/sale_crm/board_sale_crm_view.xml
@@ -9,22 +9,8 @@
-
-
-
-
-
-
- board.crm.form.inherit.replace1
- board.board
- form
-
-
-
-
@@ -39,7 +25,6 @@
-
diff --git a/addons/sale_crm/i18n/hr.po b/addons/sale_crm/i18n/hr.po
index 9ad402a8321..8b12b395e48 100644
--- a/addons/sale_crm/i18n/hr.po
+++ b/addons/sale_crm/i18n/hr.po
@@ -7,48 +7,48 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2011-01-11 11:16+0000\n"
-"PO-Revision-Date: 2010-08-03 06:21+0000\n"
-"Last-Translator: Mantavya Gajjar (Open ERP) \n"
+"PO-Revision-Date: 2011-12-12 07:09+0000\n"
+"Last-Translator: Tomislav Bosnjakovic \n"
"Language-Team: Vinteh\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-05 05:04+0000\n"
-"X-Generator: Launchpad (build 14231)\n"
+"X-Launchpad-Export-Date: 2011-12-13 05:01+0000\n"
+"X-Generator: Launchpad (build 14458)\n"
"Language: hr\n"
#. module: sale_crm
#: field:crm.make.sale,partner_id:0
msgid "Customer"
-msgstr "Stranka"
+msgstr "Kupac"
#. module: sale_crm
#: view:crm.make.sale:0
msgid "Convert to Quotation"
-msgstr ""
+msgstr "Pretvori u ponudu"
#. module: sale_crm
#: code:addons/sale_crm/wizard/crm_make_sale.py:108
#, python-format
msgid "Opportunity '%s' is converted to Quotation."
-msgstr ""
+msgstr "Prilika '%s' je pretvorena u ponudu."
#. module: sale_crm
#: code:addons/sale_crm/wizard/crm_make_sale.py:89
#, python-format
msgid "Data Insufficient!"
-msgstr ""
+msgstr "Nedovoljno podataka!"
#. module: sale_crm
#: code:addons/sale_crm/wizard/crm_make_sale.py:89
#, python-format
msgid "Customer has no addresses defined!"
-msgstr ""
+msgstr "Kupac nema definiranu adresu"
#. module: sale_crm
#: model:ir.model,name:sale_crm.model_crm_make_sale
msgid "Make sales"
-msgstr ""
+msgstr "Napravi prodaju"
#. module: sale_crm
#: model:ir.module.module,description:sale_crm.module_meta_information
@@ -66,81 +66,93 @@ msgid ""
"crm modules.\n"
" "
msgstr ""
+"\n"
+"Ovaj modul pruža prečicu na jednu ili više prilika u CRM-u.\n"
+"Prečica omogućava generiranje prodajnih naloga na osnovi izabranog slučaja.\n"
+"Ako si izabrani različiti slučajevi (lista), generira jedan prodajni nalog "
+"po \n"
+"slučaju.\n"
+"Slučaj je tada zatvoren i povezan sa generiranim prodajnim nalogom.\n"
+"\n"
+"Sugeriramo instalaciju ovo modula ako ste instalirali i prodajni i CRM "
+"modul.\n"
+" "
#. module: sale_crm
#: view:crm.make.sale:0
msgid "_Create"
-msgstr ""
+msgstr "_Kreiraj"
#. module: sale_crm
#: sql_constraint:sale.order:0
msgid "Order Reference must be unique !"
-msgstr ""
+msgstr "Oznaka naloga mora biti jedinstvena"
#. module: sale_crm
#: help:crm.make.sale,close:0
msgid ""
"Check this to close the opportunity after having created the sale order."
msgstr ""
+"Označi ovo da bi se prilika zatvorila nakon kreiranja prodajnog naloga."
#. module: sale_crm
#: view:crm.lead:0
msgid "Convert to Quote"
-msgstr "Pretvori u Ponudu"
+msgstr "Pretvori u ponudu"
#. module: sale_crm
#: view:account.invoice.report:0
#: view:board.board:0
msgid "Monthly Turnover"
-msgstr ""
+msgstr "Mjesečni obrtaj"
#. module: sale_crm
#: code:addons/sale_crm/wizard/crm_make_sale.py:110
#, python-format
msgid "Converted to Sales Quotation(id: %s)."
-msgstr ""
+msgstr "Pretvoreno u prodajnu ponudu (id: %s)."
#. module: sale_crm
#: code:addons/sale_crm/wizard/crm_make_sale.py:92
#, python-format
msgid "Opportunity: %s"
-msgstr ""
+msgstr "Prilika: %s"
#. module: sale_crm
#: model:ir.module.module,shortdesc:sale_crm.module_meta_information
msgid "Creates Sales order from Opportunity"
-msgstr ""
+msgstr "Kreira prodajnu ponudu iz prilike"
#. module: sale_crm
#: model:ir.actions.act_window,name:sale_crm.action_quotation_for_sale_crm
msgid "Quotations"
-msgstr ""
+msgstr "Ponude"
#. module: sale_crm
#: field:crm.make.sale,shop_id:0
msgid "Shop"
-msgstr "Shop"
+msgstr "Trgovina"
#. module: sale_crm
#: view:board.board:0
msgid "Opportunities by Stage"
-msgstr ""
+msgstr "Prilike po fazama"
#. module: sale_crm
#: view:board.board:0
msgid "My Quotations"
-msgstr ""
+msgstr "Moje ponude"
#. module: sale_crm
#: field:crm.make.sale,close:0
msgid "Close Opportunity"
-msgstr ""
+msgstr "Zatvori priliku"
#. module: sale_crm
#: view:sale.order:0
#: field:sale.order,section_id:0
msgid "Sales Team"
-msgstr ""
+msgstr "Prodajni tim"
#. module: sale_crm
#: model:ir.actions.act_window,name:sale_crm.action_crm_make_sale
@@ -155,7 +167,7 @@ msgstr "Otkaži"
#. module: sale_crm
#: model:ir.model,name:sale_crm.model_sale_order
msgid "Sales Order"
-msgstr ""
+msgstr "Prodajni nalog"
#~ msgid "Opportunity Analytic"
#~ msgstr "Analitika prilike"
diff --git a/addons/sale_crm/security/ir.model.access.csv b/addons/sale_crm/security/ir.model.access.csv
index a1bd4896f5f..75317a244ad 100644
--- a/addons/sale_crm/security/ir.model.access.csv
+++ b/addons/sale_crm/security/ir.model.access.csv
@@ -1,2 +1,2 @@
-"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
-"access_account_invoice_report_salesman","account.invoice.report salesman","account.model_account_invoice_report","base.group_sale_salesman",1,0,0,0
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+
diff --git a/addons/sale_crm/test/sale_crm.yml b/addons/sale_crm/test/sale_crm.yml
index cc75b9e415c..e85cf2cb7ba 100644
--- a/addons/sale_crm/test/sale_crm.yml
+++ b/addons/sale_crm/test/sale_crm.yml
@@ -1,42 +1,17 @@
--
- In order to test the sale_crm module in the Open-ERP,
- I create an opportunity and create a sale order through 'Convert to Sale' wizard .
--
- I create an opportunity
--
- !record {model: crm.lead, id: crm_lead_opportunity0}:
- country_id: base.be
- name: Opportunity-1
- planned_revenue: 50000.0
- probability: 70.0
- partner_address_id: base.res_partner_address_7
- partner_id: base.res_partner_4
- planned_revenue: 0.0
- probability: 0.0
- section_id: crm.section_sales_department
- type: opportunity
- categ_id: crm.categ_oppor1
--
- Then I click on the 'Convert to Sale' wizard
--
- I place a sale order for product keyboard having quantity 50
-
!record {model: crm.make.sale, id: crm_make_sale_0}:
partner_id: base.res_partner_4
- shop_id: sale.shop
-
- Then I click on the 'Ok' button of wizard
+ I convert opportunity into "Quotation".
-
!python {model: crm.make.sale}: |
- crm_obj = self.pool.get('crm.lead')
- crm = crm_obj.browse(cr, uid, ref("crm_lead_opportunity0"))
- self.makeOrder(cr, uid, [ref("crm_make_sale_0")], {"lang": "en_US", "tz": False,
- "active_model": "crm.lead", "section_id": "crm.section_sales_department", "default_type": "opportunity",
- "search_default_user_id": 1, "search_default_current": 1, "active_ids": [crm.id],
+ crm_lead = self.pool.get('crm.lead')
+ crm = crm_lead.browse(cr, uid, ref("crm.crm_case_construstazunits0"))
+ self.makeOrder(cr, uid, [ref("crm_make_sale_0")], {"active_ids": [crm.id],
"active_id": crm.id})
-
- I verify that a sale order has been generated from an opportunity
+ I check that reference number of "Quotation" in opportunity.
-
!python {model: crm.lead}: |
- crm = self.browse(cr, uid, ref("crm_lead_opportunity0"))
- assert (crm.ref),("sale order has not been created")
+ crm = self.browse(cr, uid, ref("crm.crm_case_construstazunits0"))
+ assert crm.ref, "Quotation has not been created."
diff --git a/addons/sale_journal/__openerp__.py b/addons/sale_journal/__openerp__.py
index 1cd2eef2d77..cb54b039222 100644
--- a/addons/sale_journal/__openerp__.py
+++ b/addons/sale_journal/__openerp__.py
@@ -23,7 +23,7 @@
'name': 'Invoicing Journals',
'version': '1.0',
'category': 'Sales Management',
- 'complexity': "easy",
+ 'complexity': "normal",
'description': """
The sales journal modules allows you to categorise your sales and deliveries (picking lists) between different journals.
========================================================================================================================
diff --git a/addons/sale_journal/i18n/hr.po b/addons/sale_journal/i18n/hr.po
index cca79e1562a..53083681d93 100644
--- a/addons/sale_journal/i18n/hr.po
+++ b/addons/sale_journal/i18n/hr.po
@@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2011-01-11 11:16+0000\n"
-"PO-Revision-Date: 2010-08-03 06:04+0000\n"
-"Last-Translator: Mantavya Gajjar (Open ERP) \n"
+"PO-Revision-Date: 2011-12-12 07:53+0000\n"
+"Last-Translator: Tomislav Bosnjakovic \n"
"Language-Team: Vinteh\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-05 05:22+0000\n"
-"X-Generator: Launchpad (build 14231)\n"
+"X-Launchpad-Export-Date: 2011-12-13 05:01+0000\n"
+"X-Generator: Launchpad (build 14458)\n"
"Language: hr\n"
#. module: sale_journal
@@ -25,22 +25,22 @@ msgstr "Bilješka"
#. module: sale_journal
#: help:res.partner,property_invoice_type:0
msgid "The type of journal used for sales and picking."
-msgstr ""
+msgstr "Vrsta temeljnice korištene za prodaju i prijenos"
#. module: sale_journal
#: sql_constraint:sale.order:0
msgid "Order Reference must be unique !"
-msgstr ""
+msgstr "Oznaka naloga mora biti jedinstvena"
#. module: sale_journal
#: view:res.partner:0
msgid "Invoicing"
-msgstr ""
+msgstr "Fakturiranje"
#. module: sale_journal
#: view:res.partner:0
msgid "Sales & Purchases"
-msgstr "Prodaje i Kupnje"
+msgstr "Prodaja i nabava"
#. module: sale_journal
#: help:sale_journal.invoice.type,active:0
@@ -48,6 +48,8 @@ msgid ""
"If the active field is set to False, it will allow you to hide the invoice "
"type without removing it."
msgstr ""
+"Ako je aktivno polje postavljeno na NE, možete sakriti vrstu računa bez da "
+"ga uklonite."
#. module: sale_journal
#: view:sale_journal.invoice.type:0
@@ -57,7 +59,7 @@ msgstr "Bilješke"
#. module: sale_journal
#: field:res.partner,property_invoice_type:0
msgid "Invoicing Method"
-msgstr "Način Izrade Računa"
+msgstr "Način izrade računa"
#. module: sale_journal
#: model:ir.module.module,description:sale_journal.module_meta_information
@@ -86,11 +88,35 @@ msgid ""
" Some statistics by journals are provided.\n"
" "
msgstr ""
+"\n"
+" Modul temeljnice u prodaji omogućuje vam kategorizaciju\n"
+" prodaje i dostava (lista prijenosa) između različitih temeljnica.\n"
+" Ovaj modul je od pomoći većim organizacijama koje rade po \n"
+" odjelima. \n"
+"\n"
+" Temeljnicu možete koristiti za različite namjene, npr.:\n"
+" * za izoliranje prodaje različitih odjela\n"
+" * temljnice za dostavu kamionom ili poštom\n"
+"\n"
+" Temeljnice imaju odgovornu osobu i različite statuse:\n"
+" * nacrt, otvoreno, otkazano, završeno.\n"
+"\n"
+" Grupne operacije se mogu odvijati na različitim temeljnicama\n"
+" kako bi potvrdili sve prodaje odjednom, potvrdili ili fakturirali "
+"otpremu, ....\n"
+"\n"
+" Također podržava skupno fakturiranje koje se može konfigurirati po \n"
+" partnerima ili prodajnim nalozima, npr.:\n"
+" * dnevno fakturiranje,\n"
+" * mjesečno fakturiranje, ...\n"
+"\n"
+" Postoje i neke statistike po temeljnicama.\n"
+" "
#. module: sale_journal
#: selection:sale_journal.invoice.type,invoicing_method:0
msgid "Non grouped"
-msgstr "Nije grupirano"
+msgstr ""
#. module: sale_journal
#: selection:sale_journal.invoice.type,invoicing_method:0
@@ -100,7 +126,7 @@ msgstr "Grupirano"
#. module: sale_journal
#: constraint:res.partner:0
msgid "Error ! You can not create recursive associated members."
-msgstr ""
+msgstr "Greška ! Ne možete kreirati rekurzivne pridružene članove."
#. module: sale_journal
#: model:ir.actions.act_window,help:sale_journal.action_definition_journal_invoice_type
@@ -109,16 +135,19 @@ msgid ""
"can create a specific invoicing journal to group your invoicing according to "
"your customer's needs: daily, each Wednesday, monthly, etc."
msgstr ""
+"Vrste računa koriste se za partnere, prodajne naloge i dostavnice. Možete "
+"kreirati posebnu temeljnicu za fakturiranje kako bi grupirali fakturiranje "
+"sukladno potrebama kupca: dnevno, svake srijede, mjesečno, itd."
#. module: sale_journal
#: field:sale_journal.invoice.type,invoicing_method:0
msgid "Invoicing method"
-msgstr "Način Izrade Računa"
+msgstr "Način fakturiranja"
#. module: sale_journal
#: model:ir.model,name:sale_journal.model_sale_order
msgid "Sales Order"
-msgstr ""
+msgstr "Prodajni nalog"
#. module: sale_journal
#: field:sale.order,invoice_type_id:0
@@ -126,7 +155,7 @@ msgstr ""
#: field:sale_journal.invoice.type,name:0
#: field:stock.picking,invoice_type_id:0
msgid "Invoice Type"
-msgstr "Tip Računa"
+msgstr "Vrsta računa"
#. module: sale_journal
#: field:sale_journal.invoice.type,active:0
@@ -136,14 +165,14 @@ msgstr "Aktivan"
#. module: sale_journal
#: model:ir.model,name:sale_journal.model_res_partner
msgid "Partner"
-msgstr ""
+msgstr "Partner"
#. module: sale_journal
#: model:ir.actions.act_window,name:sale_journal.action_definition_journal_invoice_type
#: model:ir.model,name:sale_journal.model_sale_journal_invoice_type
#: model:ir.ui.menu,name:sale_journal.menu_definition_journal_invoice_type
msgid "Invoice Types"
-msgstr "Tipovi Računa"
+msgstr "Vrste računa"
#. module: sale_journal
#: model:ir.model,name:sale_journal.model_stock_picking
@@ -153,7 +182,7 @@ msgstr ""
#. module: sale_journal
#: model:ir.module.module,shortdesc:sale_journal.module_meta_information
msgid "Managing sales and deliveries by journal"
-msgstr "Upravljanje prodajom i narudžbama prema Pregledu"
+msgstr "Upravljanje prodajom i dostavama po temeljnicama"
#~ msgid "Assigned packing"
#~ msgstr "Dodijeljeno pakiranje"
diff --git a/addons/sale_journal/i18n/pt.po b/addons/sale_journal/i18n/pt.po
index e4d7ef6f137..afa57440ceb 100644
--- a/addons/sale_journal/i18n/pt.po
+++ b/addons/sale_journal/i18n/pt.po
@@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2011-01-11 11:16+0000\n"
-"PO-Revision-Date: 2010-12-04 09:20+0000\n"
-"Last-Translator: OpenERP Administrators \n"
+"PO-Revision-Date: 2011-12-10 12:02+0000\n"
+"Last-Translator: Paulino Ascenção \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-05 05:22+0000\n"
-"X-Generator: Launchpad (build 14231)\n"
+"X-Launchpad-Export-Date: 2011-12-11 05:36+0000\n"
+"X-Generator: Launchpad (build 14450)\n"
#. module: sale_journal
#: field:sale_journal.invoice.type,note:0
@@ -24,7 +24,7 @@ msgstr "Nota"
#. module: sale_journal
#: help:res.partner,property_invoice_type:0
msgid "The type of journal used for sales and picking."
-msgstr ""
+msgstr "O tipo de diário usado nas vendas e remessas"
#. module: sale_journal
#: sql_constraint:sale.order:0
diff --git a/addons/sale_journal/security/ir.model.access.csv b/addons/sale_journal/security/ir.model.access.csv
index bc1a3b003c3..377e78b8c37 100644
--- a/addons/sale_journal/security/ir.model.access.csv
+++ b/addons/sale_journal/security/ir.model.access.csv
@@ -1,6 +1,6 @@
-"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
-"access_sale_journal_invoice_type_finance_invoice","sale_journal.invoice.type invoice","model_sale_journal_invoice_type","account.group_account_invoice",1,1,1,1
-"access_sale_journal_invoice_type_partner_manager","sale_journal.invoice.type partner manager","model_sale_journal_invoice_type","base.group_partner_manager",1,0,0,0
-"access_sale_journal_invoice_type_salesman","sale_journal.invoice.type salesman","model_sale_journal_invoice_type","base.group_sale_salesman",1,0,0,0
-"access_sale_journal_invoice_type_manager","sale_journal.invoice.type.manager","model_sale_journal_invoice_type","base.group_sale_manager",1,1,1,1
-"access_sale_journal_invoice_type_stock_worker","sale_journal.invoice_type stock worker","model_sale_journal_invoice_type","stock.group_stock_user",1,0,0,0
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+access_sale_journal_invoice_type_finance_invoice,sale_journal.invoice.type invoice,model_sale_journal_invoice_type,account.group_account_invoice,1,1,1,1
+access_sale_journal_invoice_type_partner_manager,sale_journal.invoice.type partner manager,model_sale_journal_invoice_type,base.group_partner_manager,1,0,0,0
+access_sale_journal_invoice_type_salesman,sale_journal.invoice.type salesman,model_sale_journal_invoice_type,base.group_sale_salesman,1,0,0,0
+access_sale_journal_invoice_type_manager,sale_journal.invoice.type.manager,model_sale_journal_invoice_type,base.group_sale_manager,1,1,1,1
+access_sale_journal_invoice_type_stock_worker,sale_journal.invoice_type stock worker,model_sale_journal_invoice_type,stock.group_stock_user,1,0,0,0
diff --git a/addons/sale_layout/i18n/hr.po b/addons/sale_layout/i18n/hr.po
new file mode 100644
index 00000000000..e88466c8651
--- /dev/null
+++ b/addons/sale_layout/i18n/hr.po
@@ -0,0 +1,302 @@
+# Croatian translation for openobject-addons
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2011-01-11 11:16+0000\n"
+"PO-Revision-Date: 2011-12-10 08:37+0000\n"
+"Last-Translator: Tomislav Bosnjakovic \n"
+"Language-Team: Croatian \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-12-11 05:36+0000\n"
+"X-Generator: Launchpad (build 14450)\n"
+
+#. module: sale_layout
+#: selection:sale.order.line,layout_type:0
+msgid "Sub Total"
+msgstr "Međuzbroj"
+
+#. module: sale_layout
+#: model:ir.module.module,description:sale_layout.module_meta_information
+msgid ""
+"\n"
+" This module provides features to improve the layout of the Sales Order.\n"
+"\n"
+" It gives you the possibility to\n"
+" * order all the lines of a sales order\n"
+" * add titles, comment lines, sub total lines\n"
+" * draw horizontal lines and put page breaks\n"
+"\n"
+" "
+msgstr ""
+"\n"
+" Ovaj modul omogućuje značajke za poboljšanje naloga u prodaji \n"
+" \n"
+" Omogućavam vam: \n"
+" It gives you the possibility to\n"
+" * uređivanje svih redaka prodajnog naloga\n"
+" * dodavanje naslova, komentara i međuzbrojeva\n"
+" * crtanje hrozontalinih linija i umetanje prijeloma stranica\n"
+"\n"
+" "
+
+#. module: sale_layout
+#: selection:sale.order.line,layout_type:0
+msgid "Title"
+msgstr "Naziv"
+
+#. module: sale_layout
+#: report:sale.order.layout:0
+msgid "Disc. (%)"
+msgstr "Popust (%)"
+
+#. module: sale_layout
+#: selection:sale.order.line,layout_type:0
+msgid "Note"
+msgstr "Bilješka"
+
+#. module: sale_layout
+#: report:sale.order.layout:0
+msgid "Unit Price"
+msgstr "Jedinična cijena"
+
+#. module: sale_layout
+#: report:sale.order.layout:0
+msgid "Order N°"
+msgstr ""
+
+#. module: sale_layout
+#: field:sale.order,abstract_line_ids:0
+msgid "Order Lines"
+msgstr "Stavke naloga"
+
+#. module: sale_layout
+#: report:sale.order.layout:0
+msgid "Disc.(%)"
+msgstr "Popust (%)"
+
+#. module: sale_layout
+#: field:sale.order.line,layout_type:0
+msgid "Layout Type"
+msgstr "Vrsta rasporeda"
+
+#. module: sale_layout
+#: view:sale.order:0
+msgid "Seq."
+msgstr ""
+
+#. module: sale_layout
+#: view:sale.order:0
+msgid "UoM"
+msgstr "JM"
+
+#. module: sale_layout
+#: selection:sale.order.line,layout_type:0
+msgid "Product"
+msgstr "Artikl"
+
+#. module: sale_layout
+#: sql_constraint:sale.order:0
+msgid "Order Reference must be unique !"
+msgstr "Referenca naloga mora biti jedinstvena"
+
+#. module: sale_layout
+#: report:sale.order.layout:0
+msgid "Description"
+msgstr "Opis"
+
+#. module: sale_layout
+#: view:sale.order:0
+msgid "Manual Description"
+msgstr ""
+
+#. module: sale_layout
+#: report:sale.order.layout:0
+msgid "Our Salesman"
+msgstr "Naš prodavač"
+
+#. module: sale_layout
+#: view:sale.order:0
+msgid "Automatic Declaration"
+msgstr "Automatska deklaracija"
+
+#. module: sale_layout
+#: view:sale.order:0
+msgid "Invoice Lines"
+msgstr "Stavke računa"
+
+#. module: sale_layout
+#: report:sale.order.layout:0
+msgid "Quantity"
+msgstr "Količina"
+
+#. module: sale_layout
+#: report:sale.order.layout:0
+msgid "Quotation N°"
+msgstr "Ponuda broj"
+
+#. module: sale_layout
+#: report:sale.order.layout:0
+msgid "VAT"
+msgstr "PDV"
+
+#. module: sale_layout
+#: view:sale.order:0
+msgid "Make Invoice"
+msgstr "Napravi račun"
+
+#. module: sale_layout
+#: view:sale.order:0
+msgid "Properties"
+msgstr "Značajke"
+
+#. module: sale_layout
+#: report:sale.order.layout:0
+msgid "Invoice address :"
+msgstr "Adresa fakture :"
+
+#. module: sale_layout
+#: model:ir.module.module,shortdesc:sale_layout.module_meta_information
+msgid "Sale Order Layout"
+msgstr "Raspored naloga u prodaji"
+
+#. module: sale_layout
+#: selection:sale.order.line,layout_type:0
+msgid "Page Break"
+msgstr "Prijelom stranice"
+
+#. module: sale_layout
+#: view:sale.order:0
+msgid "Notes"
+msgstr "Bilješke"
+
+#. module: sale_layout
+#: report:sale.order.layout:0
+msgid "Date Ordered"
+msgstr "Datum narudžbe"
+
+#. module: sale_layout
+#: report:sale.order.layout:0
+msgid "Shipping address :"
+msgstr "Adresa otpreme"
+
+#. module: sale_layout
+#: report:sale.order.layout:0
+msgid "Taxes"
+msgstr "Porezi"
+
+#. module: sale_layout
+#: report:sale.order.layout:0
+msgid "Net Total :"
+msgstr ""
+
+#. module: sale_layout
+#: report:sale.order.layout:0
+msgid "Tel. :"
+msgstr "Tel. :"
+
+#. module: sale_layout
+#: report:sale.order.layout:0
+msgid "Total :"
+msgstr "Ukupno :"
+
+#. module: sale_layout
+#: report:sale.order.layout:0
+msgid "Payment Terms"
+msgstr "Uvjeti plaćanja"
+
+#. module: sale_layout
+#: view:sale.order:0
+msgid "History"
+msgstr "Povijest"
+
+#. module: sale_layout
+#: view:sale.order:0
+msgid "Sale Order Lines"
+msgstr "Stavke prodajnog naloga"
+
+#. module: sale_layout
+#: selection:sale.order.line,layout_type:0
+msgid "Separator Line"
+msgstr "Linija za razdvajanje"
+
+#. module: sale_layout
+#: report:sale.order.layout:0
+msgid "Your Reference"
+msgstr "Vaša oznaka"
+
+#. module: sale_layout
+#: report:sale.order.layout:0
+msgid "Quotation Date"
+msgstr "Datum ponude"
+
+#. module: sale_layout
+#: report:sale.order.layout:0
+msgid "TVA :"
+msgstr ""
+
+#. module: sale_layout
+#: view:sale.order:0
+msgid "Qty"
+msgstr "Kol."
+
+#. module: sale_layout
+#: view:sale.order:0
+msgid "States"
+msgstr "Statusi"
+
+#. module: sale_layout
+#: view:sale.order:0
+msgid "Sales order lines"
+msgstr "Stavke prodajnog naloga"
+
+#. module: sale_layout
+#: model:ir.actions.report.xml,name:sale_layout.sale_order_1
+msgid "Order with Layout"
+msgstr "Nalog s rasporedom"
+
+#. module: sale_layout
+#: view:sale.order:0
+msgid "Extra Info"
+msgstr "Dodatne informacije"
+
+#. module: sale_layout
+#: report:sale.order.layout:0
+msgid "Taxes :"
+msgstr "Porezi :"
+
+#. module: sale_layout
+#: report:sale.order.layout:0
+msgid "Fax :"
+msgstr "Faks:"
+
+#. module: sale_layout
+#: model:ir.model,name:sale_layout.model_sale_order
+msgid "Sales Order"
+msgstr "Prodajni nalog"
+
+#. module: sale_layout
+#: view:sale.order:0
+msgid "Order Line"
+msgstr "Stavka naloga"
+
+#. module: sale_layout
+#: report:sale.order.layout:0
+msgid "Price"
+msgstr "Cijena"
+
+#. module: sale_layout
+#: model:ir.model,name:sale_layout.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "Stavka prodajnog naloga"
+
+#. module: sale_layout
+#: view:sale.order:0
+msgid "Stock Moves"
+msgstr "Skladišni prijenosi"
diff --git a/addons/sale_layout/sale_layout_view.xml b/addons/sale_layout/sale_layout_view.xml
index 27b8e4b4f96..78f98d3002f 100644
--- a/addons/sale_layout/sale_layout_view.xml
+++ b/addons/sale_layout/sale_layout_view.xml
@@ -9,7 +9,7 @@
sale.order.form.inherit_1sale.order
- 30
+ 1000form
diff --git a/addons/sale_margin/__openerp__.py b/addons/sale_margin/__openerp__.py
index c7eae6daea2..62f436680fd 100644
--- a/addons/sale_margin/__openerp__.py
+++ b/addons/sale_margin/__openerp__.py
@@ -19,7 +19,7 @@
##############################################################################
{
- "name":"Margins in Sales Orders",
+ "name": "Margins in Sales Orders",
"version":"1.0",
"category" : "Sales Management",
"description": """
diff --git a/addons/sale_margin/i18n/hr.po b/addons/sale_margin/i18n/hr.po
new file mode 100644
index 00000000000..45468a03ef3
--- /dev/null
+++ b/addons/sale_margin/i18n/hr.po
@@ -0,0 +1,415 @@
+# Croatian translation for openobject-addons
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2011-01-11 11:16+0000\n"
+"PO-Revision-Date: 2011-12-10 07:37+0000\n"
+"Last-Translator: Tomislav Bosnjakovic \n"
+"Language-Team: Croatian \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-12-11 05:36+0000\n"
+"X-Generator: Launchpad (build 14450)\n"
+
+#. module: sale_margin
+#: view:report.account.invoice.product:0
+msgid "Category"
+msgstr "Kategorija"
+
+#. module: sale_margin
+#: selection:report.account.invoice,type:0
+#: selection:report.account.invoice.category,type:0
+#: selection:report.account.invoice.partner,type:0
+#: selection:report.account.invoice.partner.product,type:0
+#: selection:report.account.invoice.product,type:0
+msgid "Customer Refund"
+msgstr "Odobrenje kupcu"
+
+#. module: sale_margin
+#: selection:report.account.invoice,type:0
+#: selection:report.account.invoice.category,type:0
+#: selection:report.account.invoice.partner,type:0
+#: selection:report.account.invoice.partner.product,type:0
+#: selection:report.account.invoice.product,type:0
+msgid "Customer Invoice"
+msgstr "Izlazni račun"
+
+#. module: sale_margin
+#: selection:report.account.invoice.product,month:0
+msgid "February"
+msgstr "veljača"
+
+#. module: sale_margin
+#: view:report.account.invoice.product:0
+msgid "Current"
+msgstr "Trenutno"
+
+#. module: sale_margin
+#: view:report.account.invoice.product:0
+msgid "Group By..."
+msgstr "Grupiraj po..."
+
+#. module: sale_margin
+#: field:report.account.invoice,state:0
+#: field:report.account.invoice.category,state:0
+#: field:report.account.invoice.partner,state:0
+#: field:report.account.invoice.partner.product,state:0
+#: field:report.account.invoice.product,state:0
+msgid "State"
+msgstr "Status"
+
+#. module: sale_margin
+#: model:ir.module.module,description:sale_margin.module_meta_information
+msgid ""
+" \n"
+" This module adds the 'Margin' on sales order,\n"
+" which gives the profitability by calculating the difference between the "
+"Unit Price and Cost Price\n"
+" "
+msgstr ""
+" \n"
+" Ovaj modul dodaje RUC na prodajni nalog\n"
+" koji prikazuje profitabilnost računajući razliku između jedinične "
+"cijene i troška.\n"
+" "
+
+#. module: sale_margin
+#: selection:report.account.invoice,state:0
+#: selection:report.account.invoice.category,state:0
+#: selection:report.account.invoice.partner,state:0
+#: selection:report.account.invoice.partner.product,state:0
+#: selection:report.account.invoice.product,state:0
+msgid "Draft"
+msgstr "Nacrt"
+
+#. module: sale_margin
+#: selection:report.account.invoice,state:0
+#: selection:report.account.invoice.category,state:0
+#: selection:report.account.invoice.partner,state:0
+#: selection:report.account.invoice.partner.product,state:0
+#: selection:report.account.invoice.product,state:0
+msgid "Paid"
+msgstr "Plaćeno"
+
+#. module: sale_margin
+#: model:ir.model,name:sale_margin.model_stock_picking
+msgid "Picking List"
+msgstr ""
+
+#. module: sale_margin
+#: help:sale.order,margin:0
+msgid ""
+"It gives profitability by calculating the difference between the Unit Price "
+"and Cost Price."
+msgstr ""
+"Daje profitabilnost računajući razliku između jedinične cijene jediničnog "
+"troška."
+
+#. module: sale_margin
+#: field:report.account.invoice,type:0
+#: field:report.account.invoice.category,type:0
+#: field:report.account.invoice.partner,type:0
+#: field:report.account.invoice.partner.product,type:0
+#: field:report.account.invoice.product,type:0
+#: wizard_field:stock.invoice_onshipping,init,type:0
+msgid "Type"
+msgstr "Vrsta"
+
+#. module: sale_margin
+#: model:ir.model,name:sale_margin.model_report_account_invoice_product
+msgid "Invoice Statistics"
+msgstr "Statistika računa"
+
+#. module: sale_margin
+#: field:report.account.invoice.partner.product,product_id:0
+#: field:report.account.invoice.product,product_id:0
+msgid "Product"
+msgstr "Artikl"
+
+#. module: sale_margin
+#: sql_constraint:sale.order:0
+msgid "Order Reference must be unique !"
+msgstr "Referenca naloga mora biti jedinstvena"
+
+#. module: sale_margin
+#: view:report.account.invoice.product:0
+msgid "Invoice by Partner"
+msgstr "Računi po partneru"
+
+#. module: sale_margin
+#: selection:report.account.invoice.product,month:0
+msgid "August"
+msgstr "kolovoz"
+
+#. module: sale_margin
+#: selection:report.account.invoice,state:0
+#: selection:report.account.invoice.category,state:0
+#: selection:report.account.invoice.partner,state:0
+#: selection:report.account.invoice.partner.product,state:0
+#: selection:report.account.invoice.product,state:0
+msgid "Pro-forma"
+msgstr "Pro-forma"
+
+#. module: sale_margin
+#: selection:report.account.invoice.product,month:0
+msgid "May"
+msgstr "svibanj"
+
+#. module: sale_margin
+#: selection:report.account.invoice.product,month:0
+msgid "June"
+msgstr "lipanj"
+
+#. module: sale_margin
+#: view:report.account.invoice.product:0
+msgid "Date Invoiced"
+msgstr "Datum fakturiranja"
+
+#. module: sale_margin
+#: model:ir.module.module,shortdesc:sale_margin.module_meta_information
+msgid "Margins in Sales Order"
+msgstr "RUC u prodajnim nalozima"
+
+#. module: sale_margin
+#: view:report.account.invoice.product:0
+msgid "Search Margin"
+msgstr "Traži RUC"
+
+#. module: sale_margin
+#: view:report.account.invoice.product:0
+msgid "This Year"
+msgstr "Ove godine"
+
+#. module: sale_margin
+#: field:report.account.invoice.product,date:0
+msgid "Date"
+msgstr "Datum"
+
+#. module: sale_margin
+#: selection:report.account.invoice.product,month:0
+msgid "July"
+msgstr "srpanj"
+
+#. module: sale_margin
+#: view:report.account.invoice.product:0
+msgid "Extended Filters..."
+msgstr "Prošireni filtri..."
+
+#. module: sale_margin
+#: model:ir.ui.menu,name:sale_margin.menu_report_account_this_month_product
+msgid "This Month"
+msgstr "Ovaj mjesec"
+
+#. module: sale_margin
+#: view:report.account.invoice.product:0
+#: field:report.account.invoice.product,day:0
+msgid "Day"
+msgstr "Dan"
+
+#. module: sale_margin
+#: field:report.account.invoice.category,categ_id:0
+msgid "Categories"
+msgstr "Kategorije"
+
+#. module: sale_margin
+#: field:account.invoice.line,cost_price:0
+#: field:report.account.invoice,cost_price:0
+#: field:report.account.invoice.category,cost_price:0
+#: field:report.account.invoice.partner,cost_price:0
+#: field:report.account.invoice.partner.product,cost_price:0
+#: field:report.account.invoice.product,cost_price:0
+#: field:sale.order.line,purchase_price:0
+msgid "Cost Price"
+msgstr "Cijena koštanja"
+
+#. module: sale_margin
+#: selection:report.account.invoice.product,month:0
+msgid "October"
+msgstr "listopad"
+
+#. module: sale_margin
+#: selection:report.account.invoice.product,month:0
+msgid "January"
+msgstr "siječanj"
+
+#. module: sale_margin
+#: view:report.account.invoice.product:0
+#: field:report.account.invoice.product,year:0
+msgid "Year"
+msgstr "Godina"
+
+#. module: sale_margin
+#: selection:report.account.invoice.product,month:0
+msgid "September"
+msgstr "rujan"
+
+#. module: sale_margin
+#: selection:report.account.invoice.product,month:0
+msgid "April"
+msgstr "travanj"
+
+#. module: sale_margin
+#: field:report.account.invoice,amount:0
+#: field:report.account.invoice.category,amount:0
+#: field:report.account.invoice.partner,amount:0
+#: field:report.account.invoice.partner.product,amount:0
+#: field:report.account.invoice.product,amount:0
+msgid "Amount"
+msgstr "Iznos"
+
+#. module: sale_margin
+#: selection:report.account.invoice,type:0
+#: selection:report.account.invoice.category,type:0
+#: selection:report.account.invoice.partner,type:0
+#: selection:report.account.invoice.partner.product,type:0
+#: selection:report.account.invoice.product,type:0
+msgid "Supplier Refund"
+msgstr "Odobrenje dobavljača"
+
+#. module: sale_margin
+#: selection:report.account.invoice.product,month:0
+msgid "March"
+msgstr "ožujak"
+
+#. module: sale_margin
+#: field:report.account.invoice,margin:0
+#: field:report.account.invoice.category,margin:0
+#: field:report.account.invoice.partner,margin:0
+#: field:report.account.invoice.partner.product,margin:0
+#: field:report.account.invoice.product,margin:0
+#: field:sale.order,margin:0
+#: field:sale.order.line,margin:0
+msgid "Margin"
+msgstr "RUC"
+
+#. module: sale_margin
+#: selection:report.account.invoice.product,month:0
+msgid "November"
+msgstr "studeni"
+
+#. module: sale_margin
+#: field:report.account.invoice,quantity:0
+#: field:report.account.invoice.category,quantity:0
+#: field:report.account.invoice.partner,quantity:0
+#: field:report.account.invoice.partner.product,quantity:0
+#: field:report.account.invoice.product,quantity:0
+msgid "Quantity"
+msgstr "Količina"
+
+#. module: sale_margin
+#: view:report.account.invoice.product:0
+msgid "Invoices by product"
+msgstr "Računi po artiklu"
+
+#. module: sale_margin
+#: selection:report.account.invoice,type:0
+#: selection:report.account.invoice.category,type:0
+#: selection:report.account.invoice.partner,type:0
+#: selection:report.account.invoice.partner.product,type:0
+#: selection:report.account.invoice.product,type:0
+msgid "Supplier Invoice"
+msgstr "Ulazni račun"
+
+#. module: sale_margin
+#: model:ir.ui.menu,name:sale_margin.menu_report_account_all_invoice_by_invoices
+#: model:ir.ui.menu,name:sale_margin.menu_report_account_invoice_by_invoices
+#: view:report.account.invoice:0
+#: view:stock.picking:0
+#: field:stock.picking,invoice_ids:0
+msgid "Invoices"
+msgstr "Računi"
+
+#. module: sale_margin
+#: selection:report.account.invoice.product,month:0
+msgid "December"
+msgstr "prosinac"
+
+#. module: sale_margin
+#: model:ir.model,name:sale_margin.model_account_invoice_line
+msgid "Invoice Line"
+msgstr "Stavka računa"
+
+#. module: sale_margin
+#: field:report.account.invoice,name:0
+#: field:report.account.invoice.category,name:0
+#: field:report.account.invoice.partner,name:0
+#: field:report.account.invoice.partner.product,name:0
+#: field:report.account.invoice.product,name:0
+msgid "Month"
+msgstr "Mjesec"
+
+#. module: sale_margin
+#: selection:report.account.invoice,state:0
+#: selection:report.account.invoice.category,state:0
+#: selection:report.account.invoice.partner,state:0
+#: selection:report.account.invoice.partner.product,state:0
+#: selection:report.account.invoice.product,state:0
+msgid "Canceled"
+msgstr "Poništeno"
+
+#. module: sale_margin
+#: model:ir.actions.act_window,help:sale_margin.action_report_account_invoice_report
+msgid ""
+"This report gives you an overview of all the invoices generated by the "
+"system. You can sort and group your results by specific selection criteria "
+"to quickly find what you are looking for."
+msgstr ""
+"Ovaj izvještaj vam daje pregled svih računa napravljenih u sustavu. Možete "
+"sortirati i grupirati rezultate prema\r\n"
+"specifičnim kriterijima kako bi brzo pronašli ono što tražite."
+
+#. module: sale_margin
+#: model:ir.ui.menu,name:sale_margin.menu_report_account_invoice_product
+msgid "Invoice Report"
+msgstr "Izvještaj računa"
+
+#. module: sale_margin
+#: view:report.account.invoice.product:0
+msgid "Done"
+msgstr "Izvršeno"
+
+#. module: sale_margin
+#: model:ir.ui.menu,name:sale_margin.menu_report_account_invoice_product
+msgid "Invoice"
+msgstr "Račun"
+
+#. module: sale_margin
+#: view:stock.picking:0
+msgid "Customer Invoices"
+msgstr "Izlazni računi"
+
+#. module: sale_margin
+#: field:report.account.invoice.partner,partner_id:0
+#: field:report.account.invoice.partner.product,partner_id:0
+msgid "Partner"
+msgstr "Partner"
+
+#. module: sale_margin
+#: model:ir.model,name:sale_margin.model_sale_order
+msgid "Sales Order"
+msgstr "Prodajni nalog"
+
+#. module: sale_margin
+#: selection:report.account.invoice,state:0
+#: selection:report.account.invoice.category,state:0
+#: selection:report.account.invoice.partner,state:0
+#: selection:report.account.invoice.partner.product,state:0
+#: selection:report.account.invoice.product,state:0
+msgid "Open"
+msgstr "Otvoren"
+
+#. module: sale_margin
+#: model:ir.actions.act_window,name:sale_margin.action_report_account_invoice_report
+msgid "Invoice Analysis"
+msgstr "Analiza računa"
+
+#. module: sale_margin
+#: model:ir.model,name:sale_margin.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "Stavka prodajnog naloga"
diff --git a/addons/sale_margin/security/ir.model.access.csv b/addons/sale_margin/security/ir.model.access.csv
index 0343f29f43a..4a08a4aa60d 100644
--- a/addons/sale_margin/security/ir.model.access.csv
+++ b/addons/sale_margin/security/ir.model.access.csv
@@ -1 +1 @@
-"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
diff --git a/addons/sale_mrp/__openerp__.py b/addons/sale_mrp/__openerp__.py
index 7d4443a3cce..e3372690e6d 100644
--- a/addons/sale_mrp/__openerp__.py
+++ b/addons/sale_mrp/__openerp__.py
@@ -23,7 +23,7 @@
{
'name': 'Sales and MRP Management',
'version': '1.0',
- 'category': 'Hidden/Link',
+ 'category': 'Hidden/Links',
'complexity': "easy",
'description': """
This module provides facility to the user to install mrp and sales modulesat a time.
@@ -39,7 +39,6 @@ It adds sales name and sales Reference on production order.
'depends': ['mrp', 'sale'],
'init_xml': [],
'update_xml': [
- 'security/sale_mrp_security.xml',
'security/ir.model.access.csv',
'sale_mrp_view.xml',
],
diff --git a/addons/sale_mrp/i18n/hr.po b/addons/sale_mrp/i18n/hr.po
new file mode 100644
index 00000000000..a48201c1c49
--- /dev/null
+++ b/addons/sale_mrp/i18n/hr.po
@@ -0,0 +1,72 @@
+# Croatian translation for openobject-addons
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2011-01-11 11:16+0000\n"
+"PO-Revision-Date: 2011-12-10 07:22+0000\n"
+"Last-Translator: Tomislav Bosnjakovic \n"
+"Language-Team: Croatian \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-12-11 05:36+0000\n"
+"X-Generator: Launchpad (build 14450)\n"
+
+#. module: sale_mrp
+#: help:mrp.production,sale_ref:0
+msgid "Indicate the Customer Reference from sales order."
+msgstr "Označi kupčevu referencu iz prodajnog naloga"
+
+#. module: sale_mrp
+#: field:mrp.production,sale_ref:0
+msgid "Sales Reference"
+msgstr "Prodajna referenca"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Manufacturing Order"
+msgstr "Nalog za proizvodnju"
+
+#. module: sale_mrp
+#: model:ir.module.module,description:sale_mrp.module_meta_information
+msgid ""
+"\n"
+" This module provides facility to the user to install mrp and sales "
+"modules\n"
+" at a time. It is basically used when we want to keep track of "
+"production\n"
+" orders generated from sales order.\n"
+" It adds sales name and sales Reference on production order\n"
+" "
+msgstr ""
+"\n"
+" Ovaj modulomogućava korisniku instalaciju MRP i prodajnog modula.\n"
+" Koristi se kad želimo pratiti radne naloge u proizvodnji nastale iz \n"
+" prodajnih naloga. \n"
+" Dodaje naziv prodaje i prodajnu referencu na nalog za proizvodnju.\n"
+" "
+
+#. module: sale_mrp
+#: field:mrp.production,sale_name:0
+msgid "Sales Name"
+msgstr "Naziv prodaje"
+
+#. module: sale_mrp
+#: model:ir.module.module,shortdesc:sale_mrp.module_meta_information
+msgid "Sales and MRP Management"
+msgstr "Upravljanje prodajom i MRP"
+
+#. module: sale_mrp
+#: constraint:mrp.production:0
+msgid "Order quantity cannot be negative or zero !"
+msgstr "Količina na nalogu ne smije biti negativna ili nula!"
+
+#. module: sale_mrp
+#: help:mrp.production,sale_name:0
+msgid "Indicate the name of sales order."
+msgstr "Navedi ime prodajnog naloga"
diff --git a/addons/sale_mrp/i18n/pt.po b/addons/sale_mrp/i18n/pt.po
index dcfd11c49e8..e863ce80491 100644
--- a/addons/sale_mrp/i18n/pt.po
+++ b/addons/sale_mrp/i18n/pt.po
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2011-01-11 11:16+0000\n"
-"PO-Revision-Date: 2010-12-03 07:41+0000\n"
-"Last-Translator: OpenERP Administrators \n"
+"PO-Revision-Date: 2011-12-10 12:06+0000\n"
+"Last-Translator: Paulino Ascenção \n"
"Language-Team: Portuguese \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-05 05:44+0000\n"
-"X-Generator: Launchpad (build 14231)\n"
+"X-Launchpad-Export-Date: 2011-12-11 05:36+0000\n"
+"X-Generator: Launchpad (build 14450)\n"
#. module: sale_mrp
#: help:mrp.production,sale_ref:0
@@ -44,6 +44,11 @@ msgid ""
" It adds sales name and sales Reference on production order\n"
" "
msgstr ""
+"\n"
+" Este módulo serve para manter o controle das ordens de\n"
+" produção geradas a partir de ordens de venda.\n"
+" Regista o nome e referência da venda na ordem de produção.\n"
+" "
#. module: sale_mrp
#: field:mrp.production,sale_name:0
@@ -53,7 +58,7 @@ msgstr "Nome da Venda"
#. module: sale_mrp
#: model:ir.module.module,shortdesc:sale_mrp.module_meta_information
msgid "Sales and MRP Management"
-msgstr ""
+msgstr "Gestão de vendas e fabrico"
#. module: sale_mrp
#: constraint:mrp.production:0
diff --git a/addons/sale_mrp/security/ir.model.access.csv b/addons/sale_mrp/security/ir.model.access.csv
index a504c9a9e5a..a0f117b61e5 100644
--- a/addons/sale_mrp/security/ir.model.access.csv
+++ b/addons/sale_mrp/security/ir.model.access.csv
@@ -1,5 +1,4 @@
-"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
-"access_mrp_bom_user","mrp.bom","mrp.model_mrp_bom","base.group_sale_salesman",1,0,0,0
-"access_mrp_bom_manager","mrp.bom","mrp.model_mrp_bom","base.group_sale_manager",1,0,0,0
-"access_sale_order_manufacturing_user","sale.order manufacturing.user","sale.model_sale_order","mrp.group_mrp_user",1,1,0,0
-"access_sale_order_line_manufacturing_user","sale.order.line manufacturing.user","sale.model_sale_order_line","mrp.group_mrp_user",1,1,0,0
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+access_mrp_bom_user,mrp.bom,mrp.model_mrp_bom,base.group_sale_salesman,1,0,0,0
+access_sale_order_manufacturing_user,sale.order manufacturing.user,sale.model_sale_order,mrp.group_mrp_user,1,1,0,0
+access_sale_order_line_manufacturing_user,sale.order.line manufacturing.user,sale.model_sale_order_line,mrp.group_mrp_user,1,1,0,0
diff --git a/addons/sale_mrp/security/sale_mrp_security.xml b/addons/sale_mrp/security/sale_mrp_security.xml
deleted file mode 100644
index c0139329d1e..00000000000
--- a/addons/sale_mrp/security/sale_mrp_security.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
- Sales / Manager
-
-
-
- Sales / User
-
-
-
-
diff --git a/addons/sale_order_dates/__openerp__.py b/addons/sale_order_dates/__openerp__.py
index f88a2777a00..72aa496b6bc 100644
--- a/addons/sale_order_dates/__openerp__.py
+++ b/addons/sale_order_dates/__openerp__.py
@@ -21,7 +21,7 @@
{
- 'name': 'Full Dates on Sales Order',
+ 'name': 'Dates on Sales Order',
'version': '1.0',
'category': 'Sales Management',
'complexity': "easy",
diff --git a/addons/sale_order_dates/i18n/hr.po b/addons/sale_order_dates/i18n/hr.po
new file mode 100644
index 00000000000..bb845637559
--- /dev/null
+++ b/addons/sale_order_dates/i18n/hr.po
@@ -0,0 +1,74 @@
+# Croatian translation for openobject-addons
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2011-01-11 11:16+0000\n"
+"PO-Revision-Date: 2011-12-09 14:35+0000\n"
+"Last-Translator: Tomislav Bosnjakovic \n"
+"Language-Team: Croatian \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-12-10 04:56+0000\n"
+"X-Generator: Launchpad (build 14450)\n"
+
+#. module: sale_order_dates
+#: sql_constraint:sale.order:0
+msgid "Order Reference must be unique !"
+msgstr "Referenca naloga mora biti jedinstvena"
+
+#. module: sale_order_dates
+#: help:sale.order,requested_date:0
+msgid "Date on which customer has requested for sales."
+msgstr ""
+
+#. module: sale_order_dates
+#: field:sale.order,commitment_date:0
+msgid "Commitment Date"
+msgstr ""
+
+#. module: sale_order_dates
+#: field:sale.order,effective_date:0
+msgid "Effective Date"
+msgstr "Efektivni datum"
+
+#. module: sale_order_dates
+#: model:ir.module.module,shortdesc:sale_order_dates.module_meta_information
+msgid "Sales Order Dates"
+msgstr "Datumi naloga u prodaji"
+
+#. module: sale_order_dates
+#: help:sale.order,effective_date:0
+msgid "Date on which picking is created."
+msgstr ""
+
+#. module: sale_order_dates
+#: field:sale.order,requested_date:0
+msgid "Requested Date"
+msgstr "Traženi datum"
+
+#. module: sale_order_dates
+#: model:ir.model,name:sale_order_dates.model_sale_order
+msgid "Sales Order"
+msgstr "Prodajni nalog"
+
+#. module: sale_order_dates
+#: model:ir.module.module,description:sale_order_dates.module_meta_information
+msgid ""
+"\n"
+"Add commitment, requested and effective dates on the sales order.\n"
+msgstr ""
+"\n"
+"Add commitment, requested and effective dates on the sales order.\n"
+"Dodaj datum prihvaćanja obveze, traženi i efektivni datum na prodajnom "
+"nalogu.\n"
+
+#. module: sale_order_dates
+#: help:sale.order,commitment_date:0
+msgid "Date on which delivery of products is to be made."
+msgstr "Datum kada bi trebalo dostaviti artikl."
diff --git a/addons/share/i18n/hr.po b/addons/share/i18n/hr.po
index 29c2187a5d2..8b1c7f29d88 100644
--- a/addons/share/i18n/hr.po
+++ b/addons/share/i18n/hr.po
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2011-01-11 11:16+0000\n"
-"PO-Revision-Date: 2010-09-08 09:05+0000\n"
+"PO-Revision-Date: 2011-12-08 17:51+0000\n"
"Last-Translator: Goran Kliska \n"
"Language-Team: Croatian \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-05 05:45+0000\n"
-"X-Generator: Launchpad (build 14231)\n"
+"X-Launchpad-Export-Date: 2011-12-09 04:46+0000\n"
+"X-Generator: Launchpad (build 14450)\n"
#. module: share
#: code:addons/share/web/editors.py:15
@@ -38,7 +38,7 @@ msgstr ""
#. module: share
#: help:res.groups,share:0
msgid "Group created to set access rights for sharing data with some users."
-msgstr ""
+msgstr "Group created to set access rights for sharing data with some users."
#. module: share
#: model:ir.module.module,shortdesc:share.module_meta_information
@@ -48,7 +48,7 @@ msgstr ""
#. module: share
#: sql_constraint:res.users:0
msgid "You can not have two users with the same login !"
-msgstr ""
+msgstr "Ne možete imati dva korisnika sa istim korisničkim imenom !"
#. module: share
#: code:addons/share/wizard/share_wizard.py:76
@@ -76,22 +76,24 @@ msgstr ""
#: constraint:res.users:0
msgid "The chosen company is not in the allowed companies for this user"
msgstr ""
+"Odabrana organizacija nije među dozvoljenim organizacijama za ovog korisnika"
#. module: share
#: model:ir.model,name:share.model_res_users
msgid "res.users"
-msgstr ""
+msgstr "res.users"
#. module: share
#: view:share.wizard:0
msgid "Next"
-msgstr ""
+msgstr "Next"
#. module: share
#: help:share.wizard,action_id:0
msgid ""
"The action that opens the screen containing the data you wish to share."
msgstr ""
+"The action that opens the screen containing the data you wish to share."
#. module: share
#: code:addons/share/wizard/share_wizard.py:68
@@ -113,7 +115,7 @@ msgstr ""
#. module: share
#: field:share.wizard.result.line,newly_created:0
msgid "Newly created"
-msgstr ""
+msgstr "Newly created"
#. module: share
#: field:share.wizard,share_root_url:0
@@ -131,7 +133,7 @@ msgstr ""
#. module: share
#: view:res.groups:0
msgid "Regular groups only (no share groups"
-msgstr ""
+msgstr "Regular groups only (no share groups"
#. module: share
#: selection:share.wizard,access_mode:0
@@ -163,7 +165,7 @@ msgstr ""
#. module: share
#: field:res.users,share:0
msgid "Share User"
-msgstr ""
+msgstr "Udio korisnika"
#. module: share
#: code:addons/share/wizard/share_wizard.py:452
@@ -210,7 +212,7 @@ msgstr ""
#. module: share
#: sql_constraint:res.groups:0
msgid "The name of the group must be unique !"
-msgstr ""
+msgstr "Naziv grupe mora biti jedinstven!"
#. module: share
#: selection:share.wizard,user_type:0
@@ -226,7 +228,7 @@ msgstr ""
#. module: share
#: view:res.groups:0
msgid "Groups"
-msgstr ""
+msgstr "Grupe"
#. module: share
#: view:share.wizard:0
@@ -236,14 +238,14 @@ msgstr ""
#. module: share
#: field:res.groups,share:0
msgid "Share Group"
-msgstr ""
+msgstr "Grupa dijeljenja"
#. module: share
#: code:addons/share/wizard/share_wizard.py:459
#: field:share.wizard.result.line,password:0
#, python-format
msgid "Password"
-msgstr ""
+msgstr "Lozinka"
#. module: share
#: view:share.wizard:0
@@ -298,6 +300,8 @@ msgid ""
"Please select the action that opens the screen containing the data you want "
"to share."
msgstr ""
+"Please select the action that opens the screen containing the data you want "
+"to share."
#. module: share
#: selection:share.wizard,user_type:0
@@ -308,12 +312,12 @@ msgstr ""
#: view:share.wizard:0
#: field:share.wizard,result_line_ids:0
msgid "Summary"
-msgstr ""
+msgstr "Sažetak"
#. module: share
#: field:share.wizard,user_type:0
msgid "Users to share with"
-msgstr ""
+msgstr "Users to share with"
#. module: share
#: code:addons/share/wizard/share_wizard.py:304
@@ -339,6 +343,8 @@ msgid ""
"Optionally, you may specify an additional domain restriction that will be "
"applied to the shared data."
msgstr ""
+"Optionally, you may specify an additional domain restriction that will be "
+"applied to the shared data."
#. module: share
#: view:share.wizard:0
@@ -356,17 +362,17 @@ msgstr ""
#. module: share
#: view:res.users:0
msgid "Regular users only (no share user)"
-msgstr ""
+msgstr "Redoviti korisnici samo (bez podijeljenih korisnika)"
#. module: share
#: field:share.wizard.result.line,share_url:0
msgid "Share URL"
-msgstr ""
+msgstr "Share URL"
#. module: share
#: field:share.wizard,domain:0
msgid "Domain"
-msgstr ""
+msgstr "Domena"
#. module: share
#: code:addons/share/wizard/share_wizard.py:314
@@ -380,12 +386,12 @@ msgstr ""
#. module: share
#: field:share.wizard,access_mode:0
msgid "Access Mode"
-msgstr ""
+msgstr "Način pristupa"
#. module: share
#: view:share.wizard:0
msgid "Access info"
-msgstr ""
+msgstr "Access info"
#. module: share
#: code:addons/share/wizard/share_wizard.py:454
@@ -398,13 +404,13 @@ msgstr ""
#. module: share
#: field:share.wizard,action_id:0
msgid "Action to share"
-msgstr ""
+msgstr "Action to share"
#. module: share
#: code:addons/share/web/editors.py:18
#, python-format
msgid "Share"
-msgstr ""
+msgstr "Podjeli"
#. module: share
#: code:addons/share/wizard/share_wizard.py:434
@@ -420,7 +426,7 @@ msgstr ""
#. module: share
#: model:ir.model,name:share.model_share_wizard_result_line
msgid "share.wizard.result.line"
-msgstr ""
+msgstr "share.wizard.result.line"
#. module: share
#: code:addons/share/wizard/share_wizard.py:313
@@ -435,22 +441,22 @@ msgstr ""
#: model:ir.ui.menu,name:share.menu_action_share_wizard
#: field:share.wizard.result.line,share_wizard_id:0
msgid "Share Wizard"
-msgstr ""
+msgstr "Asistent dijeljenja"
#. module: share
#: help:share.wizard,user_type:0
msgid "Select the type of user(s) you would like to share data with."
-msgstr ""
+msgstr "Odaberite vrstu korisnika (e) s kojima želite dijeliti podatke."
#. module: share
#: view:share.wizard:0
msgid "Cancel"
-msgstr ""
+msgstr "Odustani"
#. module: share
#: view:share.wizard:0
msgid "Close"
-msgstr ""
+msgstr "Zatvori"
#. module: share
#: help:res.users,share:0
@@ -458,11 +464,13 @@ msgid ""
"External user with limited access, created only for the purpose of sharing "
"data."
msgstr ""
+"External user with limited access, created only for the purpose of sharing "
+"data."
#. module: share
#: help:share.wizard,domain:0
msgid "Optional domain for further data filtering"
-msgstr ""
+msgstr "Optional domain for further data filtering"
#. module: share
#: selection:share.wizard,access_mode:0
@@ -474,3 +482,6 @@ msgstr ""
#, python-format
msgid "*usual password*"
msgstr ""
+
+#~ msgid "Access Groups"
+#~ msgstr "Access Groups"
diff --git a/addons/share/res_users.py b/addons/share/res_users.py
index f7a81a24948..db4184ce378 100644
--- a/addons/share/res_users.py
+++ b/addons/share/res_users.py
@@ -26,7 +26,14 @@ class res_groups(osv.osv):
_columns = {
'share': fields.boolean('Share Group', readonly=True,
help="Group created to set access rights for sharing data with some users.")
- }
+ }
+
+ def get_application_groups(self, cr, uid, domain=None, context=None):
+ if domain is None:
+ domain = []
+ domain.append(('share', '=', False))
+ return super(res_groups, self).get_application_groups(cr, uid, domain=domain, context=context)
+
res_groups()
class res_users(osv.osv):
diff --git a/addons/share/res_users_view.xml b/addons/share/res_users_view.xml
index b03a090c809..3b74fbb4dbc 100644
--- a/addons/share/res_users_view.xml
+++ b/addons/share/res_users_view.xml
@@ -21,18 +21,6 @@
Users{'search_default_no_share': 1}
-
- res.users.form
- res.users
- form
-
-
-
- {'search_default_no_share':1}
-
-
-
-
res.groups.search.share
diff --git a/addons/share/security/share_security.xml b/addons/share/security/share_security.xml
index a5405dbcb48..1e92ac44a53 100644
--- a/addons/share/security/share_security.xml
+++ b/addons/share/security/share_security.xml
@@ -1,10 +1,17 @@
+
+ Sharing
+
+ 26
+
+
- Sharing / User
+ User
Members of this groups have access to the sharing wizard, which allows them to invite external users to view or edit some of their documents.
+
-
\ No newline at end of file
+
diff --git a/addons/share/static/src/css/share.css b/addons/share/static/src/css/share.css
index 3b47a065b1e..8b137891791 100644
--- a/addons/share/static/src/css/share.css
+++ b/addons/share/static/src/css/share.css
@@ -1,13 +1 @@
-.openerp li.oe-share {
- background: url(../img/share.png) no-repeat;
- padding-left: 20px;
-}
-
-.openerp a.oe-share {
- background: url(../img/share.png) no-repeat;
- display: block;
- float: left;
- width: 20px;
- height: 20px;
-}
diff --git a/addons/share/static/src/js/share.js b/addons/share/static/src/js/share.js
index b2abc1832a4..b084e82f7c9 100644
--- a/addons/share/static/src/js/share.js
+++ b/addons/share/static/src/js/share.js
@@ -1,59 +1,42 @@
openerp.share = function(instance) {
-function launch_wizard(self, view) {
+function launch_wizard(self, view, button) {
+ var button = button || 'go_step_1';
var action = view.widget_parent.action;
var Share = new instance.web.DataSet(self, 'share.wizard', view.dataset.get_context());
- var domain = view.dataset.domain;
-
+ var domain = new instance.web.CompoundDomain(view.dataset.domain);
if (view.fields_view.type == 'form') {
domain = new instance.web.CompoundDomain(domain, [['id', '=', view.datarecord.id]]);
}
-
- Share.create({
- name: action.name,
- domain: domain,
- action_id: action.id,
- }, function(result) {
- var share_id = result.result;
- var step1 = Share.call('go_step_1', [[share_id],], function(result) {
- var action = result;
- self.do_action(action);
+ self.rpc('/web/session/eval_domain_and_context', {
+ domains: [domain],
+ contexts: [view.dataset.context]
+ }, function (result) {
+ Share.create({
+ name: action.name,
+ domain: result.domain,
+ action_id: action.id,
+ view_type: view.fields_view.type,
+ }, function(result) {
+ var share_id = result.result;
+ var step1 = Share.call(button, [[share_id],], function(result) {
+ var action = result;
+ self.do_action(action);
+ });
});
});
}
-var _has_share = null;
-function if_has_share(yes, no) {
- if (!_has_share) {
- _has_share = $.Deferred(function() {
- var self = this;
- instance.connection.on_session_invalid.add_last(function() { _has_share = null; });
- var func = new instance.web.Model(null, "share.wizard").get_func("has_share");
- func(instance.connection.uid).pipe(function(res) {
- if(res) {
- self.resolve();
- } else {
- self.reject();
- }
- });
- });
- }
- _has_share.done(yes).fail(no);
-}
-
-
instance.web.Sidebar = instance.web.Sidebar.extend({
add_default_sections: function() {
this._super();
var self = this;
- if_has_share(function() {
- self.add_items('other', [{
- label: 'Share',
- callback: self.on_sidebar_click_share,
- classname: 'oe-share',
- }]);
- });
+ self.add_items('other', [{
+ label: 'Share',
+ callback: self.on_sidebar_click_share,
+ classname: 'oe-share',
+ }]);
},
on_sidebar_click_share: function(item) {
var view = this.widget_parent
@@ -64,13 +47,14 @@ instance.web.Sidebar = instance.web.Sidebar.extend({
instance.web.ViewManagerAction.include({
start: function() {
var self = this;
- if_has_share(function() {
- self.$element.find('a.oe-share').click(self.on_click_share);
- }, function() {
- self.$element.find('a.oe-share').remove();
- });
+ self.$element.find('a.oe-share_link').click(self.on_click_share_link);
+ self.$element.find('a.oe-share').click(self.on_click_share);
return this._super.apply(this, arguments);
},
+ on_click_share_link: function(e) {
+ e.preventDefault();
+ launch_wizard(this, this.views[this.active_view].controller,'go_step_1_link');
+ },
on_click_share: function(e) {
e.preventDefault();
launch_wizard(this, this.views[this.active_view].controller);
diff --git a/addons/share/static/src/xml/share.xml b/addons/share/static/src/xml/share.xml
index 9a1363846a0..9b030051520 100644
--- a/addons/share/static/src/xml/share.xml
+++ b/addons/share/static/src/xml/share.xml
@@ -5,9 +5,8 @@
-
-
-
+
+
diff --git a/addons/share/wizard/share_wizard.py b/addons/share/wizard/share_wizard.py
index 5f33f02f9e5..52f8d5c471e 100644
--- a/addons/share/wizard/share_wizard.py
+++ b/addons/share/wizard/share_wizard.py
@@ -22,12 +22,16 @@ import logging
import random
import time
from urllib import quote_plus
+import uuid
+
+import simplejson
import tools
from osv import osv, fields
from osv import expression
from tools.translate import _
from tools.safe_eval import safe_eval
+import openerp
FULL_ACCESS = ('perm_read', 'perm_write', 'perm_create', 'perm_unlink')
READ_WRITE_ACCESS = ('perm_read', 'perm_write')
@@ -43,38 +47,6 @@ RANDOM_PASS_CHARACTERS = 'aaaabcdeeeefghjkmnpqrstuvwxyzAAAABCDEEEEFGHJKLMNPQRSTU
def generate_random_pass():
return ''.join(random.sample(RANDOM_PASS_CHARACTERS,10))
-
-# Utils for introspecting the ORM - could be moved to server someday
-class column_info(object):
- """Struct containing details about an osv column, either one local to
- its model, or one inherited via _inherits.
-
- :attr name: name of the column
- :attr column: column instance, subclass of osv.fields.column
- :attr parent_model: if the column is inherited, name of the model
- that contains it, None for local columns.
- :attr parent_column: the name of the column containing the m2o
- relationship to the parent model that contains
- this column, None for local columns.
- """
- def __init__(self, name, column, parent_model=None, parent_column=None):
- self.name = name
- self.column = column
- self.parent_model = parent_model
- self.parent_column = parent_column
-
-def get_column_infos(osv_model):
- """Returns a dict mapping all fields names (direct fields and
- inherited field via _inherits) to a ``column_info`` struct
- giving detailed columns """
- result = {}
- for k, (parent,m2o,col) in osv_model._inherit_fields.iteritems():
- result[k] = column_info(k, col, parent, m2o)
- for k, v in osv_model._columns.iteritems():
- result[k] = column_info(k,v)
- return result
-
-
class share_wizard(osv.osv_memory):
_logger = logging.getLogger('share.wizard')
_name = 'share.wizard'
@@ -110,7 +82,7 @@ class share_wizard(osv.osv_memory):
def _user_type_selection(self, cr, uid, context=None):
"""Selection values may be easily overridden/extended via inheritance"""
- return [('emails','List of emails')]
+ return [('embedded', 'Direct link or embed code'), ('emails','Emails'), ]
"""Override of create() to auto-compute the action name"""
def create(self, cr, uid, values, context=None):
@@ -123,7 +95,13 @@ class share_wizard(osv.osv_memory):
# NOTE: take _ids in parameter to allow usage through browse_record objects
base_url = self.pool.get('ir.config_parameter').get_param(cr, uid, 'web.base.url', default='', context=context)
if base_url:
- base_url += '/?db=%(dbname)s&login=%(login)s'
+ base_url += '/web/webclient/login?db=%(dbname)s&login=%(login)s'
+ extra = context and context.get('share_url_template_extra_arguments')
+ if extra:
+ base_url += '&' + '&'.join('%s=%%(%s)s' % (x,x) for x in extra)
+ hash_ = context and context.get('share_url_template_hash_arguments')
+ if hash_:
+ base_url += '#' + '&'.join('%s=%%(%s)s' % (x,x) for x in hash_)
return base_url
def _share_root_url(self, cr, uid, ids, _fieldname, _args, context=None):
@@ -133,11 +111,68 @@ class share_wizard(osv.osv_memory):
result[this.id] = this.share_url_template() % data
return result
+ def _generate_embedded_code(self, wizard, options=None):
+ cr = wizard._cr
+ uid = wizard._uid
+ context = wizard._context
+ if options is None:
+ options = {}
+
+ js_options = {}
+ title = options['title'] if 'title' in options else wizard.embed_option_title
+ search = (options['search'] if 'search' in options else wizard.embed_option_search) if wizard.access_mode != 'readonly' else False
+
+ if not title:
+ js_options['display_title'] = False
+ if search:
+ js_options['search_view'] = True
+
+ js_options_str = (', ' + simplejson.dumps(js_options)) if js_options else ''
+
+ base_url = self.pool.get('ir.config_parameter').get_param(cr, uid, 'web.base.url', default=None, context=context)
+ user = wizard.result_line_ids[0]
+
+ return """
+
+ """ % {
+ 'init': simplejson.dumps(openerp.conf.server_wide_modules),
+ 'base_url': base_url or '',
+ 'server': simplejson.dumps(base_url),
+ 'dbname': simplejson.dumps(cr.dbname),
+ 'login': simplejson.dumps(user.login),
+ 'password': simplejson.dumps(user.password),
+ 'action': user.user_id.action_id.id,
+ 'options': js_options_str,
+ }
+
+ def _embed_code(self, cr, uid, ids, _fn, _args, context=None):
+ result = dict.fromkeys(ids, '')
+ for this in self.browse(cr, uid, ids, context=context):
+ result[this.id] = self._generate_embedded_code(this)
+ return result
+
+ def _embed_url(self, cr, uid, ids, _fn, _args, context=None):
+ if context is None:
+ context = {}
+ result = dict.fromkeys(ids, '')
+ for this in self.browse(cr, uid, ids, context=context):
+ if this.result_line_ids:
+ ctx = dict(context, share_url_template_extra_arguments=['key'],
+ share_url_template_hash_arguments=['action_id'])
+ user = this.result_line_ids[0]
+ data = dict(dbname=cr.dbname, login=user.login, key=user.password, action_id=this.action_id.id)
+ result[this.id] = this.share_url_template(context=ctx) % data
+ return result
+
+
_columns = {
'action_id': fields.many2one('ir.actions.act_window', 'Action to share', required=True,
help="The action that opens the screen containing the data you wish to share."),
+ 'view_type': fields.char('Current View Type', size=32, required=True),
'domain': fields.char('Domain', size=256, help="Optional domain for further data filtering"),
- 'user_type': fields.selection(lambda s, *a, **k: s._user_type_selection(*a, **k),'Users to share with', required=True,
+ 'user_type': fields.selection(lambda s, *a, **k: s._user_type_selection(*a, **k),'Sharing method', required=True,
help="Select the type of user(s) you would like to share data with."),
'new_users': fields.text("Emails"),
'access_mode': fields.selection([('readonly','Can view'),('readwrite','Can edit')],'Access Mode', required=True,
@@ -147,18 +182,40 @@ class share_wizard(osv.osv_memory):
help='Main access page for users that are granted shared access'),
'name': fields.char('Share Title', size=64, required=True, help="Title for the share (displayed to users as menu and shortcut name)"),
'message': fields.text("Personal Message", help="An optional personal message, to be included in the e-mail notification."),
+
+ 'embed_code': fields.function(_embed_code, type='text'),
+ 'embed_option_title': fields.boolean("Display title"),
+ 'embed_option_search': fields.boolean('Display search view'),
+ 'embed_url': fields.function(_embed_url, string='Share URL', type='char', size=512, readonly=True),
}
_defaults = {
- 'user_type' : 'emails',
+ 'view_type': 'tree',
+ 'user_type' : 'embedded',
'domain': lambda self, cr, uid, context, *a: context.get('domain', '[]'),
'action_id': lambda self, cr, uid, context, *a: context.get('action_id'),
'access_mode': 'readonly',
+ 'embed_option_title': True,
+ 'embed_option_search': True,
}
+ def go_step_1_link(self, cr, uid, ids, context=None):
+ dummy, step1_form_view_id = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'share', 'share_step1_form_link')
+ return {
+ 'name': _('Link or embed your documents'),
+ 'view_type': 'form',
+ 'view_mode': 'form',
+ 'res_model': 'share.wizard',
+ 'view_id': False,
+ 'res_id': ids[0],
+ 'views': [(step1_form_view_id, 'form')],
+ 'type': 'ir.actions.act_window',
+ 'target': 'new'
+ }
+
def go_step_1(self, cr, uid, ids, context=None):
dummy, step1_form_view_id = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'share', 'share_step1_form')
return {
- 'name': _('Grant instant access to your documents'),
+ 'name': _('Share your documents by email'),
'view_type': 'form',
'view_mode': 'form',
'res_model': 'share.wizard',
@@ -185,35 +242,56 @@ class share_wizard(osv.osv_memory):
ignored, existing ones."""
user_obj = self.pool.get('res.users')
current_user = user_obj.browse(cr, UID_ROOT, uid, context=context)
+ # modify context to disable shortcuts when creating share users
+ context['noshortcut'] = True
created_ids = []
existing_ids = []
- for new_user in (wizard_data.new_users or '').split('\n'):
- # Ignore blank lines
- new_user = new_user.strip()
- if not new_user: continue
- # Ignore the user if it already exists.
- existing = user_obj.search(cr, UID_ROOT, [('login', '=', new_user)])
- existing_ids.extend(existing)
- if existing:
- new_line = { 'user_id': existing[0],
- 'newly_created': False}
+ if wizard_data.user_type == 'emails':
+ for new_user in (wizard_data.new_users or '').split('\n'):
+ # Ignore blank lines
+ new_user = new_user.strip()
+ if not new_user: continue
+ # Ignore the user if it already exists.
+ existing = user_obj.search(cr, UID_ROOT, [('login', '=', new_user)])
+ existing_ids.extend(existing)
+ if existing:
+ new_line = { 'user_id': existing[0],
+ 'newly_created': False}
+ wizard_data.write({'result_line_ids': [(0,0,new_line)]})
+ continue
+ new_pass = generate_random_pass()
+ user_id = user_obj.create(cr, UID_ROOT, {
+ 'login': new_user,
+ 'password': new_pass,
+ 'name': new_user,
+ 'user_email': new_user,
+ 'groups_id': [(6,0,[group_id])],
+ 'share': True,
+ 'company_id': current_user.company_id.id
+ }, context)
+ new_line = { 'user_id': user_id,
+ 'password': new_pass,
+ 'newly_created': True}
wizard_data.write({'result_line_ids': [(0,0,new_line)]})
- continue
+ created_ids.append(user_id)
+
+ elif wizard_data.user_type == 'embedded':
+ new_login = 'embedded-%s' % (uuid.uuid4().hex,)
new_pass = generate_random_pass()
user_id = user_obj.create(cr, UID_ROOT, {
- 'login': new_user,
- 'password': new_pass,
- 'name': new_user,
- 'user_email': new_user,
- 'groups_id': [(6,0,[group_id])],
- 'share': True,
- 'company_id': current_user.company_id.id
- })
+ 'login': new_login,
+ 'password': new_pass,
+ 'name': new_login,
+ 'groups_id': [(6,0,[group_id])],
+ 'share': True,
+ 'company_id': current_user.company_id.id
+ }, context)
new_line = { 'user_id': user_id,
'password': new_pass,
'newly_created': True}
wizard_data.write({'result_line_ids': [(0,0,new_line)]})
created_ids.append(user_id)
+
return created_ids, existing_ids
def _create_shortcut(self, cr, uid, values, context=None):
@@ -273,21 +351,33 @@ class share_wizard(osv.osv_memory):
def _shared_action_def(self, cr, uid, wizard_data, context=None):
copied_action = wizard_data.action_id
+
+ if wizard_data.access_mode == 'readonly':
+ view_mode = wizard_data.view_type
+ view_id = copied_action.view_id.id if copied_action.view_id.type == wizard_data.view_type else False
+ else:
+ view_mode = copied_action.view_mode
+ view_id = copied_action.view_id.id
+
+
action_def = {
'name': wizard_data.name,
'domain': copied_action.domain,
'context': self._cleanup_action_context(wizard_data.action_id.context, uid),
'res_model': copied_action.res_model,
- 'view_mode': copied_action.view_mode,
+ 'view_mode': view_mode,
'view_type': copied_action.view_type,
- 'search_view_id': copied_action.search_view_id.id,
- 'view_id': copied_action.view_id.id,
+ 'search_view_id': copied_action.search_view_id.id if wizard_data.access_mode != 'readonly' else False,
+ 'view_id': view_id,
+ 'auto_search': True,
}
if copied_action.view_ids:
action_def['view_ids'] = [(0,0,{'sequence': x.sequence,
'view_mode': x.view_mode,
'view_id': x.view_id.id })
- for x in copied_action.view_ids]
+ for x in copied_action.view_ids
+ if (wizard_data.access_mode != 'readonly' or x.view_mode == wizard_data.view_type)
+ ]
return action_def
def _setup_action_and_shortcut(self, cr, uid, wizard_data, user_ids, make_home, context=None):
@@ -321,7 +411,7 @@ class share_wizard(osv.osv_memory):
models = [x[1].model for x in relation_fields]
model_obj = self.pool.get('ir.model')
model_osv = self.pool.get(model.model)
- for colinfo in get_column_infos(model_osv).itervalues():
+ for colinfo in model_osv._all_columns.itervalues():
coldef = colinfo.column
coltype = coldef._type
relation_field = None
@@ -331,7 +421,7 @@ class share_wizard(osv.osv_memory):
relation_osv = self.pool.get(coldef._obj)
if coltype == 'one2many':
# don't record reverse path if it's not a real m2o (that happens, but rarely)
- dest_model_ci = get_column_infos(relation_osv)
+ dest_model_ci = relation_osv._all_columns
reverse_rel = coldef._fields_id
if reverse_rel in dest_model_ci and dest_model_ci[reverse_rel].column._type == 'many2one':
relation_field = ('%s.%s'%(reverse_rel, suffix)) if suffix else reverse_rel
@@ -339,7 +429,7 @@ class share_wizard(osv.osv_memory):
for parent in relation_osv._inherits:
if parent not in models:
parent_model = self.pool.get(parent)
- parent_colinfos = get_column_infos(parent_model)
+ parent_colinfos = parent_model._all_columns
parent_model_browse = model_obj.browse(cr, UID_ROOT,
model_obj.search(cr, UID_ROOT, [('model','=',parent)]))[0]
if relation_field and coldef._fields_id in parent_colinfos:
@@ -689,9 +779,11 @@ class share_wizard(osv.osv_memory):
raise osv.except_osv(_('Email required'), _('The current user must have an email address configured in User Preferences to be able to send outgoing emails.'))
# TODO: also send an HTML version of this mail
- emails_sent = 0
+ msg_ids = []
for result_line in wizard_data.result_line_ids:
email_to = result_line.user_id.user_email
+ if not email_to:
+ continue
subject = wizard_data.name
body = _("Hello,")
body += "\n\n"
@@ -712,22 +804,27 @@ class share_wizard(osv.osv_memory):
body += _("The documents have been automatically added to your current OpenERP documents.\n")
body += _("You may use your current login (%s) and password to view them.\n") % result_line.user_id.login
body += "\n\n"
- body += user.signature
+ body += (user.signature or '')
body += "\n\n"
body += "--\n"
body += _("OpenERP is a powerful and user-friendly suite of Business Applications (CRM, Sales, HR, etc.)\n"
"It is open source and can be found on http://www.openerp.com.")
+ msg_ids.append(mail_message.schedule_with_attach(cr, uid,
+ user.user_email,
+ [email_to],
+ subject,
+ body,
+ model='share.wizard',
+ context=context))
+ # force direct delivery, as users expect instant notification
+ mail_message.send(cr, uid, msg_ids, context=context)
+ self._logger.info('%d share notification(s) sent.', len(msg_ids))
+
+ def onchange_embed_options(self, cr, uid, ids, opt_title, opt_search, context=None):
+ wizard = self.browse(cr, uid, ids[0], context)
+ options = dict(title=opt_title, search=opt_search)
+ return {'value': {'embed_code': self._generate_embedded_code(wizard, options)}}
- if mail_message.schedule_with_attach(cr, uid,
- user.user_email,
- [email_to],
- subject,
- body,
- model='share.wizard'):
- emails_sent += 1
- else:
- self._logger.warning('Failed to send share notification from %s to %s, ignored', user.user_email, email_to)
- self._logger.info('%s share notification(s) successfully sent.', emails_sent)
share_wizard()
class share_result_line(osv.osv_memory):
@@ -753,6 +850,5 @@ class share_result_line(osv.osv_memory):
_defaults = {
'newly_created': True,
}
-share_result_line()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/share/wizard/share_wizard_view.xml b/addons/share/wizard/share_wizard_view.xml
index 128b32b07da..5dad2174f05 100644
--- a/addons/share/wizard/share_wizard_view.xml
+++ b/addons/share/wizard/share_wizard_view.xml
@@ -23,25 +23,43 @@
+
+ share.step1.form.link
+ share.wizard
+ form
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
share.step1.formshare.wizardform
-
-
-
-
-
-
+
+
+
-
+
-
+
@@ -61,15 +79,30 @@
form
-
-
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -98,6 +131,17 @@
- 'domain' (string expression for full domain to apply as sent to server,
with dynamic data like 'uid' replaced by actual value (i.e. after eval)!)
-->
+
+ Share Wizard
+ ir.actions.act_window
+ share.wizard
+ form
+ form
+
+ new
+ {'default_user_type':'embedded'}
+
+
Share Wizardir.actions.act_window
diff --git a/addons/stock/__openerp__.py b/addons/stock/__openerp__.py
index 6ea85face1e..ca25e2c0770 100644
--- a/addons/stock/__openerp__.py
+++ b/addons/stock/__openerp__.py
@@ -20,7 +20,7 @@
##############################################################################
{
- "name" : "Inventory Management",
+ "name" : "Warehouse Management",
"version" : "1.1",
"author" : "OpenERP SA",
'complexity': "easy",
@@ -88,9 +88,10 @@ Thanks to the double entry management, the inventory controlling is powerful and
'test/stock_demo_backorder.yml'
],
'installable': True,
- 'core': True,
+ 'application': True,
'active': False,
'certificate': '0055421559965',
+ "css": [ 'static/src/css/stock.css' ],
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/stock/board_warehouse_view.xml b/addons/stock/board_warehouse_view.xml
index 6a4e437bf3d..656f0caffd7 100644
--- a/addons/stock/board_warehouse_view.xml
+++ b/addons/stock/board_warehouse_view.xml
@@ -22,7 +22,7 @@
- Incoming Products Delay
+ Incoming Productsreport.stock.moveformgraph,tree
@@ -31,7 +31,7 @@
{'search_default_in':1}
- Outgoing Products Delay
+ Outgoing Productsreport.stock.moveformgraph,tree
@@ -52,8 +52,8 @@
-
-
+
+
diff --git a/addons/stock/i18n/hr.po b/addons/stock/i18n/hr.po
index f0590e832b5..b33c8c571d9 100644
--- a/addons/stock/i18n/hr.po
+++ b/addons/stock/i18n/hr.po
@@ -1,4 +1,4 @@
-# Translation of OpenERP Server.
+## Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * stock
#
@@ -7,19 +7,19 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2011-01-11 11:16+0000\n"
-"PO-Revision-Date: 2010-09-29 09:23+0000\n"
-"Last-Translator: OpenERP Administrators \n"
+"PO-Revision-Date: 2011-12-08 16:12+0000\n"
+"Last-Translator: Goran Kliska \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-12 04:51+0000\n"
-"X-Generator: Launchpad (build 14277)\n"
+"X-Launchpad-Export-Date: 2011-12-09 04:45+0000\n"
+"X-Generator: Launchpad (build 14450)\n"
#. module: stock
#: field:product.product,track_outgoing:0
msgid "Track Outgoing Lots"
-msgstr "Prati izlazne lotove"
+msgstr "Prati lot-ove na izlazu"
#. module: stock
#: model:ir.model,name:stock.model_stock_ups_upload
@@ -42,7 +42,7 @@ msgstr "Ulančana lokacija ako je namještena"
#: view:stock.move:0
#: view:stock.picking:0
msgid "Put in a new pack"
-msgstr ""
+msgstr "U novi paket"
#. module: stock
#: field:stock.move.split.lines,action:0
@@ -52,36 +52,36 @@ msgstr ""
#. module: stock
#: view:stock.production.lot:0
msgid "Upstream Traceability"
-msgstr ""
+msgstr "Upstream Traceability"
#. module: stock
#: model:ir.actions.act_window,name:stock.action_stock_line_date
#: model:ir.ui.menu,name:stock.menu_report_stock_line_date
msgid "Last Product Inventories"
-msgstr ""
+msgstr "Zadnje inventure"
#. module: stock
#: view:stock.move:0
msgid "Today"
-msgstr ""
+msgstr "Danas"
#. module: stock
#: field:stock.production.lot.revision,indice:0
msgid "Revision Number"
-msgstr ""
+msgstr "Revision Number"
#. module: stock
#: view:stock.move.memory.in:0
#: view:stock.move.memory.out:0
msgid "Product Moves"
-msgstr ""
+msgstr "Product Moves"
#. module: stock
#: model:ir.actions.act_window,name:stock.action_stock_move_report
#: model:ir.ui.menu,name:stock.menu_action_stock_move_report
#: view:report.stock.move:0
msgid "Moves Analysis"
-msgstr ""
+msgstr "Analiza skl. prijenosa"
#. module: stock
#: help:stock.production.lot,ref:0
@@ -89,6 +89,7 @@ msgid ""
"Internal reference number in case it differs from the manufacturer's serial "
"number"
msgstr ""
+"Interni broj za slučajeve kada se razlikuje od proizvođačeva serijskog broja"
#. module: stock
#: model:ir.actions.act_window,help:stock.action_inventory_form
@@ -97,11 +98,14 @@ msgid ""
"per location. You can use it once a year when you do the general inventory "
"or whenever you need it, to correct the current stock level of a product."
msgstr ""
+"Povremene inventure se koriste za utvrđivanje stvarnih zaliha svih ili nekih "
+"proizvoda na nekoj lokaciji. Možete ih organizirati jednom godišnje ili po "
+"potrebi."
#. module: stock
#: view:stock.picking:0
msgid "Picking list"
-msgstr ""
+msgstr "Skladišnica"
#. module: stock
#: report:lot.stock.overview:0
@@ -133,12 +137,14 @@ msgid ""
"This is the list of all delivery orders that have to be prepared, according "
"to your different sales orders and your logistics rules."
msgstr ""
+"Ovo je popis svih otpremnica koje treba pripremiti. Nastale su iz prodajnih "
+"naloga i pravila logistike."
#. module: stock
#: view:report.stock.move:0
#: field:report.stock.move,day:0
msgid "Day"
-msgstr ""
+msgstr "Dan"
#. module: stock
#: view:stock.inventory:0
@@ -156,19 +162,19 @@ msgstr "JM"
#: model:ir.ui.menu,name:stock.menu_action_inventory_form
#, python-format
msgid "Physical Inventories"
-msgstr ""
+msgstr "Fizičke inventure"
#. module: stock
#: field:product.category,property_stock_journal:0
#: view:report.stock.move:0
#: field:stock.change.standard.price,stock_journal:0
msgid "Stock journal"
-msgstr "Dnevnik zalihe"
+msgstr "Stock journal"
#. module: stock
#: view:report.stock.move:0
msgid "Incoming"
-msgstr ""
+msgstr "Ulazna"
#. module: stock
#: help:product.category,property_stock_account_output_categ:0
@@ -189,7 +195,7 @@ msgstr ""
#. module: stock
#: model:ir.actions.act_window,name:stock.action_partial_move
msgid "Deliver/Receive Products"
-msgstr ""
+msgstr "Isporuči/zaprimi proizvode"
#. module: stock
#: code:addons/stock/report/report_stock.py:78
@@ -210,29 +216,29 @@ msgstr ""
#. module: stock
#: selection:stock.picking,invoice_state:0
msgid "Not Applicable"
-msgstr ""
+msgstr "Not Applicable"
#. module: stock
#: help:stock.tracking,serial:0
msgid "Other reference or serial number"
-msgstr ""
+msgstr "Druga oznaka ili serijski broj"
#. module: stock
#: field:stock.move,origin:0
#: view:stock.picking:0
#: field:stock.picking,origin:0
msgid "Origin"
-msgstr ""
+msgstr "Izvor"
#. module: stock
#: view:report.stock.lines.date:0
msgid "Non Inv"
-msgstr ""
+msgstr "Non Inv"
#. module: stock
#: view:stock.tracking:0
msgid "Pack Identification"
-msgstr ""
+msgstr "Identifikacija paketa"
#. module: stock
#: view:stock.move:0
@@ -240,7 +246,7 @@ msgstr ""
#: field:stock.picking,name:0
#: view:stock.production.lot:0
msgid "Reference"
-msgstr "Referenca"
+msgstr "Vezna oznaka"
#. module: stock
#: code:addons/stock/stock.py:661
@@ -259,6 +265,8 @@ msgid ""
"If checked, all product quantities will be set to zero to help ensure a real "
"physical inventory is done"
msgstr ""
+"If checked, all product quantities will be set to zero to help ensure a real "
+"physical inventory is done"
#. module: stock
#: model:ir.model,name:stock.model_stock_move_split_lines
@@ -282,7 +290,7 @@ msgstr ""
#. module: stock
#: field:stock.invoice.onshipping,group:0
msgid "Group by partner"
-msgstr "Grupiraj prema partneru"
+msgstr "Grupiraj po partneru"
#. module: stock
#: model:ir.model,name:stock.model_res_partner
@@ -301,13 +309,13 @@ msgstr "Partner"
#: help:stock.move.memory.in,currency:0
#: help:stock.move.memory.out,currency:0
msgid "Currency in which Unit cost is expressed"
-msgstr ""
+msgstr "Currency in which Unit cost is expressed"
#. module: stock
#: code:addons/stock/wizard/stock_return_picking.py:135
#, python-format
msgid "No invoicing"
-msgstr ""
+msgstr "No invoicing"
#. module: stock
#: model:ir.model,name:stock.model_stock_production_lot
@@ -319,23 +327,23 @@ msgstr "Proizvodni lot"
#. module: stock
#: model:ir.ui.menu,name:stock.menu_stock_uom_categ_form_action
msgid "Units of Measure Categories"
-msgstr ""
+msgstr "Kategorije jedinica mjere"
#. module: stock
#: help:stock.incoterms,code:0
msgid "Code for Incoterms"
-msgstr ""
+msgstr "Code for Incoterms"
#. module: stock
#: field:stock.tracking,move_ids:0
msgid "Moves for this pack"
-msgstr ""
+msgstr "Skl. prijenosi za ovaj paket"
#. module: stock
#: selection:report.stock.inventory,location_type:0
#: selection:stock.location,usage:0
msgid "Internal Location"
-msgstr "Unutarnja lokacija"
+msgstr "Interna lokacija"
#. module: stock
#: view:stock.inventory:0
@@ -366,12 +374,12 @@ msgstr "Prava vrijednost zalihe"
#. module: stock
#: field:report.stock.move,day_diff2:0
msgid "Lag (Days)"
-msgstr ""
+msgstr "Kašnjenje(dani)"
#. module: stock
#: model:ir.model,name:stock.model_action_traceability
msgid "Action traceability "
-msgstr ""
+msgstr "Action traceability "
#. module: stock
#: field:stock.location,posy:0
@@ -393,13 +401,13 @@ msgstr "JM"
#: view:stock.production.lot:0
#: field:stock.production.lot,stock_available:0
msgid "Available"
-msgstr "Raspoloživo"
+msgstr "Available"
#. module: stock
#: view:stock.picking:0
#: field:stock.picking,min_date:0
msgid "Expected Date"
-msgstr ""
+msgstr "Očekivani datum"
#. module: stock
#: view:board.board:0
@@ -411,12 +419,12 @@ msgstr ""
#: model:ir.actions.act_window,help:stock.action_warehouse_form
msgid ""
"Create and manage your warehouses and assign them a location from here"
-msgstr ""
+msgstr "Kreirajte i upravljajte skladištima i dodjelite im lokacije"
#. module: stock
#: field:report.stock.move,product_qty_in:0
msgid "In Qty"
-msgstr ""
+msgstr "Kol. ulaza"
#. module: stock
#: code:addons/stock/wizard/stock_fill_inventory.py:115
@@ -433,12 +441,12 @@ msgstr "Izlaz lokacije"
#: model:ir.actions.act_window,name:stock.split_into
#: model:ir.model,name:stock.model_stock_split_into
msgid "Split into"
-msgstr ""
+msgstr "Razdvoji u"
#. module: stock
#: field:stock.move,price_currency_id:0
msgid "Currency for average price"
-msgstr ""
+msgstr "Valuta prosječne cijene"
#. module: stock
#: help:product.template,property_stock_account_input:0
@@ -458,22 +466,22 @@ msgstr "Tip lokacije"
#: help:report.stock.move,type:0
#: help:stock.picking,type:0
msgid "Shipping type specify, goods coming in or going out."
-msgstr ""
+msgstr "Shipping type specify, goods coming in or going out."
#. module: stock
#: model:ir.actions.report.xml,name:stock.report_move_labels
msgid "Item Labels"
-msgstr ""
+msgstr "Labela"
#. module: stock
#: model:ir.model,name:stock.model_report_stock_move
msgid "Moves Statistics"
-msgstr ""
+msgstr "Moves Statistics"
#. module: stock
#: view:stock.production.lot:0
msgid "Product Lots Filter"
-msgstr ""
+msgstr "Product Lots Filter"
#. module: stock
#: report:lot.stock.overview:0
@@ -489,11 +497,13 @@ msgid ""
"Current quantity of products with this Production Lot Number available in "
"company warehouses"
msgstr ""
+"Trenutna količina proizvoda s ovim proizvodnim lot-om dostupna u skladištima "
+"organizacije"
#. module: stock
#: field:stock.move,move_history_ids:0
msgid "Move History (child moves)"
-msgstr ""
+msgstr "Povijest promjena (child moves)"
#. module: stock
#: code:addons/stock/stock.py:1984
@@ -513,7 +523,7 @@ msgstr "Interni prijenosi"
#. module: stock
#: field:stock.move,location_dest_id:0
msgid "Destination Location"
-msgstr ""
+msgstr "Odredišna lokacija"
#. module: stock
#: code:addons/stock/stock.py:751
@@ -530,7 +540,7 @@ msgstr "Pakiranje"
#. module: stock
#: report:stock.picking.list:0
msgid "Order(Origin)"
-msgstr "Narudžba(ishodište)"
+msgstr "Nalog(Izvor)"
#. module: stock
#: report:lot.stock.overview:0
@@ -546,11 +556,15 @@ msgid ""
"buttons on the right of each line. You can filter the products to deliver by "
"customer, products or sale order (using the Origin field)."
msgstr ""
+"You will find in this list all products you have to deliver to your "
+"customers. You can process the deliveries directly from this list using the "
+"buttons on the right of each line. You can filter the products to deliver by "
+"customer, products or sale order (using the Origin field)."
#. module: stock
#: model:ir.ui.menu,name:stock.menu_stock_inventory_control
msgid "Inventory Control"
-msgstr ""
+msgstr "Kontrola inventure"
#. module: stock
#: view:stock.location:0
@@ -562,7 +576,7 @@ msgstr "Dodatne informacije"
#: report:lot.stock.overview:0
#: report:lot.stock.overview_all:0
msgid "Location / Product"
-msgstr ""
+msgstr "Lokacija / Proizvod"
#. module: stock
#: code:addons/stock/stock.py:1306
@@ -573,7 +587,7 @@ msgstr ""
#. module: stock
#: field:stock.tracking,serial:0
msgid "Additional Reference"
-msgstr ""
+msgstr "Additional Reference"
#. module: stock
#: view:stock.production.lot.revision:0
@@ -586,6 +600,8 @@ msgid ""
"Forces to specify a Production Lot for all moves containing this product and "
"going to a Customer Location"
msgstr ""
+"Forces to specify a Production Lot for all moves containing this product and "
+"going to a Customer Location"
#. module: stock
#: model:ir.actions.act_window,help:stock.action_stock_journal_form
@@ -595,6 +611,10 @@ msgid ""
"worker/team that should perform the operation. Examples of stock journals "
"may be: quality control, pick lists, packing, etc."
msgstr ""
+"The stock journal system allows you to assign each stock operation to a "
+"specific journal according to the type of operation to perform or the "
+"worker/team that should perform the operation. Examples of stock journals "
+"may be: quality control, pick lists, packing, etc."
#. module: stock
#: field:stock.location,complete_name:0
@@ -605,7 +625,7 @@ msgstr "Naziv lokacije"
#. module: stock
#: view:stock.inventory:0
msgid "Posted Inventory"
-msgstr ""
+msgstr "Posted Inventory"
#. module: stock
#: view:stock.move:0
@@ -616,12 +636,12 @@ msgstr "Detalji prijenosa"
#. module: stock
#: view:report.stock.move:0
msgid "Outgoing"
-msgstr ""
+msgstr "Outgoing"
#. module: stock
#: selection:report.stock.move,month:0
msgid "August"
-msgstr ""
+msgstr "Kolovoz"
#. module: stock
#: model:ir.actions.act_window,name:stock.action_tracking_form
@@ -629,22 +649,22 @@ msgstr ""
#: model:ir.ui.menu,name:stock.menu_action_tracking_form
#: view:stock.tracking:0
msgid "Packs"
-msgstr ""
+msgstr "Paketi"
#. module: stock
#: constraint:stock.move:0
msgid "You try to assign a lot which is not from the same product"
-msgstr ""
+msgstr "Pokušavate pridružiti lot koji nije iz istog proizvoda"
#. module: stock
#: view:res.partner:0
msgid "Sales & Purchases"
-msgstr "Prodaje i kupovine"
+msgstr "Prodaja i nabava"
#. module: stock
#: selection:report.stock.move,month:0
msgid "June"
-msgstr ""
+msgstr "Lipanj"
#. module: stock
#: field:product.template,property_stock_procurement:0
@@ -670,17 +690,17 @@ msgstr "Primatelj"
#: model:ir.actions.act_window,name:stock.action_location_tree
#: model:ir.ui.menu,name:stock.menu_action_location_tree
msgid "Location Structure"
-msgstr ""
+msgstr "Stuktura lokacija"
#. module: stock
#: selection:report.stock.move,month:0
msgid "October"
-msgstr ""
+msgstr "Listopad"
#. module: stock
#: model:ir.model,name:stock.model_stock_inventory_line
msgid "Inventory Line"
-msgstr ""
+msgstr "Stavka inventure"
#. module: stock
#: help:product.category,property_stock_journal:0
@@ -688,11 +708,13 @@ msgid ""
"When doing real-time inventory valuation, this is the Accounting Journal in "
"which entries will be automatically posted when stock moves are processed."
msgstr ""
+"When doing real-time inventory valuation, this is the Accounting Journal in "
+"which entries will be automatically posted when stock moves are processed."
#. module: stock
#: model:ir.actions.act_window,name:stock.action_partial_picking
msgid "Process Picking"
-msgstr ""
+msgstr "Izvrši prijem/otpremu"
#. module: stock
#: code:addons/stock/product.py:355
@@ -707,11 +729,13 @@ msgid ""
"Check this option to select existing lots in the list below, otherwise you "
"should enter new ones line by line."
msgstr ""
+"Provjerite opciju za odabir postojećeg lota sa popisa ispod, u suprotnom "
+"potrebno je unijeti nove retke."
#. module: stock
#: field:stock.move,move_dest_id:0
msgid "Destination Move"
-msgstr ""
+msgstr "Prijenos odredišta"
#. module: stock
#: view:stock.move:0
@@ -738,17 +762,17 @@ msgstr "Ulaz lokacije"
#. module: stock
#: help:stock.picking,date:0
msgid "Date of Order"
-msgstr ""
+msgstr "Datum naloga"
#. module: stock
#: selection:product.product,valuation:0
msgid "Periodical (manual)"
-msgstr ""
+msgstr "Ručno (po potrebi)"
#. module: stock
#: model:stock.location,name:stock.location_procurement
msgid "Procurements"
-msgstr "Nabave"
+msgstr "Nabava"
#. module: stock
#: model:stock.location,name:stock.stock_location_3
@@ -758,25 +782,25 @@ msgstr "IT dobavljači"
#. module: stock
#: model:ir.actions.act_window,name:stock.action_inventory_form_draft
msgid "Draft Physical Inventories"
-msgstr ""
+msgstr "Nacrti fizičkih inventura"
#. module: stock
#: selection:report.stock.inventory,location_type:0
#: selection:stock.location,usage:0
msgid "Transit Location for Inter-Companies Transfers"
-msgstr ""
+msgstr "Tranzitna lokacija za transfere između organizacija"
#. module: stock
#: model:ir.actions.act_window,name:stock.action_view_change_product_quantity
#: model:ir.model,name:stock.model_stock_change_product_qty
#: view:stock.change.product.qty:0
msgid "Change Product Quantity"
-msgstr ""
+msgstr "Promjeni količinu proizvoda"
#. module: stock
#: model:ir.model,name:stock.model_stock_inventory_merge
msgid "Merge Inventory"
-msgstr ""
+msgstr "Spoji zalihu"
#. module: stock
#: code:addons/stock/product.py:371
@@ -789,14 +813,14 @@ msgstr ""
#: model:ir.ui.menu,name:stock.menu_action_picking_tree4
#: view:stock.picking:0
msgid "Incoming Shipments"
-msgstr ""
+msgstr "Primke"
#. module: stock
#: view:report.stock.inventory:0
#: view:stock.move:0
#: view:stock.picking:0
msgid "Scrap"
-msgstr ""
+msgstr "Scrap"
#. module: stock
#: field:stock.location,child_ids:0
@@ -806,12 +830,12 @@ msgstr "Sadrži"
#. module: stock
#: view:board.board:0
msgid "Incoming Products Delay"
-msgstr ""
+msgstr "Kašnjenje ulaza"
#. module: stock
#: view:stock.location:0
msgid "Stock Locations"
-msgstr ""
+msgstr "Skladišne lokacije"
#. module: stock
#: report:lot.stock.overview:0
@@ -828,12 +852,12 @@ msgstr ""
#. module: stock
#: field:stock.move,date_expected:0
msgid "Scheduled Date"
-msgstr ""
+msgstr "Planirani datum"
#. module: stock
#: view:stock.tracking:0
msgid "Pack Search"
-msgstr ""
+msgstr "Traži pakete"
#. module: stock
#: selection:stock.move,priority:0
@@ -844,7 +868,7 @@ msgstr "Hitno"
#: view:stock.picking:0
#: report:stock.picking.list:0
msgid "Journal"
-msgstr ""
+msgstr "Dnevnik"
#. module: stock
#: code:addons/stock/stock.py:1315
@@ -859,16 +883,19 @@ msgid ""
"needed.Set a location if you produce at a fixed location. This can be a "
"partner location if you subcontract the manufacturing operations."
msgstr ""
+"Keep empty if you produce at the location where the finished products are "
+"needed.Set a location if you produce at a fixed location. This can be a "
+"partner location if you subcontract the manufacturing operations."
#. module: stock
#: view:res.partner:0
msgid "Inventory Properties"
-msgstr ""
+msgstr "Inventura"
#. module: stock
#: field:report.stock.move,day_diff:0
msgid "Execution Lead Time (Days)"
-msgstr ""
+msgstr "Vodeće vrijeme izvršenja (dana)"
#. module: stock
#: model:ir.actions.act_window,name:stock.act_stock_product_location_open
@@ -881,17 +908,21 @@ msgid ""
"Optional address where goods are to be delivered, specifically used for "
"allotment"
msgstr ""
+"Optional address where goods are to be delivered, specifically used for "
+"allotment"
#. module: stock
#: view:report.stock.move:0
msgid "Month-1"
-msgstr ""
+msgstr "Month-1"
#. module: stock
#: help:stock.location,active:0
msgid ""
"By unchecking the active field, you may hide a location without deleting it."
msgstr ""
+"Neaktivne lokacije se ne pojavljuju u listama odabira. Lokacije koje se više "
+"ne koriste označite kao neaktivne."
#. module: stock
#: model:ir.actions.report.xml,name:stock.report_picking_list
@@ -901,7 +932,7 @@ msgstr "Lista pakiranja"
#. module: stock
#: field:stock.location,stock_virtual:0
msgid "Virtual Stock"
-msgstr "Virtualna zaliha"
+msgstr "Efektivna zaliha"
#. module: stock
#: selection:report.stock.inventory,location_type:0
@@ -912,7 +943,7 @@ msgstr "Pogled"
#. module: stock
#: field:stock.location,parent_left:0
msgid "Left Parent"
-msgstr ""
+msgstr "Left Parent"
#. module: stock
#: code:addons/stock/wizard/stock_partial_move.py:132
@@ -929,7 +960,7 @@ msgstr ""
#. module: stock
#: constraint:product.product:0
msgid "Error: Invalid ean code"
-msgstr ""
+msgstr "Greška: Neispravan barkod!"
#. module: stock
#: code:addons/stock/product.py:148
@@ -941,12 +972,12 @@ msgstr ""
#. module: stock
#: field:product.template,property_stock_production:0
msgid "Production Location"
-msgstr "Lokacije proizvodnje"
+msgstr "Lokacija proizvodnje"
#. module: stock
#: help:stock.picking,address_id:0
msgid "Address of partner"
-msgstr ""
+msgstr "Adresa partnera"
#. module: stock
#: model:res.company,overdue_msg:stock.res_company_shop0
@@ -996,6 +1027,28 @@ msgid ""
"location consumes the raw material and produces finished products\n"
" "
msgstr ""
+"* Lokacija dobavljača: Virtualna lokacija koja predstavlja izvorišnu "
+"lokaciju za proizvode koje nabavljate od dobavljača\n"
+" \n"
+"* Pogled: Virtualna lokacija koju koristite za kreiranje hijerarhije "
+"lokacija. Lokacije vrste Pogled će zbrajati podređene lokacije, a same ne "
+"sadrže proizvode\n"
+" \n"
+"* Interna lokacija: Fizička lokacija u vašem skladištu,\n"
+" \n"
+"* Lokacija kupca: Virtualna lokacija koja predstavlja odredišnu lokaciju "
+"isporuka kupcima\n"
+" \n"
+"* Inventura: Virtualna lokacija koja služi kao protuteža "
+"viškovima/manjkovima inventure (fizičke inventure)\n"
+" \n"
+"* Nabava: Virtualna lokacija koja služi kao privremena protuteža kada još "
+"nije poznat izvor (proizvodnja ili dobavljač). ova lokacija bi trebala biti "
+"prazna nakon pokretanja automatske nabave.\n"
+" \n"
+"* Proizvodnja: Virtualna protuteža za prijenose proizvodnje. Ovdje "
+"\"nestaju\" sirovine i nastaju gotovi (polu)proizvodi\n"
+" "
#. module: stock
#: field:stock.production.lot.revision,author_id:0
@@ -1022,12 +1075,12 @@ msgstr "Ručna operacija"
#: view:stock.location:0
#: view:stock.move:0
msgid "Supplier"
-msgstr ""
+msgstr "Dobavljač"
#. module: stock
#: field:stock.picking,date_done:0
msgid "Date Done"
-msgstr "Datum završen"
+msgstr "Datum izvršenja"
#. module: stock
#: report:stock.picking.list:0
@@ -1042,7 +1095,7 @@ msgstr ""
#. module: stock
#: selection:report.stock.move,month:0
msgid "March"
-msgstr ""
+msgstr "Ožujak"
#. module: stock
#: model:ir.actions.act_window,name:stock.action_view_stock_inventory_line_split
@@ -1050,12 +1103,12 @@ msgstr ""
#: view:stock.inventory:0
#: view:stock.inventory.line:0
msgid "Split inventory lines"
-msgstr ""
+msgstr "Podijeli retke inventara"
#. module: stock
#: view:stock.inventory:0
msgid "Physical Inventory"
-msgstr ""
+msgstr "Fizička zaliha"
#. module: stock
#: help:stock.location,chained_company_id:0
@@ -1063,6 +1116,8 @@ msgid ""
"The company the Picking List containing the chained move will belong to "
"(leave empty to use the default company determination rules"
msgstr ""
+"The company the Picking List containing the chained move will belong to "
+"(leave empty to use the default company determination rules"
#. module: stock
#: help:stock.location,chained_picking_type:0
@@ -1071,11 +1126,14 @@ msgid ""
"empty to automatically detect the type based on the source and destination "
"locations)."
msgstr ""
+"Shipping Type of the Picking List that will contain the chained move (leave "
+"empty to automatically detect the type based on the source and destination "
+"locations)."
#. module: stock
#: view:stock.move.split:0
msgid "Lot number"
-msgstr ""
+msgstr "Lot number"
#. module: stock
#: field:stock.inventory.line,product_uom:0
@@ -1093,13 +1151,13 @@ msgstr "Lokacije partnera"
#: view:report.stock.inventory:0
#: view:report.stock.move:0
msgid "Total quantity"
-msgstr ""
+msgstr "Ukupna količina"
#. module: stock
#: model:ir.actions.act_window,name:stock.move_consume
#: view:stock.move.consume:0
msgid "Consume Move"
-msgstr ""
+msgstr "Skl. prijenos utroška"
#. module: stock
#: model:stock.location,name:stock.stock_location_7
@@ -1109,12 +1167,12 @@ msgstr "Europski kupci"
#. module: stock
#: help:stock.location,chained_delay:0
msgid "Delay between original move and chained move in days"
-msgstr ""
+msgstr "Delay between original move and chained move in days"
#. module: stock
#: view:stock.fill.inventory:0
msgid "Import current product inventory from the following location"
-msgstr ""
+msgstr "Import current product inventory from the following location"
#. module: stock
#: help:stock.location,chained_auto_packing:0
@@ -1125,11 +1183,16 @@ msgid ""
"move has to be validated by a worker. With 'Automatic No Step Added', the "
"location is replaced in the original move."
msgstr ""
+"This is used only if you select a chained location type.\n"
+"The 'Automatic Move' value will create a stock move after the current one "
+"that will be validated automatically. With 'Manual Operation', the stock "
+"move has to be validated by a worker. With 'Automatic No Step Added', the "
+"location is replaced in the original move."
#. module: stock
#: view:stock.production.lot:0
msgid "Downstream Traceability"
-msgstr ""
+msgstr "Downstream Traceability"
#. module: stock
#: help:product.template,property_stock_production:0
@@ -1138,6 +1201,8 @@ msgid ""
"default one, as the source location for stock moves generated by production "
"orders"
msgstr ""
+"Za ovaj proizvod će se koristiti ova skladišna lokacija, umjesto uobičajene, "
+"kao izvorišna lokacija za prijenose generirane proizvodnjom"
#. module: stock
#: code:addons/stock/stock.py:1975
@@ -1159,6 +1224,8 @@ msgid ""
"This is the list of all your packs. When you select a Pack, you can get the "
"upstream or downstream traceability of the products contained in the pack."
msgstr ""
+"This is the list of all your packs. When you select a Pack, you can get the "
+"upstream or downstream traceability of the products contained in the pack."
#. module: stock
#: model:ir.model,name:stock.model_stock_ups_final
@@ -1168,18 +1235,18 @@ msgstr ""
#. module: stock
#: field:stock.location,chained_auto_packing:0
msgid "Chaining Type"
-msgstr ""
+msgstr "Tip lanca"
#. module: stock
#: code:addons/stock/wizard/stock_return_picking.py:135
#, python-format
msgid "To be refunded/invoiced"
-msgstr ""
+msgstr "To be refunded/invoiced"
#. module: stock
#: model:stock.location,name:stock.stock_location_shop0
msgid "Shop 1"
-msgstr ""
+msgstr "Shop 1"
#. module: stock
#: view:stock.change.product.qty:0
@@ -1193,22 +1260,22 @@ msgstr ""
#: view:stock.picking:0
#: view:stock.split.into:0
msgid "_Cancel"
-msgstr ""
+msgstr "_Cancel"
#. module: stock
#: view:stock.move:0
msgid "Ready"
-msgstr ""
+msgstr "Spremno"
#. module: stock
#: view:stock.picking:0
msgid "Calendar View"
-msgstr "Kalendarski pogled"
+msgstr "Calendar View"
#. module: stock
#: view:stock.picking:0
msgid "Additional Info"
-msgstr ""
+msgstr "Dodatni podaci"
#. module: stock
#: code:addons/stock/stock.py:1602
@@ -1231,7 +1298,7 @@ msgstr ""
#: view:stock.picking:0
#: field:stock.picking,invoice_state:0
msgid "Invoice Control"
-msgstr "Kontrola faktura"
+msgstr "Kontrola računa"
#. module: stock
#: model:ir.model,name:stock.model_stock_production_lot_revision
@@ -1241,7 +1308,7 @@ msgstr "Revizije lota proizvodnje"
#. module: stock
#: view:stock.picking:0
msgid "Internal Picking List"
-msgstr ""
+msgstr "Međuskladišnica (interni prijenos)"
#. module: stock
#: selection:report.stock.inventory,state:0
@@ -1249,7 +1316,7 @@ msgstr ""
#: selection:stock.move,state:0
#: selection:stock.picking,state:0
msgid "Waiting"
-msgstr "Čekanje"
+msgstr "Waiting"
#. module: stock
#: view:stock.move:0
@@ -1261,7 +1328,7 @@ msgstr "Razdijeli"
#. module: stock
#: view:stock.picking:0
msgid "Search Stock Picking"
-msgstr ""
+msgstr "Traži skladišnice"
#. module: stock
#: code:addons/stock/product.py:93
@@ -1273,7 +1340,7 @@ msgstr ""
#: view:report.stock.move:0
#: field:stock.partial.move,type:0
msgid "Type"
-msgstr "Tip"
+msgstr "Vrsta"
#. module: stock
#: model:stock.location,name:stock.stock_location_5
@@ -1283,7 +1350,7 @@ msgstr "Generički IT dobavljači"
#. module: stock
#: report:stock.picking.list:0
msgid "Picking List:"
-msgstr ""
+msgstr "Skladišnica:"
#. module: stock
#: field:stock.inventory,date:0
@@ -1291,7 +1358,7 @@ msgstr ""
#: field:stock.production.lot,date:0
#: field:stock.tracking,date:0
msgid "Creation Date"
-msgstr ""
+msgstr "Datum kreiranja"
#. module: stock
#: field:report.stock.lines.date,id:0
@@ -1301,7 +1368,7 @@ msgstr "ID stavke inventara"
#. module: stock
#: help:stock.location,address_id:0
msgid "Address of customer or supplier."
-msgstr ""
+msgstr "Address of customer or supplier."
#. module: stock
#: view:report.stock.move:0
@@ -1332,7 +1399,7 @@ msgstr ""
#: model:ir.actions.report.xml,name:stock.report_location_overview
#: report:lot.stock.overview:0
msgid "Location Inventory Overview"
-msgstr ""
+msgstr "Location Inventory Overview"
#. module: stock
#: model:ir.model,name:stock.model_stock_replacement
@@ -1342,17 +1409,17 @@ msgstr ""
#. module: stock
#: view:stock.inventory:0
msgid "General Informations"
-msgstr "Opće informacije"
+msgstr "Općenite informacije"
#. module: stock
#: selection:stock.location,chained_location_type:0
msgid "None"
-msgstr "Nijedan"
+msgstr "Ništa"
#. module: stock
#: view:stock.tracking:0
msgid "Downstream traceability"
-msgstr ""
+msgstr "Downstream traceability"
#. module: stock
#: code:addons/stock/wizard/stock_invoice_onshipping.py:113
@@ -1376,18 +1443,19 @@ msgstr ""
msgid ""
"By unchecking the active field, you may hide an INCOTERM without deleting it."
msgstr ""
+"By unchecking the active field, you may hide an INCOTERM without deleting it."
#. module: stock
#: view:stock.move:0
#: view:stock.picking:0
#: field:stock.picking,date:0
msgid "Order Date"
-msgstr ""
+msgstr "Datum naloga"
#. module: stock
#: field:stock.location,location_id:0
msgid "Parent Location"
-msgstr "Nadređena lokacija"
+msgstr "Parent Location"
#. module: stock
#: help:stock.picking,state:0
@@ -1400,11 +1468,18 @@ msgid ""
"* Done: has been processed, can't be modified or cancelled anymore\n"
"* Cancelled: has been cancelled, can't be confirmed anymore"
msgstr ""
+"* Draft: not confirmed yet and will not be scheduled until confirmed\n"
+"* Confirmed: still waiting for the availability of products\n"
+"* Available: products reserved, simply waiting for confirmation.\n"
+"* Waiting: waiting for another move to proceed before it becomes "
+"automatically available (e.g. in Make-To-Order flows)\n"
+"* Done: has been processed, can't be modified or cancelled anymore\n"
+"* Cancelled: has been cancelled, can't be confirmed anymore"
#. module: stock
#: help:stock.location,company_id:0
msgid "Let this field empty if this location is shared between all companies"
-msgstr ""
+msgstr "Ostavite polje prazno ako se lokacija koristi između svih kopanija"
#. module: stock
#: code:addons/stock/stock.py:2198
@@ -1415,7 +1490,7 @@ msgstr ""
#. module: stock
#: field:stock.location,chained_delay:0
msgid "Chaining Lead Time"
-msgstr ""
+msgstr "Vrijeme ulančavanja"
#. module: stock
#: code:addons/stock/wizard/stock_partial_move.py:85
@@ -1426,7 +1501,7 @@ msgstr ""
#. module: stock
#: model:ir.model,name:stock.model_stock_invoice_onshipping
msgid "Stock Invoice Onshipping"
-msgstr ""
+msgstr "Račun nakon isporuke"
#. module: stock
#: help:stock.move,state:0
@@ -1438,6 +1513,12 @@ msgid ""
" When the picking is done the state is 'Done'. \n"
"The state is 'Waiting' if the move is waiting for another one."
msgstr ""
+"When the stock move is created it is in the 'Draft' state.\n"
+" After that, it is set to 'Not Available' state if the scheduler did not "
+"find the products.\n"
+" When products are reserved it is set to 'Available'.\n"
+" When the picking is done the state is 'Done'. \n"
+"The state is 'Waiting' if the move is waiting for another one."
#. module: stock
#: selection:report.stock.inventory,location_type:0
@@ -1461,7 +1542,7 @@ msgstr ""
#. module: stock
#: selection:report.stock.move,month:0
msgid "September"
-msgstr ""
+msgstr "Rujan"
#. module: stock
#: help:stock.picking,backorder_id:0
@@ -1469,22 +1550,24 @@ msgid ""
"If this picking was split this field links to the picking that contains the "
"other part that has been processed already."
msgstr ""
+"Nakon djelomične isporuke/primke ovo polje vodi do prethodnih povezanih "
+"isporuka."
#. module: stock
#: model:ir.model,name:stock.model_report_stock_inventory
msgid "Stock Statistics"
-msgstr ""
+msgstr "Stock Statistics"
#. module: stock
#: field:stock.move.memory.in,currency:0
#: field:stock.move.memory.out,currency:0
msgid "Currency"
-msgstr ""
+msgstr "Valuta"
#. module: stock
#: field:product.product,track_production:0
msgid "Track Manufacturing Lots"
-msgstr ""
+msgstr "Prati lot-ove proizvodnje"
#. module: stock
#: code:addons/stock/wizard/stock_inventory_merge.py:44
@@ -1503,7 +1586,7 @@ msgstr ""
#: view:stock.production.lot:0
#: view:stock.tracking:0
msgid "Stock Moves"
-msgstr "Prijenosi zalihe"
+msgstr "Skladišni prijenosi"
#. module: stock
#: selection:report.stock.move,type:0
@@ -1520,7 +1603,7 @@ msgstr "Otkaži dostupnost"
#. module: stock
#: help:stock.move,date_expected:0
msgid "Scheduled date for the processing of this move"
-msgstr ""
+msgstr "Odabrani datum za obradu ovog događaja"
#. module: stock
#: field:stock.inventory,move_ids:0
@@ -1530,33 +1613,33 @@ msgstr "Kreirani prijenosi"
#. module: stock
#: model:stock.location,name:stock.stock_location_14
msgid "Shelf 2"
-msgstr ""
+msgstr "Shelf 2"
#. module: stock
#: field:stock.report.tracklots,tracking_id:0
msgid "Tracking lot"
-msgstr ""
+msgstr "Tracking lot"
#. module: stock
#: view:stock.picking:0
msgid "Back Orders"
-msgstr ""
+msgstr "Zaostali nalozi"
#. module: stock
#: view:product.product:0
#: view:product.template:0
msgid "Counter-Part Locations Properties"
-msgstr ""
+msgstr "Counter-Part Locations Properties"
#. module: stock
#: view:stock.location:0
msgid "Localization"
-msgstr ""
+msgstr "Lokacija"
#. module: stock
#: model:ir.model,name:stock.model_stock_report_tracklots
msgid "Stock report by tracking lots"
-msgstr ""
+msgstr "Stock report by tracking lots"
#. module: stock
#: code:addons/stock/product.py:367
@@ -1569,12 +1652,12 @@ msgstr ""
#: view:stock.inventory.line.split:0
#: view:stock.move.split:0
msgid "Split in lots"
-msgstr ""
+msgstr "Split in lots"
#. module: stock
#: view:stock.move.split:0
msgid "Production Lot Numbers"
-msgstr ""
+msgstr "Production Lot Numbers"
#. module: stock
#: view:report.stock.inventory:0
@@ -1596,7 +1679,7 @@ msgstr "Datum"
#: view:stock.move:0
#: view:stock.picking:0
msgid "Extended Filters..."
-msgstr ""
+msgstr "Prošireni filtri..."
#. module: stock
#: field:stock.warehouse,lot_stock_id:0
@@ -1612,7 +1695,7 @@ msgstr ""
#. module: stock
#: model:ir.ui.menu,name:stock.menu_dashboard_stock
msgid "Dashboard"
-msgstr ""
+msgstr "Kokpit"
#. module: stock
#: model:ir.model,name:stock.model_stock_move_track
@@ -1627,13 +1710,13 @@ msgstr "Šifra"
#. module: stock
#: view:stock.inventory.line.split:0
msgid "Lots Number"
-msgstr ""
+msgstr "Lots Number"
#. module: stock
#: model:ir.actions.act_window,name:stock.open_board_warehouse
#: model:ir.ui.menu,name:stock.menu_board_warehouse
msgid "Warehouse Dashboard"
-msgstr ""
+msgstr "Kokpit skladišta"
#. module: stock
#: code:addons/stock/stock.py:510
@@ -1647,7 +1730,7 @@ msgstr ""
#: view:stock.move.scrap:0
#: view:stock.picking:0
msgid "Scrap Products"
-msgstr ""
+msgstr "Otpis proizvoda"
#. module: stock
#: code:addons/stock/stock.py:1135
@@ -1662,13 +1745,13 @@ msgstr ""
#: view:stock.move.split:0
#: view:stock.picking:0
msgid "Cancel"
-msgstr "odustani"
+msgstr "Odustani"
#. module: stock
#: model:ir.actions.act_window,name:stock.act_stock_return_picking
#: model:ir.model,name:stock.model_stock_return_picking
msgid "Return Picking"
-msgstr ""
+msgstr "Povrat robe"
#. module: stock
#: view:stock.inventory:0
@@ -1710,7 +1793,7 @@ msgstr "Adresa otpreme :"
#: code:addons/stock/wizard/stock_return_picking.py:120
#, python-format
msgid "Provide the quantities of the returned products."
-msgstr ""
+msgstr "Upis količina povrata proizvoda."
#. module: stock
#: code:addons/stock/stock.py:1978
@@ -1723,18 +1806,18 @@ msgstr ""
#. module: stock
#: view:stock.change.standard.price:0
msgid "Cost Price"
-msgstr ""
+msgstr "Cijena Koštanja"
#. module: stock
#: view:product.product:0
#: field:product.product,valuation:0
msgid "Inventory Valuation"
-msgstr ""
+msgstr "Popis Vrednovanja"
#. module: stock
#: view:stock.picking:0
msgid "Create Invoice"
-msgstr ""
+msgstr "Kreiraj račun"
#. module: stock
#: view:stock.move:0
@@ -1748,8 +1831,8 @@ msgid ""
"This stock location will be used, instead of the default one, as the source "
"location for goods you receive from the current partner"
msgstr ""
-"Ova lokacija zalihe se koristi umjesto predefinirane kao početna lokacija za "
-"robu koju zaprimate od partnera"
+"Ova lokacija zalihe se koristi umjesto uobičajene kao ulazna lokacija za "
+"robu koju nabavljate od ovog partnera"
#. module: stock
#: field:stock.warehouse,partner_address_id:0
@@ -1762,6 +1845,9 @@ msgid ""
"Technical field used to record the product cost set by the user during a "
"picking confirmation (when average price costing method is used)"
msgstr ""
+"Nabavna cijena za proizvode koji se vode metodom prosječnih cijena. Prilikom "
+"zaprimanja robe od dobavljača ovdje se upisuje nabavna cijena s dobavljačeve "
+"otpremnice koja utječe na prosječnu cijenu proizvoda."
#. module: stock
#: model:ir.actions.act_window,help:stock.action_stock_move_report
@@ -1770,21 +1856,24 @@ msgid ""
"moves. Use this report when you want to analyse the different routes taken "
"by your products and inventory management performance."
msgstr ""
+"Moves Analysis allows you to easily check and analyse your company stock "
+"moves. Use this report when you want to analyse the different routes taken "
+"by your products and inventory management performance."
#. module: stock
#: field:report.stock.move,day_diff1:0
msgid "Planned Lead Time (Days)"
-msgstr ""
+msgstr "Planirano vodeće vrijeme (dani)"
#. module: stock
#: field:stock.change.standard.price,new_price:0
msgid "Price"
-msgstr ""
+msgstr "Cijena"
#. module: stock
#: view:stock.inventory:0
msgid "Search Inventory"
-msgstr ""
+msgstr "Search Inventory"
#. module: stock
#: field:stock.move.track,quantity:0
@@ -1808,7 +1897,7 @@ msgstr ""
#. module: stock
#: field:stock.production.lot,ref:0
msgid "Internal Reference"
-msgstr ""
+msgstr "Interna oznaka"
#. module: stock
#: help:stock.production.lot,prefix:0
@@ -1816,13 +1905,15 @@ msgid ""
"Optional prefix to prepend when displaying this serial number: PREFIX/SERIAL "
"[INT_REF]"
msgstr ""
+"Optional prefix to prepend when displaying this serial number: PREFIX/SERIAL "
+"[INT_REF]"
#. module: stock
#: model:ir.actions.act_window,name:stock.action_view_stock_fill_inventory
#: model:ir.model,name:stock.model_stock_fill_inventory
#: view:stock.fill.inventory:0
msgid "Import Inventory"
-msgstr ""
+msgstr "Uvezi inventuru"
#. module: stock
#: field:stock.incoterms,name:0
@@ -1868,27 +1959,29 @@ msgid ""
"default one, as the source location for stock moves generated when you do an "
"inventory"
msgstr ""
+"Koristi ovu skladišnu lokaciju, umjesto uobičajene, kao izvorišnu lokaciju "
+"za prijenose inventure"
#. module: stock
#: view:report.stock.lines.date:0
msgid "Stockable"
-msgstr ""
+msgstr "Uskladištiv"
#. module: stock
#: selection:product.product,valuation:0
msgid "Real Time (automated)"
-msgstr ""
+msgstr "Automatsko"
#. module: stock
#: help:stock.move,tracking_id:0
msgid "Logistical shipping unit: pallet, box, pack ..."
-msgstr ""
+msgstr "Logistical shipping unit: pallet, box, pack ..."
#. module: stock
#: view:stock.change.product.qty:0
#: view:stock.change.standard.price:0
msgid "_Apply"
-msgstr ""
+msgstr "_Primjeni"
#. module: stock
#: report:lot.stock.overview:0
@@ -1907,7 +2000,7 @@ msgstr "Lokacija inventara"
#: view:report.stock.inventory:0
#: view:report.stock.move:0
msgid "Total value"
-msgstr ""
+msgstr "Ukupna vrijednost"
#. module: stock
#: help:stock.location,chained_journal_id:0
@@ -1915,6 +2008,8 @@ msgid ""
"Inventory Journal in which the chained move will be written, if the Chaining "
"Type is not Transparent (no journal is used if left empty)"
msgstr ""
+"Inventory Journal in which the chained move will be written, if the Chaining "
+"Type is not Transparent (no journal is used if left empty)"
#. module: stock
#: view:board.board:0
@@ -1925,31 +2020,31 @@ msgstr ""
#. module: stock
#: view:stock.move:0
msgid "Creation"
-msgstr ""
+msgstr "Kreiranje"
#. module: stock
#: field:stock.move.memory.in,cost:0
#: field:stock.move.memory.out,cost:0
msgid "Cost"
-msgstr ""
+msgstr "Trošak"
#. module: stock
#: field:product.category,property_stock_account_input_categ:0
#: field:product.template,property_stock_account_input:0
#: field:stock.change.standard.price,stock_account_input:0
msgid "Stock Input Account"
-msgstr "Konto zalihe ulaza"
+msgstr "Stock Input Account"
#. module: stock
#: model:ir.ui.menu,name:stock.menu_stock_warehouse_mgmt
#: model:ir.ui.menu,name:stock.menu_warehouse_config
msgid "Warehouse Management"
-msgstr ""
+msgstr "Upravljanje skladištem"
#. module: stock
#: selection:stock.picking,move_type:0
msgid "Partial Delivery"
-msgstr ""
+msgstr "Djelomična isporuka"
#. module: stock
#: selection:stock.location,chained_auto_packing:0
@@ -1967,11 +2062,13 @@ msgid ""
"Move date: scheduled date until move is done, then date of actual move "
"processing"
msgstr ""
+"Move date: scheduled date until move is done, then date of actual move "
+"processing"
#. module: stock
#: field:report.stock.lines.date,date:0
msgid "Latest Inventory Date"
-msgstr ""
+msgstr "Datum zadnje inventure"
#. module: stock
#: view:report.stock.inventory:0
@@ -1981,7 +2078,7 @@ msgstr ""
#: view:stock.picking:0
#: view:stock.production.lot:0
msgid "Group By..."
-msgstr ""
+msgstr "Grupiraj po..."
#. module: stock
#: view:stock.location:0
@@ -2002,14 +2099,14 @@ msgstr ""
#. module: stock
#: view:stock.picking:0
msgid "Input Picking List"
-msgstr ""
+msgstr "Primka"
#. module: stock
#: field:stock.move,product_uom:0
#: field:stock.move.memory.in,product_uom:0
#: field:stock.move.memory.out,product_uom:0
msgid "Unit of Measure"
-msgstr ""
+msgstr "Jedinica mjere"
#. module: stock
#: code:addons/stock/product.py:176
@@ -2023,6 +2120,8 @@ msgid ""
"Forces to specify a Production Lot for all moves containing this product and "
"generated by a Manufacturing Order"
msgstr ""
+"Forces to specify a Production Lot for all moves containing this product and "
+"generated by a Manufacturing Order"
#. module: stock
#: model:ir.actions.act_window,name:stock.track_line_old
@@ -2033,23 +2132,23 @@ msgstr "Praćenje prijenosa"
#. module: stock
#: view:product.product:0
msgid "Update"
-msgstr ""
+msgstr "Ažuriraj"
#. module: stock
#: view:stock.inventory:0
msgid "Set to Draft"
-msgstr ""
+msgstr "Postavi na nacrt"
#. module: stock
#: model:ir.actions.act_window,name:stock.action_stock_journal_form
#: model:ir.ui.menu,name:stock.menu_action_stock_journal_form
msgid "Stock Journals"
-msgstr ""
+msgstr "Dnevnici zalihe"
#. module: stock
#: selection:report.stock.move,type:0
msgid "Others"
-msgstr ""
+msgstr "Ostalo"
#. module: stock
#: code:addons/stock/product.py:90
@@ -2066,22 +2165,22 @@ msgstr ""
#: model:stock.location,name:stock.stock_location_scrapped
#: field:stock.move,scrapped:0
msgid "Scrapped"
-msgstr ""
+msgstr "Scrapped"
#. module: stock
#: view:stock.inventory:0
msgid "Products "
-msgstr ""
+msgstr "Proizvodi "
#. module: stock
#: field:product.product,track_incoming:0
msgid "Track Incoming Lots"
-msgstr ""
+msgstr "Prati lot-ove na ulazu"
#. module: stock
#: view:board.board:0
msgid "Warehouse board"
-msgstr ""
+msgstr "Kokpit skladišta"
#. module: stock
#: code:addons/stock/product.py:377
@@ -2092,7 +2191,7 @@ msgstr ""
#. module: stock
#: field:product.category,property_stock_valuation_account_id:0
msgid "Stock Valuation Account"
-msgstr ""
+msgstr "Stock Valuation Account"
#. module: stock
#: field:stock.move,note:0
@@ -2105,7 +2204,7 @@ msgstr "Bilješke"
#: report:lot.stock.overview:0
#: report:lot.stock.overview_all:0
msgid "Value"
-msgstr "Vrijednost"
+msgstr "Value"
#. module: stock
#: field:report.stock.move,type:0
@@ -2128,24 +2227,24 @@ msgstr ""
#: view:stock.picking:0
#, python-format
msgid "Products"
-msgstr "Proizvodi"
+msgstr "Products"
#. module: stock
#: view:stock.change.standard.price:0
msgid "Change Price"
-msgstr ""
+msgstr "Promjeni cijenu"
#. module: stock
#: field:stock.picking,move_type:0
msgid "Delivery Method"
-msgstr "Metoda dostave"
+msgstr "Delivery Method"
#. module: stock
#: help:report.stock.move,location_dest_id:0
#: help:stock.move,location_dest_id:0
#: help:stock.picking,location_dest_id:0
msgid "Location where the system will stock the finished products."
-msgstr ""
+msgstr "Lokacija gotovih proizvoda"
#. module: stock
#: help:product.category,property_stock_valuation_account_id:0
@@ -2153,6 +2252,8 @@ msgid ""
"When real-time inventory valuation is enabled on a product, this account "
"will hold the current value of the products."
msgstr ""
+"When real-time inventory valuation is enabled on a product, this account "
+"will hold the current value of the products."
#. module: stock
#: model:ir.actions.act_window,help:stock.action_reception_picking_move
@@ -2163,27 +2264,32 @@ msgid ""
"the supplier or the purchase order reference. Then you can confirm all "
"products received using the buttons on the right of each line."
msgstr ""
+"Ovdje ćete pronaći sve proizvode koje očekujete od dobavljača. Stavke su "
+"nastale potvrdom naloga za nabavu i/ili upisom primki u stanju \"Nacrt\". "
+"Nakon fizičkog zaprimanja proizvoda filtrirajte ovaj popis po dobavljaču ili "
+"broju naloga za nabavu, te potvrdite prijem proizvoda. Možete koristiti "
+"gumbe na desnoj strani svake stavke."
#. module: stock
#: model:ir.model,name:stock.model_stock_move
msgid "Stock Move"
-msgstr "Prijenosi zalihe"
+msgstr "Skladišni prijenosi"
#. module: stock
#: view:report.stock.move:0
msgid "Delay(Days)"
-msgstr ""
+msgstr "Delay(Days)"
#. module: stock
#: field:stock.move.memory.in,move_id:0
#: field:stock.move.memory.out,move_id:0
msgid "Move"
-msgstr ""
+msgstr "Temeljnica"
#. module: stock
#: help:stock.picking,min_date:0
msgid "Expected date for the picking to be processed"
-msgstr ""
+msgstr "Očekivani datum obrade"
#. module: stock
#: code:addons/stock/product.py:373
@@ -2200,7 +2306,7 @@ msgstr "Revizije"
#. module: stock
#: view:stock.picking:0
msgid "This operation will cancel the shipment. Do you want to continue?"
-msgstr ""
+msgstr "Ova operacija će otkazati isporuku. Nastaviti?"
#. module: stock
#: help:product.product,valuation:0
@@ -2211,6 +2317,11 @@ msgid ""
"current inventory value, and the stock input and stock output account will "
"hold the counterpart moves for incoming and outgoing products."
msgstr ""
+"If real-time valuation is enabled for a product, the system will "
+"automatically write journal entries corresponding to stock moves.The "
+"inventory variation account set on the product category will represent the "
+"current inventory value, and the stock input and stock output account will "
+"hold the counterpart moves for incoming and outgoing products."
#. module: stock
#: model:ir.actions.act_window,help:stock.action_stock_inventory_report
@@ -2219,6 +2330,9 @@ msgid ""
"levels. Sort and group by selection criteria in order to better analyse and "
"manage your company activities."
msgstr ""
+"Inventory Analysis allows you to easily check and analyse your company stock "
+"levels. Sort and group by selection criteria in order to better analyse and "
+"manage your company activities."
#. module: stock
#: help:report.stock.move,location_id:0
@@ -2227,6 +2341,8 @@ msgid ""
"Sets a location if you produce at a fixed location. This can be a partner "
"location if you subcontract the manufacturing operations."
msgstr ""
+"Postavlja se lokacija ukoliko se proizvodi uvijek na fiksnoj lokaciji. To "
+"može biti mjesto partnera u slučaju podugovaranja procesa proizvodnje."
#. module: stock
#: model:ir.actions.act_window,help:stock.action_location_form
@@ -2241,17 +2357,26 @@ msgid ""
"location to the Stock location. Each report can be performed on physical, "
"partner or virtual locations."
msgstr ""
+"Lokacije odražavaju strukturu i organizaciju vaših skladišta. OpenERP "
+"razlikuje fizičke lokacije (skladišta, redove, police, ...), lokacije "
+"partnera (kupaca i dobavljača) i virtualne lokacije koje su protuteža "
+"skladišnim prijenosima kao što je potrošnja sirovina u proizvodnji, "
+"inventura , i sli.. Svaki skladišni prijenos (operacija) u OpenERP-u "
+"premješta proizvode sa jedne lokacije na drugu. Na primjer, ako zaprimite "
+"proizvode od dobavljača, OpenERP će napraviti prijenos proizvoda sa "
+"virtualne lokacije dobavljača na fizičku lokaciju skladišta. Svi izvještaji "
+"se mogu dobiti za fizičke, partnerske i virtualne lokacije."
#. module: stock
#: view:stock.invoice.onshipping:0
msgid "Create"
-msgstr ""
+msgstr "Stvori"
#. module: stock
#: view:stock.move:0
#: view:stock.picking:0
msgid "Dates"
-msgstr ""
+msgstr "Datumi"
#. module: stock
#: field:stock.move,priority:0
@@ -2261,7 +2386,7 @@ msgstr "Prioritet"
#. module: stock
#: view:stock.move:0
msgid "Source"
-msgstr ""
+msgstr "Source"
#. module: stock
#: code:addons/stock/stock.py:2557
@@ -2272,18 +2397,18 @@ msgstr ""
#: selection:stock.location,usage:0
#, python-format
msgid "Inventory"
-msgstr "Inventar"
+msgstr "Inventura"
#. module: stock
#: model:ir.model,name:stock.model_stock_picking
msgid "Picking List"
-msgstr ""
+msgstr "Skladišni dokument"
#. module: stock
#: sql_constraint:stock.production.lot:0
msgid ""
"The combination of serial number and internal reference must be unique !"
-msgstr ""
+msgstr "Kombinacija serijskog broja i interne oznake mora biti jedinstvena !"
#. module: stock
#: model:ir.model,name:stock.model_stock_ups
@@ -2318,7 +2443,7 @@ msgstr ""
#: model:ir.ui.menu,name:stock.menu_stock_unit_measure_stock
#: model:ir.ui.menu,name:stock.menu_stock_uom_form_action
msgid "Units of Measure"
-msgstr ""
+msgstr "Jedinice mjere"
#. module: stock
#: selection:stock.location,chained_location_type:0
@@ -2328,12 +2453,12 @@ msgstr "Fiksna lokacija"
#. module: stock
#: selection:report.stock.move,month:0
msgid "July"
-msgstr ""
+msgstr "Srpanj"
#. module: stock
#: view:report.stock.lines.date:0
msgid "Consumable"
-msgstr ""
+msgstr "Consumable"
#. module: stock
#: model:ir.actions.act_window,help:stock.action_stock_line_date
@@ -2343,11 +2468,14 @@ msgid ""
"need this report in order to ensure that the stock of each product is "
"controlled at least once a year."
msgstr ""
+"Prikaz zadnjih inventura po proizvodima. Ako radite povremene i djelomične "
+"inventure, koristite ovaj izvještaj kako bi osigurali da je inventura "
+"učinjena barem jednom godišnje za svaki proizvod."
#. module: stock
#: model:ir.actions.report.xml,name:stock.report_product_history
msgid "Stock Level Forecast"
-msgstr ""
+msgstr "Prognoza stanja zaliha"
#. module: stock
#: model:ir.model,name:stock.model_stock_journal
@@ -2362,7 +2490,7 @@ msgstr "Dnevnik zalihe"
#: selection:report.stock.inventory,location_type:0
#: selection:stock.location,usage:0
msgid "Procurement"
-msgstr "Nabava"
+msgstr "Procurement"
#. module: stock
#: model:stock.location,name:stock.stock_location_4
@@ -2379,13 +2507,13 @@ msgstr ""
#. module: stock
#: view:stock.picking:0
msgid "Force Availability"
-msgstr "Koristi dostupnost"
+msgstr "Forsiraj dostupnost"
#. module: stock
#: model:ir.actions.act_window,name:stock.move_scrap
#: view:stock.move.scrap:0
msgid "Scrap Move"
-msgstr ""
+msgstr "Premjesti Otpad"
#. module: stock
#: code:addons/stock/wizard/stock_partial_move.py:138
@@ -2394,7 +2522,7 @@ msgstr ""
#: view:stock.move:0
#, python-format
msgid "Receive Products"
-msgstr ""
+msgstr "Prihvat proizvoda"
#. module: stock
#: code:addons/stock/wizard/stock_partial_move.py:131
@@ -2402,7 +2530,7 @@ msgstr ""
#: model:ir.ui.menu,name:stock.menu_action_pdct_out
#, python-format
msgid "Deliver Products"
-msgstr ""
+msgstr "Isporuči proizvode"
#. module: stock
#: view:stock.location.product:0
@@ -2411,30 +2539,31 @@ msgstr "Vidi zalihu proizvoda"
#. module: stock
#: view:stock.picking:0
-msgid "Internal Picking List"
+msgid "Internal Picking list"
msgstr ""
#. module: stock
#: view:report.stock.move:0
#: field:report.stock.move,month:0
msgid "Month"
-msgstr ""
+msgstr "Mjesec"
#. module: stock
#: help:stock.picking,date_done:0
msgid "Date of Completion"
-msgstr ""
+msgstr "Datum izvršenja"
#. module: stock
#: help:stock.production.lot,name:0
msgid "Unique production lot, will be displayed as: PREFIX/SERIAL [INT_REF]"
-msgstr ""
+msgstr "Unique production lot, will be displayed as: PREFIX/SERIAL [INT_REF]"
#. module: stock
#: help:stock.tracking,active:0
msgid ""
"By unchecking the active field, you may hide a pack without deleting it."
msgstr ""
+"By unchecking the active field, you may hide a pack without deleting it."
#. module: stock
#: view:stock.inventory.merge:0
@@ -2444,12 +2573,12 @@ msgstr "Da"
#. module: stock
#: field:stock.inventory,inventory_line_id:0
msgid "Inventories"
-msgstr "Inventoriji"
+msgstr "Inventure"
#. module: stock
#: view:report.stock.move:0
msgid "Todo"
-msgstr ""
+msgstr "Za obaviti"
#. module: stock
#: view:report.stock.inventory:0
@@ -2465,13 +2594,13 @@ msgstr ""
#: field:stock.production.lot.revision,company_id:0
#: field:stock.warehouse,company_id:0
msgid "Company"
-msgstr ""
+msgstr "Organizacija"
#. module: stock
#: view:stock.move:0
#: view:stock.picking:0
msgid "Unit Of Measure"
-msgstr ""
+msgstr "Jedinica mjere"
#. module: stock
#: code:addons/stock/product.py:122
@@ -2489,7 +2618,7 @@ msgstr ""
#. module: stock
#: field:stock.location,stock_real:0
msgid "Real Stock"
-msgstr "Stvarna zaliha"
+msgstr "Dostupna zaliha"
#. module: stock
#: view:stock.fill.inventory:0
@@ -2501,6 +2630,8 @@ msgstr "Popuni inventuru"
msgid ""
"Error: The default UOM and the purchase UOM must be in the same category."
msgstr ""
+"Greška: Zadana jedinica mjere i jedinica mjere nabave moraju biti iz iste "
+"kategorije jedinica mjera."
#. module: stock
#: help:product.category,property_stock_account_input_categ:0
@@ -2529,7 +2660,7 @@ msgstr "Lot"
#. module: stock
#: view:stock.move.split:0
msgid "Production Lot Number"
-msgstr ""
+msgstr "Production Lot Number"
#. module: stock
#: field:stock.move,product_uos_qty:0
@@ -2551,12 +2682,12 @@ msgstr "Postavi raspoloživo"
#. module: stock
#: report:stock.picking.list:0
msgid "Contact Address :"
-msgstr ""
+msgstr "Kontakt adresa :"
#. module: stock
#: field:stock.move,backorder_id:0
msgid "Back Order"
-msgstr ""
+msgstr "Back Order"
#. module: stock
#: field:stock.incoterms,active:0
@@ -2586,7 +2717,7 @@ msgstr ""
#: model:ir.model,name:stock.model_stock_incoterms
#: view:stock.incoterms:0
msgid "Incoterms"
-msgstr ""
+msgstr "Incoterms"
#. module: stock
#: report:lot.stock.overview:0
@@ -2602,6 +2733,9 @@ msgid ""
"costs and responsibilities between buyer and seller and reflect state-of-the-"
"art transportation practices."
msgstr ""
+"Incoterms are series of sales terms.They are used to divide transaction "
+"costs and responsibilities between buyer and seller and reflect state-of-the-"
+"art transportation practices."
#. module: stock
#: help:stock.fill.inventory,recursive:0
@@ -2609,6 +2743,8 @@ msgid ""
"If checked, products contained in child locations of selected location will "
"be included as well."
msgstr ""
+"Ukoliko je označeno. proizvodi sadržani u podređenim lokacijama odabranih "
+"lokacija biti će također uključeni."
#. module: stock
#: field:stock.move.track,tracking_prefix:0
@@ -2618,7 +2754,7 @@ msgstr ""
#. module: stock
#: field:stock.inventory,name:0
msgid "Inventory Reference"
-msgstr ""
+msgstr "Inventura broj"
#. module: stock
#: code:addons/stock/stock.py:1307
@@ -2629,18 +2765,18 @@ msgstr ""
#. module: stock
#: view:stock.location.product:0
msgid "Open Product"
-msgstr ""
+msgstr "Open Product"
#. module: stock
#: field:stock.location.product,to_date:0
msgid "To"
-msgstr "Za"
+msgstr "Do"
#. module: stock
#: view:stock.move:0
#: view:stock.picking:0
msgid "Process"
-msgstr ""
+msgstr "Process"
#. module: stock
#: field:stock.production.lot.revision,name:0
@@ -2661,6 +2797,9 @@ msgid ""
"filter all resources of the day for the 'From' date and 23:59:59 for the "
"'To' date)"
msgstr ""
+"(Keep empty to open the current situation. Adjust HH:MM:SS to 00:00:00 to "
+"filter all resources of the day for the 'From' date and 23:59:59 for the "
+"'To' date)"
#. module: stock
#: view:product.category:0
@@ -2670,7 +2809,7 @@ msgstr "Postavke računovodstvene zalihe"
#. module: stock
#: model:ir.actions.act_window,name:stock.action_picking_tree_out
msgid "Customers Packings"
-msgstr ""
+msgstr "Customers Packings"
#. module: stock
#: selection:report.stock.inventory,state:0
@@ -2682,14 +2821,14 @@ msgstr ""
#: view:stock.picking:0
#: selection:stock.picking,state:0
msgid "Done"
-msgstr "Završeno"
+msgstr "Izvršeno"
#. module: stock
#: model:ir.actions.act_window,name:stock.action_view_change_standard_price
#: model:ir.model,name:stock.model_stock_change_standard_price
#: view:stock.change.standard.price:0
msgid "Change Standard Price"
-msgstr ""
+msgstr "Change Standard Price"
#. module: stock
#: model:stock.location,name:stock.stock_location_locations_virtual
@@ -2704,7 +2843,7 @@ msgstr "Za fakturiranje"
#. module: stock
#: field:stock.inventory,date_done:0
msgid "Date done"
-msgstr "Datum završen"
+msgstr "Datum izvršenja"
#. module: stock
#: code:addons/stock/stock.py:983
@@ -2716,7 +2855,7 @@ msgstr ""
#. module: stock
#: selection:stock.move,priority:0
msgid "Not urgent"
-msgstr "Nije hitno"
+msgstr "Not urgent"
#. module: stock
#: view:stock.move:0
@@ -2732,7 +2871,7 @@ msgstr "Skladišta"
#. module: stock
#: field:stock.journal,user_id:0
msgid "Responsible"
-msgstr ""
+msgstr "Odgovoran"
#. module: stock
#: field:stock.move,returned_price:0
@@ -2744,7 +2883,7 @@ msgstr ""
#: model:ir.ui.menu,name:stock.menu_action_stock_inventory_report
#: view:report.stock.inventory:0
msgid "Inventory Analysis"
-msgstr ""
+msgstr "Analiza zaliha"
#. module: stock
#: field:stock.invoice.onshipping,journal_id:0
@@ -2788,7 +2927,7 @@ msgstr "Proizvod"
#: code:addons/stock/wizard/stock_return_picking.py:135
#, python-format
msgid "Invoicing"
-msgstr ""
+msgstr "Fakturiranje"
#. module: stock
#: code:addons/stock/stock.py:2237
@@ -2800,7 +2939,7 @@ msgstr ""
#. module: stock
#: field:stock.move,product_uos:0
msgid "Product UOS"
-msgstr "JS proizvoda"
+msgstr "JP Proizvoda"
#. module: stock
#: field:stock.location,posz:0
@@ -2816,7 +2955,7 @@ msgstr ""
#: model:ir.model,name:stock.model_stock_move_consume
#: view:stock.move.consume:0
msgid "Consume Products"
-msgstr ""
+msgstr "Utroši proizvode"
#. module: stock
#: code:addons/stock/stock.py:1646
@@ -2827,23 +2966,23 @@ msgstr ""
#. module: stock
#: field:stock.location,parent_right:0
msgid "Right Parent"
-msgstr ""
+msgstr "Desni roditelj"
#. module: stock
#: field:stock.picking,address_id:0
msgid "Address"
-msgstr ""
+msgstr "Adresa"
#. module: stock
#: report:lot.stock.overview:0
#: report:lot.stock.overview_all:0
msgid "Variants"
-msgstr "Varijanti"
+msgstr "Inačice"
#. module: stock
#: field:stock.location,posx:0
msgid "Corridor (X)"
-msgstr ""
+msgstr "Corridor (X)"
#. module: stock
#: model:stock.location,name:stock.stock_location_suppliers
@@ -2854,23 +2993,23 @@ msgstr "Dobavljači"
#: field:report.stock.inventory,value:0
#: field:report.stock.move,value:0
msgid "Total Value"
-msgstr ""
+msgstr "Ukupna vrijednost"
#. module: stock
#: model:ir.ui.menu,name:stock.menu_product_by_category_stock_form
msgid "Products by Category"
-msgstr ""
+msgstr "Proizvodi po kategorijama"
#. module: stock
#: model:ir.ui.menu,name:stock.menu_product_category_config_stock
msgid "Product Categories"
-msgstr ""
+msgstr "Kategorije proizvoda"
#. module: stock
#: field:stock.move.memory.in,wizard_id:0
#: field:stock.move.memory.out,wizard_id:0
msgid "Wizard"
-msgstr ""
+msgstr "Asistent"
#. module: stock
#: model:ir.actions.act_window,name:stock.action_view_stock_location_product
@@ -2881,12 +3020,12 @@ msgstr "Proizvodi po lokaciji"
#. module: stock
#: field:stock.fill.inventory,recursive:0
msgid "Include children"
-msgstr ""
+msgstr "Uključi podređene"
#. module: stock
#: model:stock.location,name:stock.stock_location_components
msgid "Shelf 1"
-msgstr ""
+msgstr "Shelf 1"
#. module: stock
#: model:ir.actions.act_window,help:stock.action_picking_tree6
@@ -2898,43 +3037,49 @@ msgid ""
"preconfigured logistics rules, but you can also record manual stock "
"operations."
msgstr ""
+"Internal Moves display all inventory operations you have to perform in your "
+"warehouse. All operations can be categorized into stock journals, so that "
+"each worker has his own list of operations to perform in his own journal. "
+"Most operations are prepared automatically by OpenERP according to your "
+"preconfigured logistics rules, but you can also record manual stock "
+"operations."
#. module: stock
#: view:stock.move:0
msgid "Order"
-msgstr ""
+msgstr "Order"
#. module: stock
#: field:stock.tracking,name:0
msgid "Pack Reference"
-msgstr ""
+msgstr "Pakiranje br."
#. module: stock
#: view:report.stock.move:0
#: field:report.stock.move,location_id:0
#: field:stock.move,location_id:0
msgid "Source Location"
-msgstr "Lokacija izvora"
+msgstr "Izvorna lokacija"
#. module: stock
#: view:product.template:0
msgid "Accounting Entries"
-msgstr "Računovodstveni ulazi"
+msgstr "Stavke računovodstva"
#. module: stock
#: report:stock.picking.list:0
msgid "Total"
-msgstr ""
+msgstr "Ukupno"
#. module: stock
#: model:stock.location,name:stock.stock_location_intermediatelocation0
msgid "Internal Shippings"
-msgstr ""
+msgstr "Interne otpreme"
#. module: stock
#: field:stock.change.standard.price,enable_stock_in_out_acc:0
msgid "Enable Related Account"
-msgstr ""
+msgstr "Omogući povezani konto"
#. module: stock
#: field:stock.location,stock_virtual_value:0
@@ -2946,18 +3091,18 @@ msgstr "Virtualna vrijednost zalihe"
#: view:stock.inventory.line.split:0
#: view:stock.move.split:0
msgid "Lots"
-msgstr "Lotovi"
+msgstr "Lots"
#. module: stock
#: view:stock.move:0
#: view:stock.picking:0
msgid "New pack"
-msgstr ""
+msgstr "Novi paket"
#. module: stock
#: view:stock.move:0
msgid "Destination"
-msgstr ""
+msgstr "Odredište"
#. module: stock
#: selection:stock.picking,move_type:0
@@ -2981,34 +3126,34 @@ msgstr ""
#. module: stock
#: view:stock.picking:0
msgid "To Invoice"
-msgstr ""
+msgstr "Za fakturiranje"
#. module: stock
#: code:addons/stock/wizard/stock_return_picking.py:120
#, python-format
msgid "Return lines"
-msgstr ""
+msgstr "Linija Povrata"
#. module: stock
#: model:ir.model,name:stock.model_report_stock_lines_date
#: view:report.stock.lines.date:0
msgid "Dates of Inventories"
-msgstr "Datumi inventara"
+msgstr "Datumi inventura"
#. module: stock
#: view:report.stock.move:0
msgid "Total incoming quantity"
-msgstr ""
+msgstr "Uk. kol. ulaza"
#. module: stock
#: field:report.stock.move,product_qty_out:0
msgid "Out Qty"
-msgstr ""
+msgstr "Kol. izlaza"
#. module: stock
#: field:stock.production.lot,move_ids:0
msgid "Moves for this production lot"
-msgstr ""
+msgstr "Moves for this production lot"
#. module: stock
#: model:ir.model,name:stock.model_stock_move_memory_out
@@ -3025,7 +3170,7 @@ msgstr ""
#: view:stock.move:0
#: view:stock.picking:0
msgid "Put in current pack"
-msgstr ""
+msgstr "U trenutni paket."
#. module: stock
#: view:stock.inventory:0
@@ -3035,7 +3180,7 @@ msgstr "Inventar lotova"
#. module: stock
#: view:stock.move:0
msgid "Reason"
-msgstr ""
+msgstr "Razlog"
#. module: stock
#: report:stock.picking.list:0
@@ -3052,6 +3197,12 @@ msgid ""
"'Available' button to get all the lots you produced, received or delivered "
"to customers."
msgstr ""
+"This is the list of all the production lots (serial numbers) you recorded. "
+"When you select a lot, you can get the upstream or downstream traceability "
+"of the products contained in lot. By default, the list is filtred on the "
+"serial numbers that are available in your warehouse but you can uncheck the "
+"'Available' button to get all the lots you produced, received or delivered "
+"to customers."
#. module: stock
#: field:stock.location,icon:0
@@ -3120,17 +3271,19 @@ msgstr "Želite li spojiti ove inventare ?"
#: selection:stock.move,state:0
#: selection:stock.picking,state:0
msgid "Cancelled"
-msgstr ""
+msgstr "Otkazani"
#. module: stock
#: view:stock.move:0
msgid "Picking"
-msgstr ""
+msgstr "Skladišnice"
#. module: stock
#: help:stock.picking,move_type:0
msgid "It specifies goods to be delivered all at once or by direct delivery"
msgstr ""
+"Određuje se da li će roba biti isporučena odjednom ili neposrednim "
+"isporukama."
#. module: stock
#: code:addons/stock/wizard/stock_invoice_onshipping.py:83
@@ -3159,6 +3312,15 @@ msgid ""
"* Fixed Location: The chained location is taken from the next field: Chained "
"Location if Fixed."
msgstr ""
+"Određuje da li je ova lokacija povezana s drugom lokacijom, odnosno da li "
+"ulaz proizvoda na ovu lokaciju \n"
+"treba proizvesti prijenos na slijedeću lokaciju.\n"
+"Vrste ulančanih lokacija :\n"
+"* Ništa: Nema automatskih prijenosa\n"
+"* Kupac: Lokacija se uzima iz polja Lokacija kupca sa kartice kupca koji je "
+"naveden u skl. dokumentu ulaza proizvoda.\n"
+"* Fiksna lokacija: Uzima se ovdje navedena lokacija: Ulančana lokacija ako "
+"je fiksna."
#. module: stock
#: code:addons/stock/wizard/stock_inventory_merge.py:43
@@ -3179,7 +3341,7 @@ msgstr ""
#: model:ir.ui.menu,name:stock.menu_action_picking_tree
#: view:stock.picking:0
msgid "Delivery Orders"
-msgstr "Narudžbe dostave"
+msgstr "Delivery Orders"
#. module: stock
#: help:res.partner,property_stock_customer:0
@@ -3187,7 +3349,7 @@ msgid ""
"This stock location will be used, instead of the default one, as the "
"destination location for goods you send to this partner"
msgstr ""
-"Ova lokacija zalihe će se koristiti, umjesto predefinirane, kao odredišna "
+"Ova skladišna lokacija će se koristiti, umjesto uobičajene, kao odredišna "
"lokacija za robu koju šaljete ovom partneru"
#. module: stock
@@ -3207,50 +3369,50 @@ msgstr "Potvrdi"
#. module: stock
#: help:stock.location,icon:0
msgid "Icon show in hierarchical tree view"
-msgstr ""
+msgstr "Icon show in hierarchical tree view"
#. module: stock
#: model:ir.actions.act_window,name:stock.action_view_stock_merge_inventories
#: view:stock.inventory.merge:0
msgid "Merge inventories"
-msgstr "Spoji inventare"
+msgstr "Spoji inventure"
#. module: stock
#: help:stock.change.product.qty,new_quantity:0
msgid "This quantity is expressed in the Default UoM of the product."
-msgstr ""
+msgstr "Ova količina je izražena u uobičajenoj jedinici mjere proizvoda."
#. module: stock
#: report:stock.picking.list:0
msgid "Reception:"
-msgstr ""
+msgstr "Reception:"
#. module: stock
#: help:stock.location,scrap_location:0
msgid ""
"Check this box to allow using this location to put scrapped/damaged goods."
-msgstr ""
+msgstr "Označite za lokaciju otpisanih/oštećenih proizvoda."
#. module: stock
#: model:ir.actions.act_window,name:stock.act_relate_picking
msgid "Related Picking"
-msgstr ""
+msgstr "Vezana skladišnica"
#. module: stock
#: view:report.stock.move:0
msgid "Total outgoing quantity"
-msgstr ""
+msgstr "Ukupna izlazna količina"
#. module: stock
#: field:stock.picking,backorder_id:0
msgid "Back Order of"
-msgstr ""
+msgstr "Zaostali nalog od"
#. module: stock
#: help:stock.move.memory.in,cost:0
#: help:stock.move.memory.out,cost:0
msgid "Unit Cost for this product line"
-msgstr ""
+msgstr "Unit Cost for this product line"
#. module: stock
#: model:ir.model,name:stock.model_product_category
@@ -3259,7 +3421,7 @@ msgstr ""
#: view:report.stock.move:0
#: field:report.stock.move,categ_id:0
msgid "Product Category"
-msgstr ""
+msgstr "Grupa proizvoda"
#. module: stock
#: code:addons/stock/wizard/stock_change_product_qty.py:88
@@ -3281,24 +3443,24 @@ msgstr ""
#. module: stock
#: view:stock.split.into:0
msgid "Quantity to leave in the current pack"
-msgstr ""
+msgstr "Količina koja ostaje u trenutnom pakiranju"
#. module: stock
#: model:ir.actions.act_window,name:stock.action_stock_invoice_onshipping
#: view:stock.invoice.onshipping:0
msgid "Create invoice"
-msgstr "Kreiraj fakturu"
+msgstr "Kreiraj račun"
#. module: stock
#: model:ir.ui.menu,name:stock.menu_stock_configuration
msgid "Configuration"
-msgstr "Konfiguracija"
+msgstr "Postava"
#. module: stock
#: field:stock.inventory.line.split,use_exist:0
#: field:stock.move.split,use_exist:0
msgid "Existing Lots"
-msgstr ""
+msgstr "Postojeći lotovi"
#. module: stock
#: field:product.product,location_id:0
@@ -3315,11 +3477,16 @@ msgid ""
"If cost price is decreased, stock variation account will be creadited and "
"stock input account will be debited."
msgstr ""
+"If cost price is increased, stock variation account will be debited and "
+"stock output account will be credited with the value = (difference of amount "
+"* quantity available).\n"
+"If cost price is decreased, stock variation account will be creadited and "
+"stock input account will be debited."
#. module: stock
#: field:stock.location,chained_journal_id:0
msgid "Chaining Journal"
-msgstr ""
+msgstr "Dnevnik ulančavanja"
#. module: stock
#: code:addons/stock/stock.py:729
@@ -3358,19 +3525,19 @@ msgstr ""
#. module: stock
#: view:stock.picking:0
msgid "Additional info"
-msgstr ""
+msgstr "Dodatne inf."
#. module: stock
#: view:stock.move:0
#: field:stock.move,tracking_id:0
msgid "Pack"
-msgstr ""
+msgstr "Pakiranje/teret"
#. module: stock
#: view:stock.move:0
#: view:stock.picking:0
msgid "Date Expected"
-msgstr ""
+msgstr "Očekivano"
#. module: stock
#: model:ir.actions.act_window,help:stock.action_picking_tree4
@@ -3389,17 +3556,17 @@ msgstr "Automatska potvrda"
#. module: stock
#: report:stock.picking.list:0
msgid "Weight"
-msgstr ""
+msgstr "Težina"
#. module: stock
#: model:ir.model,name:stock.model_product_template
msgid "Product Template"
-msgstr ""
+msgstr "Predložak proizvoda"
#. module: stock
#: selection:report.stock.move,month:0
msgid "December"
-msgstr ""
+msgstr "Prosinac"
#. module: stock
#: selection:stock.location,chained_auto_packing:0
@@ -3413,16 +3580,19 @@ msgid ""
"specific product. You can filter on the product to see all the past or "
"future movements for the product."
msgstr ""
+"This menu gives you the full traceability of inventory operations on a "
+"specific product. You can filter on the product to see all the past or "
+"future movements for the product."
#. module: stock
#: view:stock.picking:0
msgid "Return Products"
-msgstr ""
+msgstr "Return Products"
#. module: stock
#: view:stock.inventory:0
msgid "Validate Inventory"
-msgstr ""
+msgstr "Validate Inventory"
#. module: stock
#: help:stock.move,price_currency_id:0
@@ -3430,11 +3600,13 @@ msgid ""
"Technical field used to record the currency chosen by the user during a "
"picking confirmation (when average price costing method is used)"
msgstr ""
+"Technical field used to record the currency chosen by the user during a "
+"picking confirmation (when average price costing method is used)"
#. module: stock
#: model:ir.ui.menu,name:stock.menu_stock_products_moves
msgid "Products Moves"
-msgstr ""
+msgstr "Skladišni prijenosi"
#. module: stock
#: selection:stock.picking,invoice_state:0
@@ -3449,17 +3621,17 @@ msgstr ""
#. module: stock
#: field:stock.picking,max_date:0
msgid "Max. Expected Date"
-msgstr ""
+msgstr "Max. Expected Date"
#. module: stock
#: field:stock.picking,auto_picking:0
msgid "Auto-Picking"
-msgstr ""
+msgstr "Auto-skladišnica"
#. module: stock
#: model:stock.location,name:stock.stock_location_shop1
msgid "Shop 2"
-msgstr ""
+msgstr "Shop 2"
#. module: stock
#: constraint:res.partner:0
@@ -3474,7 +3646,7 @@ msgstr ""
#: selection:stock.location,chained_picking_type:0
#: selection:stock.picking,type:0
msgid "Internal"
-msgstr "Unutarnje"
+msgstr "Interno"
#. module: stock
#: selection:report.stock.inventory,state:0
@@ -3489,7 +3661,7 @@ msgstr "Nacrt"
#: model:ir.actions.report.xml,name:stock.report_stock_inventory_move
#: report:stock.inventory.move:0
msgid "Stock Inventory"
-msgstr ""
+msgstr "Stock Inventory"
#. module: stock
#: help:report.stock.inventory,state:0
@@ -3500,11 +3672,17 @@ msgid ""
" When the picking it done the state is 'Done'. \n"
"The state is 'Waiting' if the move is waiting for another one."
msgstr ""
+"Nakon kreiranja skladišni prijenos je u stanju 'Nacrt' .\n"
+" Nakon toga se postavlja u stanje 'Potvrđen'.\n"
+" Ako postoje dostatne stvarne količine na zalihi stanje prelazi u "
+"'Dostupno'.\n"
+" Nakon izdavanja stanje je 'Izvršen'. \n"
+"Stanje je 'Na čekanju' kada prijenos čeka izvršenje drugog prijenosa."
#. module: stock
#: view:board.board:0
msgid "Outgoing Products Delay"
-msgstr ""
+msgstr "Outgoing Products Delay"
#. module: stock
#: field:stock.move.split.lines,use_exist:0
@@ -3523,6 +3701,8 @@ msgid ""
"For the current product, this stock location will be used, instead of the "
"default one, as the source location for stock moves generated by procurements"
msgstr ""
+"Koristiti ovu skladišnu lokaciju, umjesto uobičajene, kao izvorišnu lokaciju "
+"za prijenose generirane nabavom"
#. module: stock
#: code:addons/stock/stock.py:1319
@@ -3533,12 +3713,12 @@ msgstr ""
#. module: stock
#: help:stock.picking,origin:0
msgid "Reference of the document that produced this picking."
-msgstr ""
+msgstr "Referenca na dokument koji je generirao ovu skladišnicu."
#. module: stock
#: field:stock.fill.inventory,set_stock_zero:0
msgid "Set to zero"
-msgstr ""
+msgstr "Set to zero"
#. module: stock
#: code:addons/stock/wizard/stock_invoice_onshipping.py:85
@@ -3549,7 +3729,7 @@ msgstr ""
#. module: stock
#: selection:report.stock.move,month:0
msgid "November"
-msgstr ""
+msgstr "Studeni"
#. module: stock
#: code:addons/stock/product.py:101
@@ -3567,7 +3747,7 @@ msgstr ""
#. module: stock
#: field:stock.location,chained_company_id:0
msgid "Chained Company"
-msgstr ""
+msgstr "Chained Company"
#. module: stock
#: view:stock.picking:0
@@ -3577,7 +3757,7 @@ msgstr "Provjeri dostupnost"
#. module: stock
#: selection:report.stock.move,month:0
msgid "January"
-msgstr ""
+msgstr "Siječanj"
#. module: stock
#: help:product.product,track_incoming:0
@@ -3585,6 +3765,8 @@ msgid ""
"Forces to specify a Production Lot for all moves containing this product and "
"coming from a Supplier Location"
msgstr ""
+"Forces to specify a Production Lot for all moves containing this product and "
+"coming from a Supplier Location"
#. module: stock
#: model:ir.actions.act_window,name:stock.act_product_stock_move_futur_open
@@ -3594,7 +3776,7 @@ msgstr "Budući prijenosi zalihe"
#. module: stock
#: field:stock.move,move_history_ids2:0
msgid "Move History (parent moves)"
-msgstr ""
+msgstr "Move History (parent moves)"
#. module: stock
#: code:addons/stock/product.py:361
@@ -3619,7 +3801,7 @@ msgstr ""
#. module: stock
#: view:stock.change.product.qty:0
msgid "Select Quantity"
-msgstr ""
+msgstr "Odaberi količinu"
#. module: stock
#: model:ir.actions.act_window,help:stock.action_location_tree
@@ -3628,6 +3810,9 @@ msgid ""
"click on a location to get the list of the products and their stock level in "
"this particular location and all its children."
msgstr ""
+"This is the structure of your company's warehouses and locations. You can "
+"click on a location to get the list of the products and their stock level in "
+"this particular location and all its children."
#. module: stock
#: model:res.request.link,name:stock.req_link_tracking
@@ -3641,7 +3826,7 @@ msgstr ""
#: view:stock.production.lot:0
#: field:stock.production.lot,name:0
msgid "Production Lot"
-msgstr "Produkcijska serija"
+msgstr "Lot proizvodnje"
#. module: stock
#: model:ir.ui.menu,name:stock.menu_traceability
@@ -3655,7 +3840,7 @@ msgstr "Sljedivost"
#. module: stock
#: view:stock.picking:0
msgid "To invoice"
-msgstr ""
+msgstr "Za fakturiranje"
#. module: stock
#: model:ir.actions.act_window,name:stock.action_location_form
@@ -3667,12 +3852,12 @@ msgstr "Lokacije"
#. module: stock
#: view:stock.picking:0
msgid "General Information"
-msgstr "Opće informacije"
+msgstr "Opći podaci"
#. module: stock
#: field:stock.production.lot,prefix:0
msgid "Prefix"
-msgstr ""
+msgstr "Prefix"
#. module: stock
#: code:addons/stock/wizard/stock_splitinto.py:53
@@ -3689,20 +3874,21 @@ msgstr ""
#: field:stock.partial.picking,product_moves_in:0
#: field:stock.partial.picking,product_moves_out:0
msgid "Moves"
-msgstr "Prijenosi"
+msgstr "Temeljnice"
#. module: stock
#: view:report.stock.move:0
#: field:report.stock.move,location_dest_id:0
#: field:stock.picking,location_dest_id:0
msgid "Dest. Location"
-msgstr "Odredišna lokacija"
+msgstr "Lokacija isporuke"
#. module: stock
#: help:stock.move,product_packaging:0
msgid ""
"It specifies attributes of packaging like type, quantity of packaging,etc."
msgstr ""
+"It specifies attributes of packaging like type, quantity of packaging,etc."
#. module: stock
#: code:addons/stock/stock.py:2386
@@ -3719,24 +3905,24 @@ msgstr ""
#. module: stock
#: constraint:stock.move:0
msgid "You must assign a production lot for this product"
-msgstr ""
+msgstr "Morate pridijeliti lot proizvodnje ovom proizvodu"
#. module: stock
#: view:stock.move:0
msgid "Expected"
-msgstr ""
+msgstr "Očekivano"
#. module: stock
#: selection:report.stock.inventory,location_type:0
#: model:stock.location,name:stock.location_production
#: selection:stock.location,usage:0
msgid "Production"
-msgstr "Produkcija"
+msgstr "Proizvodnja"
#. module: stock
#: view:stock.split.into:0
msgid "Split Move"
-msgstr ""
+msgstr "Split Move"
#. module: stock
#: code:addons/stock/wizard/stock_return_picking.py:97
@@ -3749,12 +3935,12 @@ msgstr ""
#. module: stock
#: model:ir.model,name:stock.model_stock_move_split
msgid "Split in Production lots"
-msgstr ""
+msgstr "Split in Production lots"
#. module: stock
#: view:report.stock.inventory:0
msgid "Real"
-msgstr ""
+msgstr "Realan"
#. module: stock
#: report:stock.picking.list:0
@@ -3766,7 +3952,7 @@ msgstr "Opis"
#. module: stock
#: selection:report.stock.move,month:0
msgid "May"
-msgstr ""
+msgstr "Svibanj"
#. module: stock
#: code:addons/stock/wizard/stock_partial_move.py:133
@@ -3785,13 +3971,13 @@ msgstr ""
#. module: stock
#: view:stock.tracking:0
msgid "Upstream traceability"
-msgstr ""
+msgstr "Upstream sljedivost"
#. module: stock
#: model:ir.actions.report.xml,name:stock.report_location_overview_all
#: report:lot.stock.overview_all:0
msgid "Location Content"
-msgstr ""
+msgstr "Location Content"
#. module: stock
#: code:addons/stock/product.py:385
@@ -3804,7 +3990,7 @@ msgstr ""
#: field:product.template,property_stock_account_output:0
#: field:stock.change.standard.price,stock_account_output:0
msgid "Stock Output Account"
-msgstr "Izlazni konto zalihe"
+msgstr "Stock Output Account"
#. module: stock
#: field:stock.location,chained_location_type:0
@@ -3814,7 +4000,7 @@ msgstr "Ulančani tip lokacije"
#. module: stock
#: model:ir.model,name:stock.model_stock_report_prodlots
msgid "Stock report by production lots"
-msgstr "Izvještaj zalihe za proizvodne lotove"
+msgstr "Zalihe po proizvodnim lotovima"
#. module: stock
#: view:stock.location:0
@@ -3826,34 +4012,34 @@ msgstr "Kupac"
#. module: stock
#: selection:report.stock.move,month:0
msgid "February"
-msgstr ""
+msgstr "Veljača"
#. module: stock
#: view:stock.production.lot:0
msgid "Production Lot Identification"
-msgstr ""
+msgstr "Proizvodna Lot Identifikacija"
#. module: stock
#: field:stock.location,scrap_location:0
#: view:stock.move.scrap:0
msgid "Scrap Location"
-msgstr ""
+msgstr "Lokacija otpisa"
#. module: stock
#: selection:report.stock.move,month:0
msgid "April"
-msgstr ""
+msgstr "Travanj"
#. module: stock
#: view:report.stock.inventory:0
#: view:stock.move:0
msgid "Future"
-msgstr ""
+msgstr "Budućnost"
#. module: stock
#: field:stock.invoice.onshipping,invoice_date:0
msgid "Invoiced date"
-msgstr ""
+msgstr "Datum računa"
#. module: stock
#: code:addons/stock/stock.py:729
@@ -3884,13 +4070,13 @@ msgstr ""
#. module: stock
#: help:stock.move,move_dest_id:0
msgid "Optional: next stock move when chaining them"
-msgstr ""
+msgstr "Optional: next stock move when chaining them"
#. module: stock
#: view:report.stock.move:0
#: field:report.stock.move,year:0
msgid "Year"
-msgstr ""
+msgstr "Godina"
#. module: stock
#: model:stock.location,name:stock.stock_location_locations
@@ -3907,12 +4093,12 @@ msgstr ""
#: help:stock.location,posy:0
#: help:stock.location,posz:0
msgid "Optional localization details, for information purpose only"
-msgstr ""
+msgstr "Komentar lokacije"
#. module: stock
#: view:product.product:0
msgid "Expected Stock Variations"
-msgstr ""
+msgstr "Expected Stock Variations"
#~ msgid "LIFO"
#~ msgstr "LIFO"
@@ -4138,9 +4324,6 @@ msgstr ""
#~ msgid "terp-stock"
#~ msgstr "terp-stock"
-#~ msgid "Packing List:"
-#~ msgstr "Lista pakiranja:"
-
#~ msgid "STOCK_MEDIA_RECORD"
#~ msgstr "STOCK_MEDIA_RECORD"
@@ -4441,9 +4624,6 @@ msgstr ""
#~ msgid "Split move lines in two"
#~ msgstr "Razdijeli stavke prijenosa u dva dijela"
-#~ msgid "Return"
-#~ msgstr "Vrati"
-
#~ msgid "Auto-Packing"
#~ msgstr "Auto-pakiranje"
@@ -4657,3 +4837,12 @@ msgstr ""
#~ msgid "Move State"
#~ msgstr "Stanje prijenosa"
+
+#~ msgid "Stock Management"
+#~ msgstr "Stock Management"
+
+#~ msgid "Packing List:"
+#~ msgstr "Packing List:"
+
+#~ msgid "Return"
+#~ msgstr "Return"
diff --git a/addons/stock/i18n/id.po b/addons/stock/i18n/id.po
index 7d32743d21a..83d3f217828 100644
--- a/addons/stock/i18n/id.po
+++ b/addons/stock/i18n/id.po
@@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2011-01-11 11:16+0000\n"
-"PO-Revision-Date: 2011-02-06 15:41+0000\n"
+"PO-Revision-Date: 2011-12-09 16:41+0000\n"
"Last-Translator: moelyana \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-12 04:50+0000\n"
-"X-Generator: Launchpad (build 14277)\n"
+"X-Launchpad-Export-Date: 2011-12-10 04:56+0000\n"
+"X-Generator: Launchpad (build 14450)\n"
#. module: stock
#: field:product.product,track_outgoing:0
@@ -81,7 +81,7 @@ msgstr "Produk Bergerak"
#: model:ir.ui.menu,name:stock.menu_action_stock_move_report
#: view:report.stock.move:0
msgid "Moves Analysis"
-msgstr ""
+msgstr "Analisa Perpindahan"
#. module: stock
#: help:stock.production.lot,ref:0
@@ -2506,7 +2506,7 @@ msgstr "Lihat Stok Produk"
#. module: stock
#: view:stock.picking:0
-msgid "Internal Picking List"
+msgid "Internal Picking list"
msgstr "Daftar pengambilan internal"
#. module: stock
diff --git a/addons/stock/product_view.xml b/addons/stock/product_view.xml
index 9e8cc34813f..db5352f3162 100644
--- a/addons/stock/product_view.xml
+++ b/addons/stock/product_view.xml
@@ -27,7 +27,7 @@
-
+