bzr revid: nicolas.vanhoren@openerp.com-20120105130649-peftu9zzz6698wvl
This commit is contained in:
niv-openerp
2012-01-05 14:06:49 +01:00
79 changed files with 5938 additions and 1167 deletions
+1 -1
View File
@@ -2651,7 +2651,7 @@ class account_tax_code_template(osv.osv):
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')
children_tax_code_template = tax_code_root_id and obj_tax_code_template.search(cr, uid, [('parent_id','child_of',[tax_code_root_id])], order='id') or []
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,
+25 -19
View File
@@ -794,34 +794,39 @@ class account_invoice(osv.osv):
line.append((0,0,val))
return line
def action_move_create(self, cr, uid, ids, *args):
def action_move_create(self, cr, uid, ids, context=None):
"""Creates invoice related analytics and financial move lines"""
ait_obj = self.pool.get('account.invoice.tax')
cur_obj = self.pool.get('res.currency')
period_obj = self.pool.get('account.period')
context = {}
for inv in self.browse(cr, uid, ids):
payment_term_obj = self.pool.get('account.payment.term')
journal_obj = self.pool.get('account.journal')
move_obj = self.pool.get('account.move')
if context is None:
context = {}
for inv in self.browse(cr, uid, ids, context=context):
if not inv.journal_id.sequence_id:
raise osv.except_osv(_('Error !'), _('Please define sequence on the journal related to this invoice.'))
if not inv.invoice_line:
raise osv.except_osv(_('No Invoice Lines !'), _('Please create some invoice lines.'))
if inv.move_id:
continue
ctx = context.copy()
ctx.update({'lang': inv.partner_id.lang})
if not inv.date_invoice:
self.write(cr, uid, [inv.id], {'date_invoice':time.strftime('%Y-%m-%d')})
self.write(cr, uid, [inv.id], {'date_invoice':time.strftime('%Y-%m-%d')}, context=ctx)
company_currency = inv.company_id.currency_id.id
# create the analytical lines
# one move line per invoice line
iml = self._get_analytic_lines(cr, uid, inv.id)
iml = self._get_analytic_lines(cr, uid, inv.id, context=ctx)
# check if taxes are all computed
ctx = context.copy()
ctx.update({'lang': inv.partner_id.lang})
compute_taxes = ait_obj.compute(cr, uid, inv.id, context=ctx)
self.check_tax_lines(cr, uid, inv, compute_taxes, ait_obj)
if inv.type in ('in_invoice', 'in_refund') and abs(inv.check_total - inv.amount_total) >= (inv.currency_id.rounding/2.0):
raise osv.except_osv(_('Bad total !'), _('Please verify the price of the invoice !\nThe real total does not match the computed total.'))
# I disabled the check_total feature
#if inv.type in ('in_invoice', 'in_refund') and abs(inv.check_total - inv.amount_total) >= (inv.currency_id.rounding/2.0):
# raise osv.except_osv(_('Bad total !'), _('Please verify the price of the invoice !\nThe real total does not match the computed total.'))
if inv.payment_term:
total_fixed = total_percent = 0
@@ -859,8 +864,8 @@ class account_invoice(osv.osv):
name = inv['name'] or '/'
totlines = False
if inv.payment_term:
totlines = self.pool.get('account.payment.term').compute(cr,
uid, inv.payment_term.id, total, inv.date_invoice or False)
totlines = payment_term_obj.compute(cr,
uid, inv.payment_term.id, total, inv.date_invoice or False, context=ctx)
if totlines:
res_amount_currency = total_currency
i = 0
@@ -906,12 +911,12 @@ class account_invoice(osv.osv):
date = inv.date_invoice or time.strftime('%Y-%m-%d')
part = inv.partner_id.id
line = map(lambda x:(0,0,self.line_get_convert(cr, uid, x, part, date, context={})),iml)
line = map(lambda x:(0,0,self.line_get_convert(cr, uid, x, part, date, context=ctx)),iml)
line = self.group_lines(cr, uid, iml, line, inv)
journal_id = inv.journal_id.id
journal = self.pool.get('account.journal').browse(cr, uid, journal_id)
journal = journal_obj.browse(cr, uid, journal_id, context=ctx)
if journal.centralisation:
raise osv.except_osv(_('UserError'),
_('You cannot create an invoice on a centralised journal. Uncheck the centralised counterpart box in the related journal from the configuration menu.'))
@@ -935,13 +940,14 @@ class account_invoice(osv.osv):
for i in line:
i[2]['period_id'] = period_id
move_id = self.pool.get('account.move').create(cr, uid, move, context=context)
new_move_name = self.pool.get('account.move').browse(cr, uid, move_id).name
move_id = move_obj.create(cr, uid, move, context=ctx)
new_move_name = move_obj.browse(cr, uid, move_id, context=ctx).name
# make the invoice point to that move
self.write(cr, uid, [inv.id], {'move_id': move_id,'period_id':period_id, 'move_name':new_move_name})
self.write(cr, uid, [inv.id], {'move_id': move_id,'period_id':period_id, 'move_name':new_move_name}, context=ctx)
# Pass invoice in context in method post: used if you want to get the same
# account move reference when creating the same invoice after a cancelled one:
self.pool.get('account.move').post(cr, uid, [move_id], context={'invoice':inv})
ctx.update({'invoice':inv})
move_obj.post(cr, uid, [move_id], context=ctx)
self._log_event(cr, uid, ids)
return True
@@ -1262,7 +1268,7 @@ class account_invoice_line(osv.osv):
def _price_unit_default(self, cr, uid, context=None):
if context is None:
context = {}
if 'check_total' in context:
if context.get('check_total', False):
t = context['check_total']
for l in context.get('invoice_line', {}):
if isinstance(l, (list, tuple)) and len(l) >= 3 and l[2]:
+2 -3
View File
@@ -168,7 +168,7 @@
<field name="reference_type" nolabel="1" size="0"/>
<field name="reference" nolabel="1"/>
<field name="date_due"/>
<field name="check_total" required="2"/>
<field name="check_total" invisible="1"/>
<field colspan="4" default_get="{'check_total': check_total, 'invoice_line': invoice_line, 'address_invoice_id': address_invoice_id, 'partner_id': partner_id, 'price_type': 'price_type' in dir() and price_type or False}" name="invoice_line" context="{'type': type}" nolabel="1">
<tree string="Invoice lines">
<field name="product_id" on_change="product_id_change(product_id, uos_id, quantity, name, parent.type, parent.partner_id, parent.fiscal_position, price_unit, parent.address_invoice_id, parent.currency_id, context, parent.company_id)"/>
@@ -179,7 +179,7 @@
<field name="price_unit"/>
<!-- Removed if subtotal is set -->
<field name="price_subtotal"/>
<field name="name"/>
<field invisible="True" name="name"/>
<field invisible="True" name="uos_id"/>
</tree>
</field>
@@ -303,7 +303,6 @@
<group col="8" colspan="4" groups="base.group_user">
<button name="invoice_cancel" states="draft,proforma2,sale,open" string="Cancel" icon="gtk-cancel" groups="base.group_no_one"/>
<button name="action_cancel_draft" states="cancel" string="Reset to Draft" type="object" icon="terp-stock_effects-object-colorize"/>
<button name='%(action_account_state_open)d' type='action' string='Re-Open' groups="account.group_account_invoice" attrs="{'invisible':['|', ('state','&lt;&gt;','paid'), ('reconciled', '=', True)]}" icon="gtk-convert" help="This button only appears when the state of the invoice is 'paid' (showing that it has been fully reconciled) and auto-computed boolean 'reconciled' is False (depicting that it's not the case anymore). In other words, the invoice has been dereconciled and it does not fit anymore the 'paid' state. You should press this button to re-open it and let it continue its normal process after having resolved the eventual exceptions it may have created."/>
<button name="%(action_account_invoice_refund)d" type='action' string='Refund' states='open,paid' icon="gtk-execute"/>
<button name="invoice_proforma2" states="draft" string="PRO-FORMA" icon="terp-gtk-media-pause" groups="account.group_account_user"/>
+2 -2
View File
@@ -2,7 +2,7 @@
<openerp>
<data noupdate="1">
<record id="demo_invoice_0" model="account.invoice">
<field name="date_due">2011-07-21</field>
<field name="date_due" eval="time.strftime('%Y')+'-01-30'"/>
<field name="payment_term" ref="account.account_payment_term"/>
<field name="journal_id" ref="account.expenses_journal"/>
<field name="currency_id" ref="base.EUR"/>
@@ -15,7 +15,7 @@
<field name="type">in_invoice</field>
<field name="account_id" ref="account.a_pay"/>
<field eval="0" name="reconciled"/>
<field name="date_invoice">2011-06-01</field>
<field name="date_invoice" eval="time.strftime('%Y')+'-01-01'"/>
<field eval="14.0" name="amount_untaxed"/>
<field eval="14.0" name="amount_total"/>
<field name="partner_id" ref="base.res_partner_maxtor"/>
+27 -27
View File
@@ -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-12-23 09:55+0000\n"
"PO-Revision-Date: 2011-11-25 15:24+0000\n"
"Last-Translator: Numérigraphe <Unknown>\n"
"PO-Revision-Date: 2012-01-02 11:15+0000\n"
"Last-Translator: Olivier Dony (OpenERP) <Unknown>\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-24 05:45+0000\n"
"X-Generator: Launchpad (build 14560)\n"
"X-Launchpad-Export-Date: 2012-01-03 04:48+0000\n"
"X-Generator: Launchpad (build 14616)\n"
#. module: account
#: code:addons/account/account_move_line.py:1199
@@ -90,7 +90,7 @@ msgstr ""
#: view:account.invoice.report:0
#: view:analytic.entries.report:0
msgid "last month"
msgstr ""
msgstr "Le mois dernier"
#. module: account
#: model:process.transition,name:account.process_transition_supplierreconcilepaid0
@@ -326,7 +326,7 @@ msgstr ""
#. module: account
#: report:account.overdue:0
msgid "Sub-Total :"
msgstr "Sous-Total :"
msgstr "Sous-total :"
#. module: account
#: model:ir.actions.act_window,name:account.action_account_use_model_create_entry
@@ -865,7 +865,7 @@ msgstr "Délettrage"
#. module: account
#: view:account.payment.term.line:0
msgid "At 14 net days 2 percent, remaining amount at 30 days end of month."
msgstr ""
msgstr "2% à 15 jours net, le solde à 30 jours fin de mois"
#. module: account
#: model:ir.model,name:account.model_account_analytic_journal_report
@@ -881,7 +881,7 @@ msgstr "Rapprochement automatique"
#: code:addons/account/account_move_line.py:1250
#, python-format
msgid "No period found or period given is ambigous."
msgstr ""
msgstr "Période fiscale ambigüe ou introuvable."
#. module: account
#: model:ir.actions.act_window,help:account.action_account_gain_loss
@@ -1116,7 +1116,7 @@ msgstr ""
#. module: account
#: field:account.report.general.ledger,sortby:0
msgid "Sort by"
msgstr ""
msgstr "Trier par"
#. module: account
#: help:account.fiscalyear.close,fy_id:0
@@ -1391,7 +1391,7 @@ msgstr "Sélectionnez un début et une fin de période"
#. module: account
#: model:account.financial.report,name:account.account_financial_report_profitandloss0
msgid "Profit and Loss"
msgstr ""
msgstr "Pertes et profits"
#. module: account
#: model:ir.model,name:account.model_account_account_template
@@ -1520,7 +1520,7 @@ msgstr "Sauter l'état \"Brouillon\" pour les écritures manuelles"
#: view:account.invoice.report:0
#: field:account.invoice.report,price_total:0
msgid "Total Without Tax"
msgstr "Total hors taxe"
msgstr "Total HT"
#. module: account
#: model:ir.actions.act_window,help:account.action_move_journal_line
@@ -1744,7 +1744,7 @@ msgstr "Partenaire inconnu"
#. module: account
#: field:account.tax.code,sum:0
msgid "Year Sum"
msgstr "Montant total de l'exercice"
msgstr "Total de l'exercice"
#. module: account
#: code:addons/account/account_invoice.py:1424
@@ -1866,7 +1866,7 @@ msgstr "Impossible de créer une ligne d'écriture sur un compte clôturé"
#: code:addons/account/account.py:428
#, python-format
msgid "Error!"
msgstr ""
msgstr "Erreur !"
#. module: account
#: sql_constraint:account.move.line:0
@@ -1898,7 +1898,7 @@ msgstr "Écritures par ligne"
#. module: account
#: field:account.vat.declaration,based_on:0
msgid "Based on"
msgstr ""
msgstr "Basée sur"
#. module: account
#: field:account.invoice,move_id:0
@@ -1987,7 +1987,7 @@ msgstr "Définition de la taxe"
#: code:addons/account/account.py:3076
#, python-format
msgid "Deposit"
msgstr ""
msgstr "Dépôt"
#. module: account
#: help:wizard.multi.charts.accounts,seq_journal:0
@@ -2195,7 +2195,7 @@ msgstr ""
#. module: account
#: report:account.invoice:0
msgid "Customer Code"
msgstr ""
msgstr "Code Client"
#. module: account
#: view:account.installer:0
@@ -2773,7 +2773,7 @@ msgstr "Écritures comptables"
#. module: account
#: field:account.invoice,reference_type:0
msgid "Communication Type"
msgstr ""
msgstr "Type de communication"
#. module: account
#: field:account.invoice.line,discount:0
@@ -3116,7 +3116,7 @@ msgstr "Toujours"
#: view:account.invoice.report:0
#: view:analytic.entries.report:0
msgid "Month-1"
msgstr ""
msgstr "Mois -1"
#. module: account
#: view:account.analytic.line:0
@@ -7303,7 +7303,7 @@ msgstr ""
#. module: account
#: help:res.partner,credit:0
msgid "Total amount this customer owes you."
msgstr "Montant Total que ce client vous doit."
msgstr "Montant total que ce client vous doit."
#. module: account
#: model:ir.model,name:account.model_ir_sequence
@@ -7626,7 +7626,7 @@ msgstr "Taxe"
#: code:addons/account/account_move_line.py:1276
#, python-format
msgid "No piece number !"
msgstr "Pas de Numéro de Pièce !"
msgstr "Pas de numéro de pièce !"
#. module: account
#: view:account.financial.report:0
@@ -7898,7 +7898,7 @@ msgstr "Rapports officiels"
#. module: account
#: field:account.tax.code,sum_period:0
msgid "Period Sum"
msgstr "Montant total de la période"
msgstr "Total de la période"
#. module: account
#: help:account.tax,sequence:0
@@ -9645,7 +9645,7 @@ msgstr "Non-rapprochée"
#: code:addons/account/account_invoice.py:824
#, python-format
msgid "Bad total !"
msgstr "Mauvais montant !"
msgstr "Total incorrect !"
#. module: account
#: field:account.journal,sequence_id:0
@@ -10176,7 +10176,7 @@ msgid ""
"reconciliation process today. The current partner is counted as already "
"processed."
msgstr ""
"Ce nombre représente le nombre total de partenaires qui sont passés au "
"Ce chiffre représente le nombre total de partenaires qui sont passés au "
"travers du processus de rapprochement aujourd'hui. Le partenaire actuel est "
"considéré comme déjà traité."
@@ -10221,7 +10221,7 @@ msgstr "Lignes de facture"
#. module: account
#: field:account.chart,period_to:0
msgid "End period"
msgstr "Clôturer la période"
msgstr "Fin de période"
#. module: account
#: sql_constraint:account.journal:0
@@ -10848,9 +10848,9 @@ msgstr ""
"Créer et gérer les comptes dont vous avez besoin pour enregistrer les pièces "
"comptables. Un compte fait partie du grand livre permettant à votre société "
"d'enregistrer tout type de transaction de débit ou de crédit. Les sociétés "
"présentent leurs comptes annuels en 2 parties : le bilan et le rapport des "
"comptes de résultat. Les comptes annuels d'une société sont légalement tenus "
"de mentionner un minimum d'information. Ils doivent être certifiés par un "
"présentent leurs comptes annuels en 2 parties : le bilan et le compte de "
"résultat. Les comptes annuels d'une société sont légalement tenus de "
"mentionner un minimum d'informations. Ils doivent être certifiés par un "
"auditeur externe annuellement."
#. module: account
+1 -1
View File
@@ -57,7 +57,7 @@
<field name="type">tree</field>
<field name="field_parent">child_complete_ids</field>
<field name="arch" type="xml">
<tree colors="red:state=='pending';grey:state in ('close','cancelled');blue:type=='view'" string="Analytic account" toolbar="1">
<tree colors="blue:state=='pending';grey:state in ('close','cancelled');blue:type=='view'" string="Analytic account" toolbar="1">
<field name="name"/>
<field name="code" groups="base.group_extended"/>
<field name="quantity"/>
+15 -5
View File
@@ -1,13 +1,23 @@
-
In order to test close period wizard I create a period then close it and checked it's state
In order to test close period wizard I first create a dummy fiscal year in the past to avoid conflicts related to closed periods
-
!record {model: account.fiscalyear, id: data_fiscalyear_minus1}:
company_id: base.main_company
date_start: !eval "'%s-01-01' %(datetime.now().year-1)"
date_stop: !eval "'%s-12-31' %(datetime.now().year-1)"
name: !eval "'Fiscal Year X %s' %(datetime.now().year-1)"
code: !eval "'FY%s' %(datetime.now().year-1)"
-
I create a period then close it and checked it's state
-
!record {model: account.period, id: account_period_jan0}:
company_id: base.main_company
date_start: !eval "'%s-01-01' %(datetime.now().year)"
date_stop: !eval "'%s-01-31' %(datetime.now().year)"
fiscalyear_id: account.data_fiscalyear
name: !eval "'Jan-%s' %(datetime.now().year)"
date_start: !eval "'%s-01-01' %(datetime.now().year-1)"
date_stop: !eval "'%s-01-31' %(datetime.now().year-1)"
fiscalyear_id: data_fiscalyear_minus1
name: !eval "'Jan-%s' %(datetime.now().year-1)"
special: 1
-
+5 -4
View File
@@ -10,7 +10,7 @@
address_invoice_id: base.res_partner_address_8invoice
company_id: 1
account_id: account.a_pay
date_invoice: '2011-06-22'
date_invoice: !eval "'%s' % (time.strftime('%Y-%m-%d'))"
name: selling product
type: 'out_invoice'
invoice_line:
@@ -48,12 +48,13 @@
Then I import a sample EDI document of another customer invoice
-
!python {model: account.invoice}: |
import time
edi_document = {
"__id": "account:b22acf7a-ddcd-11e0-a4db-701a04e25543.random_invoice_763jsms",
"__module": "account",
"__model": "account.invoice",
"__version": [6,1,0],
"internal_number": "SAJ/2011/002",
"internal_number": time.strftime("SAJ/%Y/002"),
"company_address": {
"__id": "base:b22acf7a-ddcd-11e0-a4db-701a04e25543.main_address",
"__module": "base",
@@ -86,7 +87,7 @@
"zip": "1367",
"country_id": ["base:5af1272e-dd26-11e0-b65e-701a04e25543.be", "Belgium"],
},
"date_invoice": "2011-06-22",
"date_invoice": time.strftime('%Y-%m-%d'),
"name": "sample invoice",
"tax_line": [{
"__id": "account:b22acf7a-ddcd-11e0-a4db-701a04e25543.account_invoice_tax-4g4EutbiEMVl",
@@ -128,7 +129,7 @@
assert bank_info.acc_number == "Sample bank: 123465789-156113", 'Expected "Sample bank: 123465789-156113", got %s' % bank_info.acc_number
assert invoice_new.partner_id.supplier, 'Imported Partner is not marked as supplier'
assert invoice_new.reference == "SAJ/2011/002", "internal number is not stored in reference"
assert invoice_new.reference == time.strftime("SAJ/%Y/002"), "internal number is not stored in reference"
assert invoice_new.reference_type == 'none', "reference type is not set to 'none'"
assert invoice_new.internal_number == False, "internal number is not reset"
assert invoice_new.journal_id.id, "journal id is not selected"
@@ -380,7 +380,7 @@ class account_invoice(osv.osv):
res['analytics_id'] = x.get('analytics_id', False)
return res
def _get_analytic_lines(self, cr, uid, id):
def _get_analytic_lines(self, cr, uid, id, context=None):
inv = self.browse(cr, uid, [id])[0]
cur_obj = self.pool.get('res.currency')
invoice_line_obj = self.pool.get('account.invoice.line')
@@ -391,7 +391,7 @@ class account_invoice(osv.osv):
else:
sign = -1
iml = invoice_line_obj.move_line_get(cr, uid, inv.id)
iml = invoice_line_obj.move_line_get(cr, uid, inv.id, context=context)
for il in iml:
if il.get('analytics_id', False):
@@ -400,8 +400,10 @@ class account_invoice(osv.osv):
ref = inv.reference
else:
ref = self._convert_ref(cr, uid, inv.number)
obj_move_line = acct_ins_obj.browse(cr, uid, il['analytics_id'])
amount_calc = cur_obj.compute(cr, uid, inv.currency_id.id, company_currency, il['price'], context={'date': inv.date_invoice}) * sign
obj_move_line = acct_ins_obj.browse(cr, uid, il['analytics_id'], context=context)
ctx = context.copy()
ctx.update({'date': inv.date_invoice})
amount_calc = cur_obj.compute(cr, uid, inv.currency_id.id, company_currency, il['price'], context=ctx) * sign
qty = il['quantity']
il['analytic_lines'] = []
for line2 in obj_move_line.account_ids:
@@ -81,8 +81,6 @@
<field name="globalisation_id" string="Glob. Id"/>
<field name="globalisation_amount" string="Glob. Am."/>
<field name="state"/>
<field name="write_date"/>
<field name="write_uid"/>
</tree>
</field>
</record>
@@ -106,8 +104,6 @@
<field name="amount"/>
<field name="globalisation_id"/>
<field name="sequence" readonly="0"/>
<field name="write_date"/>
<field name="write_uid"/>
<field name="state"/>
<separator colspan="4" string="Notes"/>
<field colspan="4" name="note" nolabel="1"/>
@@ -140,8 +136,6 @@
<group string="Extended Filters..." expand="0">
<field name="account_id"/>
<field name="partner_id"/>
<field name="write_date"/>
<field name="write_uid"/>
<field name="ref"/>
<field name="note"/>
</group>
+1 -1
View File
@@ -448,7 +448,7 @@ class account_voucher(osv.osv):
default['value']['account_id'] = account_id
default['value']['type'] = ttype or tr_type
vals = self.onchange_journal(cr, uid, ids, journal_id, line_ids, tax_id, partner_id, company_id, context)
vals = self.onchange_journal(cr, uid, ids, journal_id, line_ids, tax_id, partner_id, time.strftime('%Y-%m-%d'), price, ttype, company_id, context)
default['value'].update(vals.get('value'))
return default
@@ -74,7 +74,7 @@
<field name="arch" type="xml">
<form string="Bill Payment">
<group col="6" colspan="4">
<field name="partner_id" required="1" on_change="onchange_partner_id(partner_id, journal_id, amount, currency_id, type, date, context)" context="{'invoice_currency':currency_id}" string="Supplier"/>
<field name="partner_id" required="1" on_change="onchange_partner_id(partner_id, journal_id, amount, currency_id, type, date, context)" string="Supplier" context="{'default_customer': 0, 'search_default_supplier': 1, 'default_supplier': 1, 'invoice_currency': currency_id}" />
<field name="amount" on_change="onchange_amount(amount, payment_rate, partner_id, journal_id, currency_id, type, date, payment_rate_currency_id, company_id, context)"/>
<field name="journal_id"
domain="[('type','in',['bank', 'cash'])]"
@@ -145,7 +145,7 @@
<field name="arch" type="xml">
<form string="Bill Payment">
<group col="6" colspan="4">
<field name="partner_id" domain="[('supplier','=',True)]" required="1" invisible="context.get('line_type', False)" on_change="onchange_partner_id(partner_id, journal_id, amount, currency_id, type, date, context)" context="{'invoice_currency':currency_id}" string="Supplier"/>
<field name="partner_id" required="1" invisible="context.get('line_type', False)" on_change="onchange_partner_id(partner_id, journal_id, amount, currency_id, type, date, context)" context="{'invoice_currency':currency_id, 'default_customer': 0, 'search_default_supplier': 1, 'default_supplier': 1}" string="Supplier"/>
<field name="amount" invisible="context.get('line_type', False)" on_change="onchange_amount(amount, payment_rate, partner_id, journal_id, currency_id, type, date, payment_rate_currency_id, company_id, context)"/>
<field name="journal_id"
domain="[('type','in',['bank', 'cash'])]"
@@ -294,7 +294,7 @@
<field name="arch" type="xml">
<form string="Customer Payment">
<group col="6" colspan="4">
<field name="partner_id" required="1" invisible="context.get('line_type', False)" on_change="onchange_partner_id(partner_id, journal_id, amount, currency_id, type, date, context)" string="Customer"/>
<field name="partner_id" required="1" invisible="context.get('line_type', False)" on_change="onchange_partner_id(partner_id, journal_id, amount, currency_id, type, date, context)" string="Customer" context="{'search_default_customer': 1}"/>
<field name="currency_id" invisible="1"/>
<field name="amount"
invisible="context.get('line_type', False)"
@@ -82,7 +82,7 @@
<field name="arch" type="xml">
<form string="Sales Receipt">
<group col="6" colspan="4">
<field name="partner_id" required="1" on_change="onchange_partner_id(partner_id, journal_id, amount, currency_id, type, date, context)" string="Customer"/>
<field name="partner_id" required="1" on_change="onchange_partner_id(partner_id, journal_id, amount, currency_id, type, date, context)" string="Customer" context="{'search_default_customer': 1}"/>
<field name="date" on_change="onchange_date(date, currency_id, currency_id, amount, company_id, context)"/>
<field name="journal_id" domain="[('type','in',['sale','sale_refund'])]" widget="selection" on_change="onchange_journal(journal_id, line_cr_ids, tax_id, partner_id, date, amount, type, company_id, context)"/>
<field name="number"/>
@@ -209,7 +209,7 @@
<field name="arch" type="xml">
<form string="Supplier Voucher">
<group col="6" colspan="4">
<field name="partner_id" domain="[('supplier','=',True)]" required="1" string="Supplier" on_change="onchange_partner_id(partner_id, journal_id, amount, currency_id, type, date, context)"/>
<field name="partner_id" domain="[('supplier','=',True)]" required="1" string="Supplier" on_change="onchange_partner_id(partner_id, journal_id, amount, currency_id, type, date, context)" context="{'default_customer': 0, 'search_default_supplier': 1, 'default_supplier': 1}" />
<field name="date" string="Bill Date" select="1" on_change="onchange_date(date, currency_id, currency_id, amount, company_id, context)"/>
<field name="journal_id" domain="[('type','in',['purchase','purchase_refund'])]" widget="selection" select="1" on_change="onchange_journal(journal_id, line_dr_ids, tax_id, partner_id, date, amount, type, company_id, context)"/>
<field name="number"/>
@@ -276,6 +276,7 @@
<group attrs="{'invisible':['|', ('state','!=','posted'), ('paid','=',True)]}">
<button icon="terp-dolar_ok!" name="%(act_pay_bills)d" context="{'narration':narration, 'title':'Bill Payment', 'type':'payment', 'partner_id': partner_id, 'reference':reference}" type="action" string="Pay Bill" attrs="{'invisible':[('pay_now','=','pay_now')]}"/>
</group>
<field name="pay_now" invisible="1"/>
<button name="action_cancel_draft" type="object" states="cancel" string="Set to Draft" icon="terp-stock_effects-object-colorize"/>
<button name="proforma_voucher" string="Validate" states="draft" icon="gtk-go-forward"/>
</group>
@@ -100,8 +100,8 @@ hr_analytic_timesheet()
class account_invoice(osv.osv):
_inherit = "account.invoice"
def _get_analytic_lines(self, cr, uid, id):
iml = super(account_invoice, self)._get_analytic_lines(cr, uid, id)
def _get_analytic_lines(self, cr, uid, id, context=None):
iml = super(account_invoice, self)._get_analytic_lines(cr, uid, id, context=context)
for il in iml:
if il['account_analytic_id'] and il.get('analytic_lines', False):
@@ -109,10 +109,10 @@ class account_invoice(osv.osv):
journal_id = il['analytic_lines'][0][2]['journal_id']
account_id = il['analytic_lines'][0][2]['account_id']
if journal_id and account_id:
temp = self.pool.get('analytic_journal_rate_grid').search(cr, uid, [('journal_id', '=', journal_id),('account_id', '=', account_id) ])
temp = self.pool.get('analytic_journal_rate_grid').search(cr, uid, [('journal_id', '=', journal_id),('account_id', '=', account_id)], context=context)
if temp:
r = self.pool.get('analytic_journal_rate_grid').browse(cr, uid, temp)[0]
r = self.pool.get('analytic_journal_rate_grid').browse(cr, uid, temp, context=context)[0]
il['analytic_lines'][0][2]['to_invoice'] = r.rate_id.id
return iml
+4
View File
@@ -1486,6 +1486,7 @@ rule or repeating pattern of time to exclude from the recurring rule."),
if not isinstance(ids, list):
ids = [ids]
res = False
attendee_obj=self.pool.get('calendar.attendee')
for event_id in ids[:]:
if len(str(event_id).split('-')) == 1:
continue
@@ -1498,6 +1499,9 @@ rule or repeating pattern of time to exclude from the recurring rule."),
exdate = (data['exdate'] and (data['exdate'] + ',') or '') + date_new
self.write(cr, uid, [real_event_id], {'exdate': exdate})
ids.remove(event_id)
for event in self.browse(cr, uid, ids, context=context):
if event.attendee_ids:
attendee_obj.unlink(cr, uid, [x.id for x in event.attendee_ids], context=context)
res = super(calendar_event, self).unlink(cr, uid, ids, context=context)
self.pool.get('res.alarm').do_alarm_unlink(cr, uid, ids, self._name)
+32
View File
@@ -0,0 +1,32 @@
# Romanian translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-11 11:14+0000\n"
"PO-Revision-Date: 2012-01-03 16:01+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Romanian <ro@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-01-04 04:48+0000\n"
"X-Generator: Launchpad (build 14616)\n"
#. module: base_tools
#: model:ir.module.module,shortdesc:base_tools.module_meta_information
msgid "Common base for tools modules"
msgstr "Baza comuna pentru modulele unelte"
#. module: base_tools
#: model:ir.module.module,description:base_tools.module_meta_information
msgid ""
"\n"
" "
msgstr ""
"****\n"
" "
+2
View File
@@ -229,9 +229,11 @@
<field name="arch" type="xml">
<tree string="Meetings"
colors="red:state=='open';black:state in ('draft', 'cancel','done','pending')">
<field name="state" invisible="1"/>
<field name="name" string="Subject" />
<field name="user_id"/>
<field name="date"/>
<field name="state"/>
<field name="duration" />
<field name="partner_id" string="Partner" />
<field name="location" />
+2 -2
View File
@@ -66,8 +66,8 @@
<field name="view_type">form</field>
<field name="view_mode">tree,calendar</field>
<field name="view_id" ref="crm_case_inbound_phone_tree_view"/>
<field name="domain">[('state','=','done')]</field>
<field name="context" eval="'{\'search_default_section_id\':section_id, \'default_state\':\'done\'}'"/>
<field name="domain">[]</field>
<field name="context" eval="'{\'search_default_section_id\':section_id}'"/>
<field name="search_view_id" ref="crm.view_crm_case_phonecalls_filter"/>
<field name="help">This tool allows you to log your inbound calls on the fly. Each call you get will appear on the partner form to trace every contact you have with a partner. From the phone call form, you can trigger a request for another call, a meeting or an opportunity.</field>
+841
View File
@@ -0,0 +1,841 @@
# Romanian translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-12-22 18:44+0000\n"
"PO-Revision-Date: 2012-01-03 18:58+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Romanian <ro@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-01-04 04:48+0000\n"
"X-Generator: Launchpad (build 14616)\n"
#. module: crm_fundraising
#: field:crm.fundraising,planned_revenue:0
msgid "Planned Revenue"
msgstr "Venituri planificate"
#. module: crm_fundraising
#: field:crm.fundraising.report,nbr:0
msgid "# of Cases"
msgstr "# de Cazuri"
#. module: crm_fundraising
#: view:crm.fundraising:0
#: view:crm.fundraising.report:0
msgid "Group By..."
msgstr "Grupare după..."
#. module: crm_fundraising
#: field:crm.fundraising.report,probability:0
msgid "Avg. Probability"
msgstr "Probabilitatea medie"
#. module: crm_fundraising
#: selection:crm.fundraising.report,month:0
msgid "March"
msgstr "Martie"
#. module: crm_fundraising
#: field:crm.fundraising.report,delay_close:0
msgid "Delay to close"
msgstr "Întârziere la inchidere"
#. module: crm_fundraising
#: field:crm.fundraising,company_id:0
#: view:crm.fundraising.report:0
#: field:crm.fundraising.report,company_id:0
msgid "Company"
msgstr "Companie"
#. module: crm_fundraising
#: model:ir.actions.act_window,name:crm_fundraising.crm_fund_categ_action
msgid "Fundraising Categories"
msgstr "Categorii de strangere de fonduri"
#. module: crm_fundraising
#: field:crm.fundraising,email_cc:0
msgid "Watchers Emails"
msgstr "Email-uri supraveghetori"
#. module: crm_fundraising
#: view:crm.fundraising.report:0
msgid "Cases"
msgstr "Cazuri"
#. module: crm_fundraising
#: selection:crm.fundraising,priority:0
msgid "Highest"
msgstr "Cel mai ridicat (cea mai ridicata)"
#. module: crm_fundraising
#: view:crm.fundraising.report:0
#: field:crm.fundraising.report,day:0
msgid "Day"
msgstr "Zi"
#. module: crm_fundraising
#: view:crm.fundraising:0
msgid "Add Internal Note"
msgstr "Adauga nota interna"
#. module: crm_fundraising
#: field:crm.fundraising,partner_mobile:0
msgid "Mobile"
msgstr "Mobil"
#. module: crm_fundraising
#: view:crm.fundraising:0
msgid "Notes"
msgstr "Note"
#. module: crm_fundraising
#: field:crm.fundraising,message_ids:0
msgid "Messages"
msgstr "Mesaje"
#. module: crm_fundraising
#: view:crm.fundraising.report:0
msgid "My company"
msgstr ""
#. module: crm_fundraising
#: view:crm.fundraising:0
msgid "Amount"
msgstr "Sumă"
#. module: crm_fundraising
#: selection:crm.fundraising,state:0
#: selection:crm.fundraising.report,state:0
msgid "Cancelled"
msgstr "Anulat(ă)"
#. module: crm_fundraising
#: view:crm.fundraising.report:0
#: field:crm.fundraising.report,amount_revenue:0
msgid "Est.Revenue"
msgstr "Venit estimat"
#. module: crm_fundraising
#: view:crm.fundraising:0
msgid "Open Funds"
msgstr ""
#. module: crm_fundraising
#: field:crm.fundraising,ref:0
msgid "Reference"
msgstr "Referinţă"
#. module: crm_fundraising
#: field:crm.fundraising,type_id:0
msgid "Campaign"
msgstr "Campanie"
#. module: crm_fundraising
#: field:crm.fundraising,date_action_next:0
msgid "Next Action"
msgstr "Următoarea acţiune"
#. module: crm_fundraising
#: view:crm.fundraising:0
msgid "Reset to Draft"
msgstr "Resetare ca ciorna"
#. module: crm_fundraising
#: view:crm.fundraising:0
msgid "Extra Info"
msgstr "Informaţii suplimentare"
#. module: crm_fundraising
#: model:ir.model,name:crm_fundraising.model_crm_fundraising
#: model:ir.ui.menu,name:crm_fundraising.menu_config_fundrising
#: model:ir.ui.menu,name:crm_fundraising.menu_crm_case_fund_raise
msgid "Fund Raising"
msgstr "Strângerea de fonduri"
#. module: crm_fundraising
#: view:crm.fundraising:0
#: field:crm.fundraising,partner_id:0
#: field:crm.fundraising.report,partner_id:0
msgid "Partner"
msgstr "Partener"
#. module: crm_fundraising
#: view:crm.fundraising.report:0
msgid "Funds raised in current year"
msgstr ""
#. module: crm_fundraising
#: model:ir.actions.act_window,name:crm_fundraising.action_report_crm_fundraising
#: model:ir.ui.menu,name:crm_fundraising.menu_report_crm_fundraising_tree
msgid "Fundraising Analysis"
msgstr "Analiza Strangere de fonduri"
#. module: crm_fundraising
#: view:crm.fundraising:0
msgid "Misc"
msgstr "Diverse"
#. module: crm_fundraising
#: field:crm.fundraising.report,section_id:0
msgid "Section"
msgstr "Secţiune"
#. module: crm_fundraising
#: view:crm.fundraising:0
#: field:crm.fundraising,priority:0
msgid "Priority"
msgstr "Prioritate"
#. module: crm_fundraising
#: view:crm.fundraising:0
msgid "Send New Email"
msgstr "Trimite un e-mail nou"
#. module: crm_fundraising
#: model:crm.case.categ,name:crm_fundraising.categ_fund1
msgid "Social Rehabilitation And Rural Upliftment"
msgstr "Reabilitare sociala si Ridicare rurala"
#. module: crm_fundraising
#: view:crm.fundraising:0
msgid "Pending Funds"
msgstr ""
#. module: crm_fundraising
#: view:crm.fundraising:0
#: view:crm.fundraising.report:0
msgid "Payment Mode"
msgstr "Modalitate de plată"
#. module: crm_fundraising
#: view:crm.fundraising:0
#: selection:crm.fundraising,state:0
#: view:crm.fundraising.report:0
msgid "New"
msgstr ""
#. module: crm_fundraising
#: field:crm.fundraising,email_from:0
msgid "Email"
msgstr "Email"
#. module: crm_fundraising
#: selection:crm.fundraising,priority:0
msgid "Lowest"
msgstr "Cel mai scazut (cea mai scazuta)"
#. module: crm_fundraising
#: view:crm.fundraising:0
#: view:crm.fundraising.report:0
msgid "My Sales Team(s)"
msgstr ""
#. module: crm_fundraising
#: field:crm.fundraising,create_date:0
msgid "Creation Date"
msgstr "Data creării"
#. module: crm_fundraising
#: field:crm.fundraising,date_deadline:0
msgid "Deadline"
msgstr "Data scadenta"
#. module: crm_fundraising
#: selection:crm.fundraising.report,month:0
msgid "July"
msgstr "Iulie"
#. module: crm_fundraising
#: model:ir.ui.menu,name:crm_fundraising.menu_crm_case_fundraising-act
msgid "Categories"
msgstr "Categorii"
#. module: crm_fundraising
#: field:crm.fundraising,stage_id:0
msgid "Stage"
msgstr "Etapă"
#. module: crm_fundraising
#: view:crm.fundraising:0
msgid "History Information"
msgstr "Istoric Informatii"
#. module: crm_fundraising
#: view:crm.fundraising:0
msgid "Dates"
msgstr "Date"
#. module: crm_fundraising
#: field:crm.fundraising,partner_name2:0
msgid "Employee Email"
msgstr "Email angajat"
#. module: crm_fundraising
#: model:crm.case.categ,name:crm_fundraising.categ_fund2
msgid "Learning And Education"
msgstr "Invatare si educatie"
#. module: crm_fundraising
#: view:crm.fundraising:0
msgid "Contact"
msgstr "Contact"
#. module: crm_fundraising
#: view:crm.fundraising:0
msgid "Funds Form"
msgstr "Fonduri de la"
#. module: crm_fundraising
#: view:crm.fundraising:0
msgid "Fund Description"
msgstr "Descriere fond"
#. module: crm_fundraising
#: help:crm.fundraising.report,delay_close:0
msgid "Number of Days to close the case"
msgstr "Numarul de zile pana la inchiderea (rezolvarea) cazului"
#. module: crm_fundraising
#: view:crm.fundraising.report:0
msgid "Funds raised in current month"
msgstr ""
#. module: crm_fundraising
#: view:crm.fundraising:0
msgid "References"
msgstr "Referințe"
#. module: crm_fundraising
#: view:crm.fundraising.report:0
msgid "Fundraising"
msgstr "Strângere de fonduri"
#. module: crm_fundraising
#: model:ir.actions.act_window,help:crm_fundraising.action_report_crm_fundraising
msgid ""
"Have a general overview of all fund raising activities by sorting them with "
"specific criteria such as the estimated revenue, average success probability "
"and delay to close."
msgstr ""
"Aveti o vedere de ansamblu asupra tuturor activitatilor de stangere de "
"fonduri sortandu-le dupa criterii specifice precum venitul estimat, "
"probabilitatea medie de succes si intarzierea la inchidere."
#. module: crm_fundraising
#: selection:crm.fundraising.report,month:0
msgid "September"
msgstr "Septembrie"
#. module: crm_fundraising
#: view:crm.fundraising:0
msgid "Communication"
msgstr "Comunicare"
#. module: crm_fundraising
#: view:crm.fundraising:0
msgid "Funds Tree"
msgstr "Arbore fonduri"
#. module: crm_fundraising
#: view:crm.fundraising.report:0
#: field:crm.fundraising.report,month:0
msgid "Month"
msgstr "Luna"
#. module: crm_fundraising
#: view:crm.fundraising:0
msgid "Escalate"
msgstr "Promovează"
#. module: crm_fundraising
#: field:crm.fundraising,write_date:0
msgid "Update Date"
msgstr "Data actualizarii"
#. module: crm_fundraising
#: model:crm.case.resource.type,name:crm_fundraising.type_fund3
msgid "Credit Card"
msgstr "Card de credit"
#. module: crm_fundraising
#: model:ir.actions.act_window,name:crm_fundraising.crm_fundraising_stage_act
msgid "Fundraising Stages"
msgstr "Etapele strangerii de fonduri"
#. module: crm_fundraising
#: view:crm.fundraising.report:0
msgid "Salesman"
msgstr "Agent comercial"
#. module: crm_fundraising
#: field:crm.fundraising,ref2:0
msgid "Reference 2"
msgstr "Referinta 2"
#. module: crm_fundraising
#: view:crm.fundraising.report:0
msgid "Funds raised in last month"
msgstr ""
#. module: crm_fundraising
#: view:crm.fundraising:0
#: field:crm.fundraising,categ_id:0
#: view:crm.fundraising.report:0
#: field:crm.fundraising.report,categ_id:0
msgid "Category"
msgstr "Categorie"
#. module: crm_fundraising
#: model:crm.case.categ,name:crm_fundraising.categ_fund4
msgid "Arts And Culture"
msgstr "Arta si Cultura"
#. module: crm_fundraising
#: field:crm.fundraising,planned_cost:0
#: view:crm.fundraising.report:0
#: field:crm.fundraising.report,planned_cost:0
msgid "Planned Costs"
msgstr "Costuri planificate"
#. module: crm_fundraising
#: help:crm.fundraising,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 ""
"Aceste adrese de email vor fi adaugate in campul CC al tuturor email-urilor "
"primite si trimise pentru aceasta inregistrare inainte de a fi trimise. "
"Despartiti adresele de mail multiple cu o virgula"
#. module: crm_fundraising
#: selection:crm.fundraising.report,state:0
msgid "Draft"
msgstr "Ciornă"
#. module: crm_fundraising
#: selection:crm.fundraising,priority:0
msgid "Low"
msgstr "Scăzut(ă)"
#. module: crm_fundraising
#: field:crm.fundraising,date_closed:0
#: selection:crm.fundraising,state:0
#: selection:crm.fundraising.report,state:0
msgid "Closed"
msgstr "Închis"
#. module: crm_fundraising
#: view:crm.fundraising:0
#: selection:crm.fundraising,state:0
#: view:crm.fundraising.report:0
#: selection:crm.fundraising.report,state:0
msgid "Pending"
msgstr "În așteptare"
#. module: crm_fundraising
#: view:crm.fundraising:0
msgid "Communication & History"
msgstr "Comunicare & Istoric"
#. module: crm_fundraising
#: selection:crm.fundraising.report,month:0
msgid "August"
msgstr "August"
#. module: crm_fundraising
#: selection:crm.fundraising,priority:0
msgid "Normal"
msgstr "Normal"
#. module: crm_fundraising
#: view:crm.fundraising:0
msgid "Global CC"
msgstr "CC global"
#. module: crm_fundraising
#: view:crm.fundraising:0
#: model:ir.actions.act_window,name:crm_fundraising.crm_case_category_act_fund_all1
msgid "Funds"
msgstr "Fonduri"
#. module: crm_fundraising
#: selection:crm.fundraising.report,month:0
msgid "June"
msgstr "Iunie"
#. module: crm_fundraising
#: field:crm.fundraising,partner_phone:0
msgid "Phone"
msgstr "Telefon"
#. module: crm_fundraising
#: field:crm.fundraising.report,user_id:0
msgid "User"
msgstr "Utilizator"
#. module: crm_fundraising
#: model:crm.case.resource.type,name:crm_fundraising.type_fund2
msgid "Cheque"
msgstr "Cec"
#. module: crm_fundraising
#: field:crm.fundraising,active:0
msgid "Active"
msgstr "Activ"
#. module: crm_fundraising
#: selection:crm.fundraising.report,month:0
msgid "November"
msgstr "Noiembrie"
#. module: crm_fundraising
#: view:crm.fundraising.report:0
msgid "Extended Filters..."
msgstr "Filtre extinse..."
#. module: crm_fundraising
#: view:crm.fundraising.report:0
msgid "Search"
msgstr "Căutare"
#. module: crm_fundraising
#: selection:crm.fundraising.report,month:0
msgid "October"
msgstr "Octombrie"
#. module: crm_fundraising
#: selection:crm.fundraising.report,month:0
msgid "January"
msgstr "Ianuarie"
#. module: crm_fundraising
#: view:crm.fundraising.report:0
msgid "#Fundraising"
msgstr "#Strangere de fonduri"
#. module: crm_fundraising
#: model:ir.actions.act_window,help:crm_fundraising.crm_fund_categ_action
msgid ""
"Manage and define the fund raising categories you want to be maintained in "
"the system."
msgstr ""
"Gestionati si definiti categoriile strangerii de fonduri care doriti sa "
"ramana in sistem."
#. module: crm_fundraising
#: help:crm.fundraising,email_from:0
msgid "These people will receive email."
msgstr "Aceste persoane vor primi e-mail."
#. module: crm_fundraising
#: view:crm.fundraising:0
msgid "Fund Category"
msgstr ""
#. module: crm_fundraising
#: field:crm.fundraising,date:0
msgid "Date"
msgstr "Dată"
#. module: crm_fundraising
#: model:crm.case.categ,name:crm_fundraising.categ_fund3
msgid "Healthcare"
msgstr "Servicii medicale"
#. module: crm_fundraising
#: view:crm.fundraising:0
msgid "History"
msgstr "Istoric"
#. module: crm_fundraising
#: field:crm.fundraising,partner_address_id:0
msgid "Partner Contact"
msgstr "Contact partener"
#. module: crm_fundraising
#: view:crm.fundraising.report:0
msgid "Month of fundraising"
msgstr ""
#. module: crm_fundraising
#: view:crm.fundraising:0
msgid "Estimates"
msgstr "Estimări"
#. module: crm_fundraising
#: view:crm.fundraising:0
#: field:crm.fundraising,state:0
#: view:crm.fundraising.report:0
#: field:crm.fundraising.report,state:0
msgid "State"
msgstr "Stare"
#. module: crm_fundraising
#: view:crm.fundraising:0
msgid "Unassigned"
msgstr ""
#. module: crm_fundraising
#: view:crm.fundraising:0
#: view:crm.fundraising.report:0
msgid "Done"
msgstr "Efectuat"
#. module: crm_fundraising
#: selection:crm.fundraising.report,month:0
msgid "December"
msgstr "Decembrie"
#. module: crm_fundraising
#: view:crm.fundraising:0
#: view:crm.fundraising.report:0
msgid "Cancel"
msgstr "Anulează"
#. module: crm_fundraising
#: view:crm.fundraising:0
#: view:crm.fundraising.report:0
#: selection:crm.fundraising.report,state:0
msgid "Open"
msgstr "Deschide"
#. module: crm_fundraising
#: selection:crm.fundraising,state:0
msgid "In Progress"
msgstr ""
#. module: crm_fundraising
#: model:ir.actions.act_window,help:crm_fundraising.crm_case_category_act_fund_all1
msgid ""
"If you need to collect money for your organization or a campaign, Fund "
"Raising allows you to track all your fund raising activities. In the search "
"list, filter by funds description, email, history and probability of success."
msgstr ""
"Daca trebuie sa strangeti bani pentru organizatia dumneavoastra sau pentru o "
"campanie, Strangerea de fonduri va permite sa tineti evidenta tuturor "
"activitatilor dumneavoastra de strangere de fonduri. In lista de cautare, "
"filtrati dupa descrierea fondurilor, emai, istoric si probabilitatea de "
"succes."
#. module: crm_fundraising
#: view:crm.fundraising:0
#: field:crm.fundraising,user_id:0
msgid "Responsible"
msgstr "Responsabil"
#. module: crm_fundraising
#: help:crm.fundraising,section_id:0
msgid ""
"Sales team to which Case belongs to. Define Responsible user and Email "
"account for mail gateway."
msgstr ""
"Echipa de vanzari careia ii apartine cazul. Definiti Utilizatorul "
"responsabil si contul de email pentru mail gateway."
#. module: crm_fundraising
#: model:ir.model,name:crm_fundraising.model_crm_fundraising_report
msgid "CRM Fundraising Report"
msgstr "Raport Strangere de Fonduri MRC"
#. module: crm_fundraising
#: view:crm.fundraising:0
msgid "Reply"
msgstr "Răspuns"
#. module: crm_fundraising
#: view:crm.fundraising.report:0
msgid "Date of fundraising"
msgstr ""
#. module: crm_fundraising
#: view:crm.fundraising.report:0
#: field:crm.fundraising.report,amount_revenue_prob:0
msgid "Est. Rev*Prob."
msgstr "Venit Estimat*Probabilitate"
#. module: crm_fundraising
#: field:crm.fundraising.report,type_id:0
msgid "Fundraising Type"
msgstr "Tipul Strangerii de fonduri"
#. module: crm_fundraising
#: view:crm.fundraising:0
msgid "New Funds"
msgstr ""
#. module: crm_fundraising
#: model:ir.actions.act_window,help:crm_fundraising.crm_fundraising_stage_act
msgid ""
"Create and manage fund raising activity categories you want to be maintained "
"in the system."
msgstr ""
"Creati si gestionati categoriile activitatii de stranere de fonduri care "
"doriti sa ramana in sistem."
#. module: crm_fundraising
#: field:crm.fundraising,description:0
msgid "Description"
msgstr "Descriere"
#. module: crm_fundraising
#: selection:crm.fundraising.report,month:0
msgid "May"
msgstr "Mai"
#. module: crm_fundraising
#: field:crm.fundraising,probability:0
msgid "Probability (%)"
msgstr "Probabilitate (%)"
#. module: crm_fundraising
#: field:crm.fundraising,partner_name:0
msgid "Employee's Name"
msgstr "Numele angajatului"
#. module: crm_fundraising
#: help:crm.fundraising,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 ""
"Starea este setata pe 'Ciorna', atunci cand este creat un caz. "
" \n"
"Daca cazul este in desfasurare, starea este setata pe 'Deschis'. "
" \n"
"Atunci cand cazul este incheiat, starea este setata pe 'Efectuat'. "
" \n"
"Daca cazul trebuie revazut, atunci starea este setata pe 'In asteptare'."
#. module: crm_fundraising
#: selection:crm.fundraising.report,month:0
msgid "February"
msgstr "Februarie"
#. module: crm_fundraising
#: view:crm.fundraising:0
#: field:crm.fundraising,name:0
msgid "Name"
msgstr "Nume"
#. module: crm_fundraising
#: model:crm.case.resource.type,name:crm_fundraising.type_fund1
msgid "Cash"
msgstr "Numerar"
#. module: crm_fundraising
#: view:crm.fundraising:0
msgid "Funds by Categories"
msgstr "Fonduri dupa Categorii"
#. module: crm_fundraising
#: view:crm.fundraising.report:0
msgid "Month-1"
msgstr ""
#. module: crm_fundraising
#: selection:crm.fundraising.report,month:0
msgid "April"
msgstr "Aprilie"
#. module: crm_fundraising
#: view:crm.fundraising.report:0
msgid "My Case(s)"
msgstr "Cazul (cazurile) meu (mele)"
#. module: crm_fundraising
#: model:crm.case.resource.type,name:crm_fundraising.type_fund4
msgid "Demand Draft"
msgstr "Solicitare ciorna"
#. module: crm_fundraising
#: field:crm.fundraising,id:0
msgid "ID"
msgstr "ID"
#. module: crm_fundraising
#: view:crm.fundraising:0
msgid "Search Funds"
msgstr "Cautare Fonduri"
#. module: crm_fundraising
#: selection:crm.fundraising,priority:0
msgid "High"
msgstr "Ridicat(ă)"
#. module: crm_fundraising
#: view:crm.fundraising:0
#: field:crm.fundraising,section_id:0
#: view:crm.fundraising.report:0
msgid "Sales Team"
msgstr "Echipa de vânzări"
#. module: crm_fundraising
#: field:crm.fundraising.report,create_date:0
msgid "Create Date"
msgstr "Creare data"
#. module: crm_fundraising
#: field:crm.fundraising,date_action_last:0
msgid "Last Action"
msgstr "Ultima acțiune"
#. module: crm_fundraising
#: view:crm.fundraising.report:0
#: field:crm.fundraising.report,name:0
msgid "Year"
msgstr "An"
#. module: crm_fundraising
#: field:crm.fundraising,duration:0
msgid "Duration"
msgstr "Durată"
#~ msgid "CRM Fundraising"
#~ msgstr "Strangere de fonduri MRC"
#~ msgid " Month "
#~ msgstr " Luna "
#~ msgid "Channel"
#~ msgstr "Canal"
#~ msgid " Month-1 "
#~ msgstr " Luna-1 "
#~ msgid " Year "
#~ msgstr " An "
#~ msgid "Stages"
#~ msgstr "Etape"
#~ msgid "Stage of case"
#~ msgstr "Etapa cazului"
#~ msgid "Attachments"
#~ msgstr "Atașamente"
#~ msgid "Current"
#~ msgstr "Curent"
#~ msgid "Details"
#~ msgstr "Detalii"
#~ msgid ""
#~ "The channels represent the different communication modes available with the "
#~ "customer."
#~ msgstr ""
#~ "Canalele reprezinta diferitele moduri disponibile de comunicare cu clientul."
+2 -2
View File
@@ -103,7 +103,7 @@ class delivery_carrier(osv.osv):
grid_line_pool = self.pool.get('delivery.grid.line')
grid_pool = self.pool.get('delivery.grid')
for record in self.browse(cr, uid, ids, context=context):
grid_id = grid_pool.search(cr, uid, [('carrier_id', '=', record.id),('sequence','=',9999)], context=context)
grid_id = grid_pool.search(cr, uid, [('carrier_id', '=', record.id)], context=context)
if grid_id and not (record.normal_price or record.free_if_more_than):
grid_pool.unlink(cr, uid, grid_id, context=context)
@@ -115,7 +115,7 @@ class delivery_carrier(osv.osv):
record_data = {
'name': record.name,
'carrier_id': record.id,
'sequence': 9999,
'sequence': 10,
}
new_grid_id = grid_pool.create(cr, uid, record_data, context=context)
grid_id = [new_grid_id]
+142
View File
@@ -0,0 +1,142 @@
# Romanian translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-12-22 18:44+0000\n"
"PO-Revision-Date: 2012-01-04 13:13+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Romanian <ro@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-01-05 05:37+0000\n"
"X-Generator: Launchpad (build 14625)\n"
#. module: document_ftp
#: model:ir.model,name:document_ftp.model_document_ftp_configuration
msgid "Auto Directory Configuration"
msgstr "Configurare auto Director"
#. module: document_ftp
#: view:document.ftp.configuration:0
msgid ""
"Indicate the network address on which your OpenERP server should be "
"reachable for end-users. This depends on your network topology and "
"configuration, and will only affect the links displayed to the users. The "
"format is HOST:PORT and the default host (localhost) is only suitable for "
"access from the server machine itself.."
msgstr ""
"Indica adresa retelei in care serverul OpenERP ar trebui sa fie accesibil "
"utilizatorilor finali. Aceasta depinde de topologia si configurarea retelei "
"dumneavoastra, si va afecta doar link-urile afisate utilizatorilor. Formatul "
"este HOST:PORT, iar gazda predenifinta (localhost) (gazda locala) este "
"potrivita doar pentru accesul de la server.."
#. module: document_ftp
#: model:ir.actions.url,name:document_ftp.action_document_browse
msgid "Browse Files"
msgstr "Răsfoiește fișiere"
#. module: document_ftp
#: field:document.ftp.configuration,config_logo:0
msgid "Image"
msgstr "Imagine"
#. module: document_ftp
#: field:document.ftp.configuration,host:0
msgid "Address"
msgstr "Adresă"
#. module: document_ftp
#: field:document.ftp.browse,url:0
msgid "FTP Server"
msgstr "Server FTP"
#. module: document_ftp
#: model:ir.actions.act_window,name:document_ftp.action_config_auto_directory
msgid "FTP Server Configuration"
msgstr "Configurare Server FTP"
#. module: document_ftp
#: view:document.ftp.browse:0
msgid "_Browse"
msgstr "_Răsfoiește"
#. module: document_ftp
#: help:document.ftp.configuration,host:0
msgid ""
"Server address or IP and port to which users should connect to for DMS access"
msgstr ""
"Adresa serverului sau IP si portul la care utilizatorii ar trebui sa se "
"conecteze pentru acces DMS"
#. module: document_ftp
#: model:ir.ui.menu,name:document_ftp.menu_document_browse
msgid "Shared Repository (FTP)"
msgstr "Depozit comun"
#. module: document_ftp
#: view:document.ftp.browse:0
msgid "_Cancel"
msgstr "_Anulează"
#. module: document_ftp
#: view:document.ftp.configuration:0
msgid "Configure FTP Server"
msgstr "Configurare Server FTP"
#. module: document_ftp
#: view:document.ftp.configuration:0
msgid "title"
msgstr "titlu"
#. module: document_ftp
#: model:ir.model,name:document_ftp.model_document_ftp_browse
msgid "Document FTP Browse"
msgstr "Rasfoire document FTP"
#. module: document_ftp
#: view:document.ftp.configuration:0
msgid "Knowledge Application Configuration"
msgstr "Cunostinte configurare aplicatie"
#. module: document_ftp
#: model:ir.actions.act_window,name:document_ftp.action_ftp_browse
msgid "Document Browse"
msgstr "Rasfoire document"
#. module: document_ftp
#: view:document.ftp.browse:0
msgid "Browse Document"
msgstr "Rasfoieste dcoumentul"
#. module: document_ftp
#: view:document.ftp.configuration:0
msgid "res_config_contents"
msgstr "res_config_contents"
#~ msgid ""
#~ "This is a support FTP Interface with document management system.\n"
#~ " With this module you would not only be able to access documents through "
#~ "OpenERP\n"
#~ " but you would also be able to connect with them through the file system "
#~ "using the\n"
#~ " FTP client.\n"
#~ msgstr ""
#~ "Aceasta este o Interfata FTP suport cu sistemul managementului "
#~ "documentelor.\n"
#~ " Cu acest modul veti putea nu doar sa accesati documente prin OpenERP, "
#~ "ci\n"
#~ " va veti putea si conecta la ele prin sistemul de fisiere folosind\n"
#~ " clientul FTP.\n"
#~ msgid "Configuration Progress"
#~ msgstr "Progres configurare"
#~ msgid "Integrated FTP Server with Document Management System"
#~ msgstr "Server FTP integrat cu Sistemul Managementului Documentelor"
+206
View File
@@ -0,0 +1,206 @@
# Romanian translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-12-22 18:44+0000\n"
"PO-Revision-Date: 2012-01-04 14:42+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Romanian <ro@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-01-05 05:37+0000\n"
"X-Generator: Launchpad (build 14625)\n"
#. module: document_webdav
#: field:document.webdav.dir.property,create_date:0
#: field:document.webdav.file.property,create_date:0
msgid "Date Created"
msgstr "Data creată"
#. module: document_webdav
#: model:ir.ui.menu,name:document_webdav.menu_document_props
msgid "Documents"
msgstr ""
#. module: document_webdav
#: constraint:document.directory:0
msgid "Error! You can not create recursive Directories."
msgstr "Eroare! Nu puteti crea Directoare recursive."
#. module: document_webdav
#: view:document.webdav.dir.property:0
#: view:document.webdav.file.property:0
msgid "Search Document properties"
msgstr "Cautare Proprietati documente"
#. module: document_webdav
#: view:document.webdav.dir.property:0
#: field:document.webdav.dir.property,namespace:0
#: view:document.webdav.file.property:0
#: field:document.webdav.file.property,namespace:0
msgid "Namespace"
msgstr "Spațiu de nume"
#. module: document_webdav
#: field:document.directory,dav_prop_ids:0
msgid "DAV properties"
msgstr "Proprietati DAV"
#. module: document_webdav
#: model:ir.model,name:document_webdav.model_document_webdav_file_property
msgid "document.webdav.file.property"
msgstr "document.webdav.file.property (document.webdav.fisier.proprietate)"
#. module: document_webdav
#: view:document.webdav.dir.property:0
#: view:document.webdav.file.property:0
msgid "Group By..."
msgstr "Grupează după..."
#. module: document_webdav
#: view:document.directory:0
msgid "These properties will be added to WebDAV requests"
msgstr "Aceste proprietati vor fi adaugate cererilor WebDAV"
#. module: document_webdav
#: model:ir.actions.act_window,name:document_webdav.action_file_props_form
msgid "DAV Properties for Documents"
msgstr ""
#. module: document_webdav
#: code:addons/document_webdav/webdav.py:37
#, python-format
msgid "PyWebDAV Import Error!"
msgstr "Eroare Import PyWebDAV!"
#. module: document_webdav
#: view:document.webdav.file.property:0
#: field:document.webdav.file.property,file_id:0
msgid "Document"
msgstr "Document"
#. module: document_webdav
#: model:ir.ui.menu,name:document_webdav.menu_folder_props
msgid "Folders"
msgstr ""
#. module: document_webdav
#: sql_constraint:document.directory:0
msgid "Directory cannot be parent of itself!"
msgstr "Directorul nu poate fi parinte lui insusi"
#. module: document_webdav
#: view:document.directory:0
msgid "Dynamic context"
msgstr "Context dinamic"
#. module: document_webdav
#: view:document.directory:0
msgid "WebDAV properties"
msgstr "Proprietari WebDAV"
#. module: document_webdav
#: sql_constraint:document.directory:0
msgid "The directory name must be unique !"
msgstr "Numele directorului trebuie sa fie unic !"
#. module: document_webdav
#: code:addons/document_webdav/webdav.py:37
#, python-format
msgid ""
"Please install PyWebDAV from "
"http://code.google.com/p/pywebdav/downloads/detail?name=PyWebDAV-"
"0.9.4.tar.gz&can=2&q=/"
msgstr ""
"Va rugam sa instalati PyWebDAV de la "
"http://code.google.com/p/pywebdav/downloads/detail?name=PyWebDAV-"
"0.9.4.tar.gz&can=2&q=/"
#. module: document_webdav
#: model:ir.actions.act_window,name:document_webdav.action_dir_props_form
msgid "DAV Properties for Folders"
msgstr ""
#. module: document_webdav
#: view:document.directory:0
#: view:document.webdav.dir.property:0
#: view:document.webdav.file.property:0
msgid "Properties"
msgstr "Proprietăți"
#. module: document_webdav
#: field:document.webdav.dir.property,name:0
#: field:document.webdav.file.property,name:0
msgid "Name"
msgstr "Nume"
#. module: document_webdav
#: model:ir.model,name:document_webdav.model_document_webdav_dir_property
msgid "document.webdav.dir.property"
msgstr "document.webdav.dir.property"
#. module: document_webdav
#: field:document.webdav.dir.property,value:0
#: field:document.webdav.file.property,value:0
msgid "Value"
msgstr "Valoare"
#. module: document_webdav
#: field:document.webdav.dir.property,dir_id:0
#: model:ir.model,name:document_webdav.model_document_directory
msgid "Directory"
msgstr "Director"
#. module: document_webdav
#: field:document.webdav.dir.property,write_uid:0
#: field:document.webdav.file.property,write_uid:0
msgid "Last Modification User"
msgstr "Utilizatorul ultimei modificari"
#. module: document_webdav
#: view:document.webdav.dir.property:0
msgid "Dir"
msgstr "Director"
#. module: document_webdav
#: field:document.webdav.dir.property,write_date:0
#: field:document.webdav.file.property,write_date:0
msgid "Date Modified"
msgstr "Dată modificare"
#. module: document_webdav
#: field:document.webdav.dir.property,create_uid:0
#: field:document.webdav.file.property,create_uid:0
msgid "Creator"
msgstr "Creator"
#. module: document_webdav
#: model:ir.ui.menu,name:document_webdav.menu_properties
msgid "DAV Properties"
msgstr ""
#. module: document_webdav
#: sql_constraint:document.directory:0
msgid "Directory must have a parent or a storage"
msgstr "Directorul trebuie sa aiba un parinte sau o arhiva"
#. module: document_webdav
#: field:document.webdav.dir.property,do_subst:0
#: field:document.webdav.file.property,do_subst:0
msgid "Substitute"
msgstr "Inlocuire"
#~ msgid "DAV properties for documents"
#~ msgstr "Proprietati DAV pentru documente"
#~ msgid "DAV properties for folders"
#~ msgstr "Proprietăți DAV pentru fisiere"
#~ msgid "WebDAV server for Document Management"
#~ msgstr "Serverul WebDAV pentru Managementul documentelor"
+2 -2
View File
@@ -100,11 +100,11 @@
</record>
<menuitem
parent="base.next_id_15"
parent="base.menu_email"
id="menu_action_fetchmail_server_tree"
action="action_email_server_tree"
name="Incoming Mail Servers"
sequence="40"
sequence="14"
/>
<record model="ir.ui.view" id="email_message_tree_view">
+101 -66
View File
@@ -8,14 +8,15 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-12-23 09:54+0000\n"
"PO-Revision-Date: 2010-03-09 04:16+0000\n"
"Last-Translator: Cristian Salamea (Gnuthink) <ovnicraft@gmail.com>\n"
"PO-Revision-Date: 2012-01-03 02:55+0000\n"
"Last-Translator: Christopher Ormaza - (Ecuadorenlinea.net) "
"<chris.ormaza@gmail.com>\n"
"Language-Team: Spanish (Ecuador) <es_EC@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2011-12-24 05:54+0000\n"
"X-Generator: Launchpad (build 14560)\n"
"X-Launchpad-Export-Date: 2012-01-04 04:48+0000\n"
"X-Generator: Launchpad (build 14616)\n"
#. module: hr
#: model:process.node,name:hr.process_node_openerpuser0
@@ -26,7 +27,7 @@ msgstr "Usuario OpenERP"
#: view:hr.job:0
#: field:hr.job,requirements:0
msgid "Requirements"
msgstr ""
msgstr "Requisitos"
#. module: hr
#: constraint:hr.department:0
@@ -36,7 +37,7 @@ msgstr "Error! No puede crear departamentos recursivos."
#. module: hr
#: model:process.transition,name:hr.process_transition_contactofemployee0
msgid "Link the employee to information"
msgstr ""
msgstr "Enlaza el empleado con la información"
#. module: hr
#: field:hr.employee,sinid:0
@@ -54,12 +55,12 @@ msgstr "Recursos Humanos"
#: view:hr.employee:0
#: view:hr.job:0
msgid "Group By..."
msgstr ""
msgstr "Agroupar por ..."
#. module: hr
#: model:ir.actions.act_window,name:hr.view_department_form_installer
msgid "Create Your Departments"
msgstr ""
msgstr "Crear sus Departamentos"
#. module: hr
#: model:ir.actions.act_window,help:hr.action_hr_job
@@ -70,6 +71,11 @@ msgid ""
"will be used in the recruitment process to evaluate the applicants for this "
"job position."
msgstr ""
"Los puestos de trabajo se utilizan para definir los cargos y sus requisitos. "
"Puede controlar el número de empleados que tiene por puesto y cuántos espera "
"tener en un futuro. Asimismo, puede adjuntar una encuesta a una posición "
"laboral que será utilizada en el proceso de selección para evaluar a los "
"candidatos a este puesto."
#. module: hr
#: view:hr.employee:0
@@ -83,17 +89,17 @@ msgstr "Departamento"
#. module: hr
#: view:hr.job:0
msgid "Mark as Old"
msgstr ""
msgstr "Marcar como antiguo"
#. module: hr
#: view:hr.job:0
msgid "Jobs"
msgstr ""
msgstr "Tareas"
#. module: hr
#: view:hr.job:0
msgid "In Recruitment"
msgstr ""
msgstr "En selección"
#. module: hr
#: field:hr.department,company_id:0
@@ -106,12 +112,12 @@ msgstr "Compañía"
#. module: hr
#: field:hr.job,no_of_recruitment:0
msgid "Expected in Recruitment"
msgstr ""
msgstr "Previsión en selección"
#. module: hr
#: model:ir.actions.todo.category,name:hr.category_hr_management_config
msgid "HR Management"
msgstr ""
msgstr "Administración de RH"
#. module: hr
#: help:hr.employee,partner_id:0
@@ -119,11 +125,13 @@ msgid ""
"Partner that is related to the current employee. Accounting transaction will "
"be written on this partner belongs to employee."
msgstr ""
"Empresa que está relacionada con el empleado actual. Las transacciones "
"contables se escribirán en esta empresa a la cual pertenece el empleado."
#. module: hr
#: model:process.transition,name:hr.process_transition_employeeuser0
msgid "Link a user to an employee"
msgstr ""
msgstr "Vincular un usuario a un empleado"
#. module: hr
#: field:hr.department,parent_id:0
@@ -139,7 +147,7 @@ msgstr "Notas"
#. module: hr
#: selection:hr.employee,marital:0
msgid "Married"
msgstr ""
msgstr "Casado (a)"
#. module: hr
#: model:ir.actions.act_window,help:hr.action_create_hr_employee_installer
@@ -149,6 +157,10 @@ msgid ""
"operations on all the employees of the same category, i.e. allocating "
"holidays."
msgstr ""
"Cree empleados y enlacelos a un usuario del sistema OpenERP si usted quiere "
"que ellos tengan acceso al sistema, Las Categorías pueden ser asignadas a "
"los empleados para poder realizar operaciones sobre las categorías, por "
"ejemplo los días feriados"
#. module: hr
#: model:ir.actions.act_window,help:hr.open_module_tree_department
@@ -157,11 +169,14 @@ msgid ""
"to employees by departments: expenses and timesheet validation, leaves "
"management, recruitments, etc."
msgstr ""
"La estructura de departamentos de su compañía se utiliza para gestionar "
"todos los documentos relativos a los empleados por departamentos: gastos y "
"validación de tiempos, gestión de ausencias, procesos de selección, etc."
#. module: hr
#: field:hr.employee,color:0
msgid "Color Index"
msgstr ""
msgstr "Color del Indice"
#. module: hr
#: model:process.transition,note:hr.process_transition_employeeuser0
@@ -169,17 +184,19 @@ msgid ""
"The Related user field on the Employee form allows to link the OpenERP user "
"(and her rights) to the employee."
msgstr ""
"El campo usuario relacionado en el formulario del empleado permite vincular "
"el usuario de OpenERP (y sus permisos) al empleado."
#. module: hr
#: view:hr.job:0
#: selection:hr.job,state:0
msgid "In Recruitement"
msgstr ""
msgstr "En selección"
#. module: hr
#: field:hr.employee,identification_id:0
msgid "Identification No"
msgstr ""
msgstr "Nº identificación"
#. module: hr
#: selection:hr.employee,gender:0
@@ -189,12 +206,12 @@ msgstr "Mujer"
#. module: hr
#: help:hr.job,expected_employees:0
msgid "Required number of employees in total for that job."
msgstr ""
msgstr "Número de empleados requeridos en total para este puesto"
#. module: hr
#: model:ir.ui.menu,name:hr.menu_open_view_attendance_reason_new_config
msgid "Attendance"
msgstr ""
msgstr "Asistencia"
#. module: hr
#: view:hr.employee:0
@@ -216,7 +233,7 @@ msgstr "Categorías Inferiores"
#: field:hr.job,description:0
#: model:ir.model,name:hr.model_hr_job
msgid "Job Description"
msgstr ""
msgstr "Descripción del puesto de trabajo"
#. module: hr
#: field:hr.employee,work_location:0
@@ -226,7 +243,7 @@ msgstr "Dirección Oficina"
#. module: hr
#: view:hr.employee:0
msgid "My Departments Employee"
msgstr ""
msgstr "Mis Departamentos"
#. module: hr
#: view:hr.employee:0
@@ -238,17 +255,17 @@ msgstr "Empleado"
#. module: hr
#: model:process.node,note:hr.process_node_employeecontact0
msgid "Other information"
msgstr ""
msgstr "Otra información"
#. module: hr
#: field:hr.employee,work_email:0
msgid "Work E-mail"
msgstr ""
msgstr "Email de trabajo"
#. module: hr
#: field:hr.employee,birthday:0
msgid "Date of Birth"
msgstr ""
msgstr "Fecha de nacimiento"
#. module: hr
#: model:ir.ui.menu,name:hr.menu_hr_reporting
@@ -259,14 +276,14 @@ msgstr "Informe"
#: model:ir.actions.act_window,name:hr.open_board_hr
#: model:ir.ui.menu,name:hr.menu_hr_dashboard_user
msgid "Human Resources Dashboard"
msgstr ""
msgstr "Tablero de Recursos Humanos"
#. module: hr
#: view:hr.employee:0
#: field:hr.employee,job_id:0
#: view:hr.job:0
msgid "Job"
msgstr ""
msgstr "Puesto de Trabajo"
#. module: hr
#: field:hr.department,member_ids:0
@@ -282,12 +299,12 @@ msgstr "Configuración"
#: view:hr.employee:0
#: field:hr.employee,category_ids:0
msgid "Categories"
msgstr ""
msgstr "Categorías"
#. module: hr
#: field:hr.job,expected_employees:0
msgid "Expected Employees"
msgstr ""
msgstr "Empleados previstos"
#. module: hr
#: selection:hr.employee,marital:0
@@ -302,7 +319,7 @@ msgstr "Categoría Superior"
#. module: hr
#: constraint:hr.employee.category:0
msgid "Error ! You cannot create recursive Categories."
msgstr ""
msgstr "¡Error! No puede crear categorías recursivas."
#. module: hr
#: view:hr.department:0
@@ -320,7 +337,7 @@ msgstr "Contacto de Empleado"
#. module: hr
#: view:board.board:0
msgid "My Board"
msgstr ""
msgstr "Mi tablero"
#. module: hr
#: selection:hr.employee,gender:0
@@ -342,7 +359,7 @@ msgstr "Categoría de empleado"
#. module: hr
#: model:process.process,name:hr.process_process_employeecontractprocess0
msgid "Employee Contract"
msgstr ""
msgstr "Contrato de empleado"
#. module: hr
#: model:ir.model,name:hr.model_hr_department
@@ -352,7 +369,7 @@ msgstr "Departamento"
#. module: hr
#: model:ir.actions.act_window,name:hr.action_create_hr_employee_installer
msgid "Create your Employees"
msgstr ""
msgstr "Cree sus empleados"
#. module: hr
#: field:hr.employee.category,name:0
@@ -373,11 +390,23 @@ msgid ""
"they will be able to enter time through the system. In the note tab, you can "
"enter text data that should be recorded for a specific employee."
msgstr ""
"Aquí puede gestionar su mano de obra creando empleados y asignándoles "
"propiedades específicas en el sistema. Mantenga toda la información "
"relacionada con los empleados y haga un seguimiento de cualquier hecho que "
"necesite ser registrado. La pestaña con información personal le ayudará a "
"mantener los datos sobre su identidad. La pestaña Categorías le permite "
"asignarles categorías de empleados en función de su puesto y actividades "
"dentro de la compañía. Una categoría puede ser la antigüedad dentro de la "
"compañía o departamento. La pestaña de Hoja de servicios permite asignarles "
"una hoja de servicios específica y un diario analítico donde podrán "
"introducir tiempo en el sistema. En la pestaña notas puede introducir "
"información, en formato texto libre, que debe ser guardada para un empleado "
"en concreto."
#. module: hr
#: help:hr.employee,bank_account_id:0
msgid "Employee bank salary account"
msgstr ""
msgstr "Cuenta bancaria de salario del empleado."
#. module: hr
#: field:hr.department,note:0
@@ -393,6 +422,7 @@ msgstr "Árbol de Empleados"
#: constraint:res.users:0
msgid "The chosen company is not in the allowed companies for this user"
msgstr ""
"La compañía seleccionada no está autorizada como compañía para este usuario"
#. module: hr
#: view:hr.employee:0
@@ -408,7 +438,7 @@ msgstr "Dirección de trabajo"
#: model:ir.actions.act_window,name:hr.open_board_hr_manager
#: model:ir.ui.menu,name:hr.menu_hr_dashboard_manager
msgid "HR Manager Dashboard"
msgstr ""
msgstr "Tablero Director Recursos Humanos"
#. module: hr
#: view:hr.employee:0
@@ -424,12 +454,12 @@ msgstr "Árbol de categorías"
#. module: hr
#: field:hr.employee,partner_id:0
msgid "unknown"
msgstr ""
msgstr "Desconocido"
#. module: hr
#: help:hr.job,no_of_employee:0
msgid "Number of employees with that job."
msgstr ""
msgstr "Número de empleados con este trabajo"
#. module: hr
#: field:hr.employee,ssnid:0
@@ -449,7 +479,7 @@ msgstr "¡Error! No se puede crear una jerarquía recursiva de empleados."
#. module: hr
#: model:ir.actions.act_window,name:hr.action2
msgid "Subordonate Hierarchy"
msgstr ""
msgstr "Organigrama Jerárquico"
#. module: hr
#: model:ir.actions.act_window,help:hr.view_department_form_installer
@@ -458,11 +488,14 @@ msgid ""
"employees by departments: expenses and timesheet validation, leaves "
"management, recruitments, etc."
msgstr ""
"La estructura de sus departamentos es usada para administrar todos los "
"documentos relacionados a los empleados por departamento: Gastos y Hojas de "
"Asistencia, gestión de ausencias, proceso de selección, etc."
#. module: hr
#: field:hr.employee,bank_account_id:0
msgid "Bank Account Number"
msgstr ""
msgstr "Número de Cuenta Bancaria"
#. module: hr
#: view:hr.department:0
@@ -475,27 +508,29 @@ msgid ""
"In the Employee form, there are different kind of information like Contact "
"information."
msgstr ""
"En el formulario del empleado, hay diferentes tipos de información como la "
"información de contacto."
#. module: hr
#: model:ir.ui.menu,name:hr.menu_hr_dashboard
msgid "Dashboard"
msgstr ""
msgstr "Tablero"
#. module: hr
#: selection:hr.job,state:0
msgid "Old"
msgstr ""
msgstr "Antiguo"
#. module: hr
#: sql_constraint:res.users:0
msgid "You can not have two users with the same login !"
msgstr ""
msgstr "¡No puede tener dos usuarios con el mismo identificador de usuario!"
#. module: hr
#: view:hr.job:0
#: field:hr.job,state:0
msgid "State"
msgstr ""
msgstr "Estado/Provincia"
#. module: hr
#: field:hr.employee,marital:0
@@ -505,22 +540,22 @@ msgstr "Estado civil"
#. module: hr
#: model:ir.model,name:hr.model_ir_actions_act_window
msgid "ir.actions.act_window"
msgstr ""
msgstr "Asistente"
#. module: hr
#: model:process.node,note:hr.process_node_employee0
msgid "Employee form and structure"
msgstr ""
msgstr "Formulario y estructura del empleado"
#. module: hr
#: field:hr.employee,photo:0
msgid "Photo"
msgstr ""
msgstr "Fotografía"
#. module: hr
#: model:ir.model,name:hr.model_res_users
msgid "res.users"
msgstr ""
msgstr "Usuarios"
#. module: hr
#: view:hr.employee:0
@@ -530,17 +565,17 @@ msgstr "Información personal"
#. module: hr
#: field:hr.employee,city:0
msgid "City"
msgstr ""
msgstr "Ciudad"
#. module: hr
#: field:hr.employee,passport_id:0
msgid "Passport No"
msgstr ""
msgstr "Nº Pasaporte"
#. module: hr
#: field:hr.employee,mobile_phone:0
msgid "Work Mobile"
msgstr ""
msgstr "Móvil del trabajo"
#. module: hr
#: view:hr.employee.category:0
@@ -555,23 +590,23 @@ msgstr "Domicilio"
#. module: hr
#: view:hr.job:0
msgid "Description"
msgstr ""
msgstr "Descripción"
#. module: hr
#: selection:hr.employee,marital:0
msgid "Single"
msgstr ""
msgstr "Soltero(a)"
#. module: hr
#: field:hr.job,name:0
msgid "Job Name"
msgstr ""
msgstr "Nombre del Puesto de Trabajo"
#. module: hr
#: view:hr.job:0
#: selection:hr.job,state:0
msgid "In Position"
msgstr ""
msgstr "Ocupado"
#. module: hr
#: view:hr.department:0
@@ -586,17 +621,17 @@ msgstr "Nacionalidad"
#. module: hr
#: model:ir.ui.menu,name:hr.menu_open_view_attendance_reason_config
msgid "Leaves"
msgstr ""
msgstr "Ausencias"
#. module: hr
#: view:board.board:0
msgid "HR Manager Board"
msgstr ""
msgstr "Tablero de gestión de RRHH"
#. module: hr
#: field:hr.employee,resource_id:0
msgid "Resource"
msgstr ""
msgstr "Recurso"
#. module: hr
#: field:hr.department,complete_name:0
@@ -636,12 +671,12 @@ msgstr "Nombre de departamento"
#. module: hr
#: help:hr.employee,ssnid:0
msgid "Social Security Number"
msgstr ""
msgstr "Número de Seguro Social"
#. module: hr
#: model:process.node,note:hr.process_node_openerpuser0
msgid "Creation of a OpenERP user"
msgstr ""
msgstr "Creación de un usuario OpenERP"
#. module: hr
#: field:hr.department,child_ids:0
@@ -657,28 +692,28 @@ msgstr "Información laboral"
#: model:ir.actions.act_window,name:hr.action_hr_job
#: model:ir.ui.menu,name:hr.menu_hr_job
msgid "Job Positions"
msgstr ""
msgstr "Puestos de trabajo"
#. module: hr
#: field:hr.employee,otherid:0
msgid "Other Id"
msgstr ""
msgstr "Otro id"
#. module: hr
#: view:hr.employee:0
#: field:hr.employee,coach_id:0
msgid "Coach"
msgstr ""
msgstr "Entrenador"
#. module: hr
#: sql_constraint:hr.job:0
msgid "The name of the job position must be unique per company!"
msgstr ""
msgstr "¡El nombre de el puesto de trabajo, debe ser único por Compañia!"
#. module: hr
#: view:hr.job:0
msgid "My Departments Jobs"
msgstr ""
msgstr "Mis departamentos de Trabajo"
#. module: hr
#: field:hr.department,manager_id:0
@@ -690,7 +725,7 @@ msgstr "Director"
#. module: hr
#: selection:hr.employee,marital:0
msgid "Widower"
msgstr ""
msgstr "Viudo(a)"
#. module: hr
#: field:hr.employee,child_ids:0
@@ -700,7 +735,7 @@ msgstr "Subordinados"
#. module: hr
#: field:hr.job,no_of_employee:0
msgid "Number of Employees"
msgstr ""
msgstr "Número de Empleados"
#~ msgid "Work Email"
#~ msgstr "E-mail de Trabajo"
@@ -1,50 +1,31 @@
-
In order to test attendance process in OpenERP, at the time of login, I use "Sign In/Sign Out" wizard for attendances.
I click on this wizard to login.
In order to test attendance process in OpenERP, I entry of SignIn of employee.
-
!python {model: hr.sign.in.out}: |
hr_employee = self.pool.get('hr.employee')
uid = ref('base.user_al')
emp_ids = hr_employee.search(cr, uid, [('user_id', '=', uid)])
if emp_ids:
employee = hr_employee.browse(cr, uid, emp_ids)[0]
id = self.create(cr, uid, {'emp_id': employee.id, 'name': employee.name, 'state': employee.state})
self.si_check(cr, uid, [id])
context.update({'emp_id': [ref('hr.employee_al')]}) #TOFIX: emp_ids instead of 'emp_id'
-
!record {model: hr.sign.in.out, id: employee_sign_in}:
{}
-
Employee Signs In.
-
!python {model: hr.sign.in.out}: |
self.si_check(cr, uid, [ref("employee_sign_in")], context=context)
-
I check that Employee is "Present".
-
!assert {model: hr.employee, id: hr.employee_al, severity: error, string: Employee should be in present state}:
- state == 'present'
-
I click on "Sign In" button of this wizard, this will Open a new form which ask for Last Sign Out date.
After few seconds, employee sign's out.
-
!python {model: hr.sign.in.out}: |
hr_employee = self.pool.get('hr.employee')
uid = ref('base.user_al')
emp_ids = hr_employee.search(cr, uid, [('user_id', '=', uid)])
if emp_ids:
employee = hr_employee.browse(cr, uid, emp_ids)[0]
id = self.create(cr, uid, {'emp_id': employee.id, 'name': employee.name, 'state': employee.state})
self.si_check(cr, uid, [id])
-
I select Last Sign Out date.
-
!record {model: hr.sign.in.out.ask, id: hr_sign_in_out_ask_Antony}:
last_time: !eval time.strftime('%Y-%m-%d %H:%M:%S')
name: Antony
-
Now I click on "Sign In" button of this wizard.
-
!python {model: hr.sign.in.out.ask}: |
import time
hr_employee = self.pool.get('hr.employee')
uid = ref('base.user_al')
emp_ids = hr_employee.search(cr, uid, [('user_id', '=', uid)])
if emp_ids:
employee = hr_employee.browse(cr, uid, emp_ids)[0]
id = self.create(cr, uid, {'emp_id': employee.id, 'name': employee.name, 'last_time': time.strftime('%Y-%m-%d %H:%M:%S')})
time.sleep(2)
self.so_check(cr, uid, [ref("employee_sign_in")], context=context)
-
Finally i check the employee is present.
I check that Employee is "Absent".
-
!assert {model: hr.employee, id: hr.employee_al, severity: error, string: Employee should be in present state}:
- state == 'present'
!assert {model: hr.employee, id: hr.employee_al, severity: error, string: Employee should be in absent state}:
- state == 'absent'
+8 -4
View File
@@ -305,10 +305,13 @@
<field name="response" readonly="1"/>
<field name="user_to_review_id"/>
<field name="user_id" string="Interviewer"/>
<button string="Send Reminder Email"
name="%(mail.action_email_compose_message_wizard)d"
icon="terp-mail-message-new" type="action" colspan="2"
states="waiting_answer"/>
<group col="2" colspan="2">
<button string="Send Reminder Email"
name="%(mail.action_email_compose_message_wizard)d"
icon="terp-mail-message-new" type="action"
states="waiting_answer"/>
<button name="action_print_survey" string="Print Survey" type="object" icon="gtk-print" context="{'survey_id': survey_id, 'response_id': [response], 'response_no':0}" attrs="{'readonly':[('survey_id','=',False)]}"/>
</group>
</group>
<newline/>
<separator string="State" colspan="4"/>
@@ -332,6 +335,7 @@
<field name="response" readonly="1" invisible="True"/>
<button name="%(survey.action_view_survey_question_message)d" string="Interview Question" type="action" states="waiting_answer,done,cancel" icon="gtk-execute" context="{'survey_id': survey_id, 'response_id': [response], 'response_no':0, 'active' : response, 'request' : True, 'object' : 'hr.evaluation.interview', 'cur_id' : active_id}" attrs="{'readonly':[('survey_id','=',False)]}"/>
<button name="%(survey.survey_browse_response)d" string="Print Interview" type="action" states="done" icon="gtk-print" context="{'survey_id': survey_id, 'response_id' : [response], 'response_no':0}" attrs="{'readonly':[('response','=',False)]}" />
<button name="action_print_survey" string="Print Survey" type="object" icon="gtk-print" context="{'survey_id': survey_id, 'response_id': [response], 'response_no':0}" attrs="{'readonly':[('survey_id','=',False)]}"/>
<button name="%(mail.action_email_compose_message_wizard)d" string="Send Reminder Email" icon="terp-mail-message-new" type="action" colspan="2" states="waiting_answer"/>
<field name="state"/>
</tree>
+908
View File
@@ -0,0 +1,908 @@
# Arabic translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-12-22 18:44+0000\n"
"PO-Revision-Date: 2012-01-03 12:54+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Arabic <ar@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-01-04 04:48+0000\n"
"X-Generator: Launchpad (build 14616)\n"
#. module: hr_evaluation
#: help:hr_evaluation.plan.phase,send_anonymous_manager:0
msgid "Send an anonymous summary to the manager"
msgstr ""
#. module: hr_evaluation
#: view:hr_evaluation.evaluation:0
msgid "Start Appraisal"
msgstr ""
#. module: hr_evaluation
#: view:hr.evaluation.interview:0
#: view:hr.evaluation.report:0
#: view:hr_evaluation.plan:0
msgid "Group By..."
msgstr ""
#. module: hr_evaluation
#: view:hr_evaluation.evaluation:0
msgid "Appraisal that overpassed the deadline"
msgstr ""
#. module: hr_evaluation
#: field:hr.evaluation.interview,request_id:0
#: field:hr.evaluation.report,request_id:0
msgid "Request_id"
msgstr ""
#. module: hr_evaluation
#: field:hr.evaluation.report,progress_bar:0
#: field:hr_evaluation.evaluation,progress:0
msgid "Progress"
msgstr ""
#. module: hr_evaluation
#: selection:hr.evaluation.report,month:0
msgid "March"
msgstr ""
#. module: hr_evaluation
#: field:hr.evaluation.report,delay_date:0
msgid "Delay to Start"
msgstr ""
#. module: hr_evaluation
#: view:hr_evaluation.evaluation:0
msgid "Appraisal that are in waiting appreciation state"
msgstr ""
#. module: hr_evaluation
#: code:addons/hr_evaluation/hr_evaluation.py:244
#: code:addons/hr_evaluation/hr_evaluation.py:320
#, python-format
msgid "Warning !"
msgstr ""
#. module: hr_evaluation
#: view:hr_evaluation.plan:0
#: field:hr_evaluation.plan,company_id:0
#: field:hr_evaluation.plan.phase,company_id:0
msgid "Company"
msgstr ""
#. module: hr_evaluation
#: field:hr.evaluation.interview,evaluation_id:0
#: field:hr_evaluation.plan.phase,survey_id:0
msgid "Appraisal Form"
msgstr ""
#. module: hr_evaluation
#: view:hr.evaluation.report:0
#: field:hr.evaluation.report,day:0
msgid "Day"
msgstr ""
#. module: hr_evaluation
#: view:hr_evaluation.plan:0
#: field:hr_evaluation.plan,phase_ids:0
msgid "Appraisal Phases"
msgstr ""
#. module: hr_evaluation
#: help:hr_evaluation.plan,month_first:0
msgid ""
"This number of months will be used to schedule the first evaluation date of "
"the employee when selecting an evaluation plan. "
msgstr ""
#. module: hr_evaluation
#: view:hr.employee:0
msgid "Notes"
msgstr ""
#. module: hr_evaluation
#: view:hr_evaluation.plan.phase:0
msgid "(eval_name)s:Appraisal Name"
msgstr ""
#. module: hr_evaluation
#: model:ir.actions.act_window,help:hr_evaluation.open_view_hr_evaluation_tree
msgid ""
"Each employee may be assigned an Appraisal Plan. Such a plan defines the "
"frequency and the way you manage your periodic personnel evaluation. You "
"will be able to define steps and attach interviews to each step. OpenERP "
"manages all kind of evaluations: bottom-up, top-down, self-evaluation and "
"final evaluation by the manager."
msgstr ""
#. module: hr_evaluation
#: view:hr_evaluation.plan.phase:0
msgid "Mail Body"
msgstr ""
#. module: hr_evaluation
#: field:hr_evaluation.plan.phase,wait:0
msgid "Wait Previous Phases"
msgstr ""
#. module: hr_evaluation
#: model:ir.model,name:hr_evaluation.model_hr_evaluation_evaluation
msgid "Employee Appraisal"
msgstr ""
#. module: hr_evaluation
#: selection:hr.evaluation.report,state:0
#: selection:hr_evaluation.evaluation,state:0
msgid "Cancelled"
msgstr ""
#. module: hr_evaluation
#: selection:hr.evaluation.report,rating:0
#: selection:hr_evaluation.evaluation,rating:0
msgid "Did not meet expectations"
msgstr ""
#. module: hr_evaluation
#: view:hr.employee:0
#: view:hr_evaluation.evaluation:0
#: model:ir.actions.act_window,name:hr_evaluation.open_view_hr_evaluation_tree
#: model:ir.ui.menu,name:hr_evaluation.menu_eval_hr
#: model:ir.ui.menu,name:hr_evaluation.menu_open_view_hr_evaluation_tree
msgid "Appraisal"
msgstr ""
#. module: hr_evaluation
#: view:hr_evaluation.plan.phase:0
msgid "Send to Managers"
msgstr ""
#. module: hr_evaluation
#: field:hr_evaluation.evaluation,date_close:0
msgid "Ending Date"
msgstr ""
#. module: hr_evaluation
#: help:hr_evaluation.evaluation,note_action:0
msgid ""
"If the evaluation does not meet the expectations, you can proposean action "
"plan"
msgstr ""
#. module: hr_evaluation
#: view:hr_evaluation.plan.phase:0
msgid "Send to Employees"
msgstr ""
#. module: hr_evaluation
#: code:addons/hr_evaluation/hr_evaluation.py:82
#, python-format
msgid ""
"\n"
"Date: %(date)s\n"
"\n"
"Dear %(employee_name)s,\n"
"\n"
"I am doing an evaluation regarding %(eval_name)s.\n"
"\n"
"Kindly submit your response.\n"
"\n"
"\n"
"Thanks,\n"
"--\n"
"%(user_signature)s\n"
"\n"
" "
msgstr ""
#. module: hr_evaluation
#: view:hr_evaluation.evaluation:0
msgid "Appraisal that are in Plan In Progress state"
msgstr ""
#. module: hr_evaluation
#: view:hr_evaluation.evaluation:0
msgid "Reset to Draft"
msgstr ""
#. module: hr_evaluation
#: field:hr.evaluation.report,deadline:0
msgid "Deadline"
msgstr ""
#. module: hr_evaluation
#: view:hr.evaluation.report:0
msgid " Month "
msgstr ""
#. module: hr_evaluation
#: view:hr.evaluation.report:0
msgid "In progress Evaluations"
msgstr ""
#. module: hr_evaluation
#: model:ir.model,name:hr_evaluation.model_survey_request
msgid "survey.request"
msgstr ""
#. module: hr_evaluation
#: view:hr_evaluation.plan.phase:0
msgid "(date)s: Current Date"
msgstr ""
#. module: hr_evaluation
#: help:hr_evaluation.plan.phase,send_anonymous_employee:0
msgid "Send an anonymous summary to the employee"
msgstr ""
#. module: hr_evaluation
#: code:addons/hr_evaluation/hr_evaluation.py:81
#, python-format
msgid "Regarding "
msgstr ""
#. module: hr_evaluation
#: view:hr.evaluation.interview:0
#: view:hr.evaluation.report:0
#: field:hr.evaluation.report,state:0
#: view:hr_evaluation.evaluation:0
#: field:hr_evaluation.evaluation,state:0
msgid "State"
msgstr ""
#. module: hr_evaluation
#: view:hr.evaluation.report:0
#: field:hr.evaluation.report,employee_id:0
#: view:hr_evaluation.evaluation:0
#: field:hr_evaluation.evaluation,employee_id:0
#: model:ir.model,name:hr_evaluation.model_hr_employee
msgid "Employee"
msgstr ""
#. module: hr_evaluation
#: selection:hr_evaluation.evaluation,state:0
msgid "New"
msgstr ""
#. module: hr_evaluation
#: field:hr_evaluation.plan.phase,mail_body:0
msgid "Email"
msgstr ""
#. module: hr_evaluation
#: selection:hr.evaluation.report,rating:0
#: selection:hr_evaluation.evaluation,rating:0
msgid "Exceeds expectations"
msgstr ""
#. module: hr_evaluation
#: help:hr_evaluation.plan.phase,mail_feature:0
msgid ""
"Check this box if you want to send mail to employees coming under this phase"
msgstr ""
#. module: hr_evaluation
#: view:hr.evaluation.report:0
msgid "Evaluation done in last month"
msgstr ""
#. module: hr_evaluation
#: model:ir.model,name:hr_evaluation.model_mail_compose_message
msgid "E-mail composition wizard"
msgstr ""
#. module: hr_evaluation
#: view:hr.evaluation.report:0
msgid "Creation Date"
msgstr ""
#. module: hr_evaluation
#: help:hr_evaluation.plan.phase,send_answer_manager:0
msgid "Send all answers to the manager"
msgstr ""
#. module: hr_evaluation
#: selection:hr.evaluation.report,state:0
#: selection:hr_evaluation.evaluation,state:0
msgid "Plan In Progress"
msgstr ""
#. module: hr_evaluation
#: view:hr_evaluation.evaluation:0
msgid "Public Notes"
msgstr ""
#. module: hr_evaluation
#: view:hr.evaluation.interview:0
msgid "Send Reminder Email"
msgstr ""
#. module: hr_evaluation
#: view:hr.evaluation.report:0
#: field:hr_evaluation.evaluation,rating:0
msgid "Appreciation"
msgstr ""
#. module: hr_evaluation
#: view:hr.evaluation.interview:0
#: view:hr_evaluation.evaluation:0
msgid "Print Interview"
msgstr ""
#. module: hr_evaluation
#: view:hr_evaluation.evaluation:0
msgid "Pending"
msgstr ""
#. module: hr_evaluation
#: field:hr.evaluation.report,closed:0
msgid "closed"
msgstr ""
#. module: hr_evaluation
#: selection:hr.evaluation.report,rating:0
#: selection:hr_evaluation.evaluation,rating:0
msgid "Meet expectations"
msgstr ""
#. module: hr_evaluation
#: view:hr.evaluation.report:0
#: field:hr.evaluation.report,nbr:0
msgid "# of Requests"
msgstr ""
#. module: hr_evaluation
#: selection:hr.evaluation.report,month:0
msgid "July"
msgstr ""
#. module: hr_evaluation
#: model:ir.actions.act_window,name:hr_evaluation.action_evaluation_plans_installer
msgid "Review Appraisal Plans"
msgstr ""
#. module: hr_evaluation
#: view:hr.evaluation.report:0
msgid " Month-1 "
msgstr ""
#. module: hr_evaluation
#: view:hr_evaluation.plan.phase:0
msgid "Action to Perform"
msgstr ""
#. module: hr_evaluation
#: field:hr_evaluation.evaluation,note_action:0
msgid "Action Plan"
msgstr ""
#. module: hr_evaluation
#: model:ir.ui.menu,name:hr_evaluation.menu_eval_hr_config
msgid "Periodic Appraisal"
msgstr ""
#. module: hr_evaluation
#: view:hr_evaluation.evaluation:0
msgid "Appraisal to close within the next 7 days"
msgstr ""
#. module: hr_evaluation
#: view:hr_evaluation.evaluation:0
msgid "Ending Summary"
msgstr ""
#. module: hr_evaluation
#: selection:hr.evaluation.report,rating:0
#: selection:hr_evaluation.evaluation,rating:0
msgid "Significantly exceeds expectations"
msgstr ""
#. module: hr_evaluation
#: model:ir.actions.act_window,help:hr_evaluation.action_hr_evaluation_interview_tree
msgid ""
"Interview Requests are generated automatically by OpenERP according to an "
"employee's Appraisal Plan. Each user receives automatic emails and requests "
"to evaluate their colleagues periodically."
msgstr ""
#. module: hr_evaluation
#: view:hr_evaluation.evaluation:0
msgid "In progress"
msgstr ""
#. module: hr_evaluation
#: view:hr.evaluation.interview:0
msgid "Interview Request"
msgstr ""
#. module: hr_evaluation
#: field:hr_evaluation.plan.phase,send_answer_employee:0
#: field:hr_evaluation.plan.phase,send_answer_manager:0
msgid "All Answers"
msgstr ""
#. module: hr_evaluation
#: selection:hr.evaluation.report,month:0
msgid "September"
msgstr ""
#. module: hr_evaluation
#: selection:hr.evaluation.report,month:0
msgid "December"
msgstr ""
#. module: hr_evaluation
#: view:hr.evaluation.report:0
msgid "Evaluation done in current year"
msgstr ""
#. module: hr_evaluation
#: view:hr.evaluation.report:0
#: field:hr.evaluation.report,month:0
msgid "Month"
msgstr ""
#. module: hr_evaluation
#: view:hr_evaluation.evaluation:0
msgid "Group by..."
msgstr ""
#. module: hr_evaluation
#: view:hr_evaluation.plan.phase:0
msgid "Mail Settings"
msgstr ""
#. module: hr_evaluation
#: model:ir.actions.act_window,name:hr_evaluation.evaluation_reminders
msgid "Appraisal Reminders"
msgstr ""
#. module: hr_evaluation
#: view:hr.evaluation.interview:0
#: view:hr_evaluation.evaluation:0
msgid "Interview Question"
msgstr ""
#. module: hr_evaluation
#: help:hr_evaluation.plan.phase,wait:0
msgid ""
"Check this box if you want to wait that all preceding phases are finished "
"before launching this phase."
msgstr ""
#. module: hr_evaluation
#: view:hr_evaluation.plan.phase:0
msgid "Legend"
msgstr ""
#. module: hr_evaluation
#: field:hr_evaluation.plan,month_first:0
msgid "First Appraisal in (months)"
msgstr ""
#. module: hr_evaluation
#: selection:hr.evaluation.report,state:0
msgid "Draft"
msgstr ""
#. module: hr_evaluation
#: field:hr_evaluation.plan.phase,send_anonymous_employee:0
#: field:hr_evaluation.plan.phase,send_anonymous_manager:0
msgid "Anonymous Summary"
msgstr ""
#. module: hr_evaluation
#: view:hr_evaluation.evaluation:0
msgid "7 Days"
msgstr ""
#. module: hr_evaluation
#: field:hr.employee,evaluation_plan_id:0
#: view:hr_evaluation.plan:0
#: field:hr_evaluation.plan,name:0
#: field:hr_evaluation.plan.phase,plan_id:0
#: model:ir.model,name:hr_evaluation.model_hr_evaluation_plan
msgid "Appraisal Plan"
msgstr ""
#. module: hr_evaluation
#: selection:hr.evaluation.report,month:0
msgid "August"
msgstr ""
#. module: hr_evaluation
#: selection:hr.evaluation.report,month:0
msgid "June"
msgstr ""
#. module: hr_evaluation
#: selection:hr.evaluation.report,rating:0
#: selection:hr_evaluation.evaluation,rating:0
msgid "Significantly bellow expectations"
msgstr ""
#. module: hr_evaluation
#: view:hr_evaluation.plan.phase:0
msgid " (employee_name)s: Partner name"
msgstr ""
#. module: hr_evaluation
#: view:hr.evaluation.report:0
#: field:hr.evaluation.report,plan_id:0
#: view:hr_evaluation.evaluation:0
#: field:hr_evaluation.evaluation,plan_id:0
msgid "Plan"
msgstr ""
#. module: hr_evaluation
#: field:hr_evaluation.plan,active:0
msgid "Active"
msgstr ""
#. module: hr_evaluation
#: selection:hr.evaluation.report,month:0
msgid "November"
msgstr ""
#. module: hr_evaluation
#: view:hr.evaluation.report:0
msgid "Extended Filters..."
msgstr ""
#. module: hr_evaluation
#: constraint:hr.employee:0
msgid "Error ! You cannot create recursive Hierarchy of Employees."
msgstr ""
#. module: hr_evaluation
#: model:ir.model,name:hr_evaluation.model_hr_evaluation_plan_phase
msgid "Appraisal Plan Phase"
msgstr ""
#. module: hr_evaluation
#: selection:hr.evaluation.report,month:0
msgid "January"
msgstr ""
#. module: hr_evaluation
#: model:ir.actions.act_window,name:hr_evaluation.act_hr_employee_2_hr__evaluation_interview
msgid "Appraisal Interviews"
msgstr ""
#. module: hr_evaluation
#: view:hr_evaluation.evaluation:0
msgid "Date"
msgstr ""
#. module: hr_evaluation
#: view:hr.evaluation.interview:0
msgid "Survey"
msgstr ""
#. module: hr_evaluation
#: help:hr_evaluation.evaluation,rating:0
msgid "This is the appreciation on that summarize the evaluation"
msgstr ""
#. module: hr_evaluation
#: field:hr_evaluation.plan.phase,action:0
msgid "Action"
msgstr ""
#. module: hr_evaluation
#: view:hr.evaluation.report:0
#: selection:hr.evaluation.report,state:0
msgid "Final Validation"
msgstr ""
#. module: hr_evaluation
#: selection:hr_evaluation.evaluation,state:0
msgid "Waiting Appreciation"
msgstr ""
#. module: hr_evaluation
#: view:hr.evaluation.report:0
#: model:ir.actions.act_window,name:hr_evaluation.action_evaluation_report_all
#: model:ir.ui.menu,name:hr_evaluation.menu_evaluation_report_all
msgid "Appraisal Analysis"
msgstr ""
#. module: hr_evaluation
#: field:hr_evaluation.evaluation,date:0
msgid "Appraisal Deadline"
msgstr ""
#. module: hr_evaluation
#: field:hr.evaluation.report,rating:0
msgid "Overall Rating"
msgstr ""
#. module: hr_evaluation
#: field:hr_evaluation.plan.phase,email_subject:0
msgid "char"
msgstr ""
#. module: hr_evaluation
#: view:hr.evaluation.interview:0
#: view:hr_evaluation.evaluation:0
msgid "Interviewer"
msgstr ""
#. module: hr_evaluation
#: model:ir.model,name:hr_evaluation.model_hr_evaluation_report
msgid "Evaluations Statistics"
msgstr ""
#. module: hr_evaluation
#: view:hr.evaluation.interview:0
msgid "Deadline Date"
msgstr ""
#. module: hr_evaluation
#: code:addons/hr_evaluation/wizard/mail_compose_message.py:45
#, python-format
msgid ""
"Hello %s, \n"
"\n"
" Kindly post your response for '%s' survey interview. \n"
"\n"
" Thanks,"
msgstr ""
#. module: hr_evaluation
#: selection:hr_evaluation.plan.phase,action:0
msgid "Top-Down Appraisal Requests"
msgstr ""
#. module: hr_evaluation
#: model:ir.actions.act_window,help:hr_evaluation.action_evaluation_plans_installer
msgid ""
"You can define appraisal plans (ex: first interview after 6 months, then "
"every year). Then, each employee can be linked to an appraisal plan so that "
"OpenERP can automatically generate interview requests to managers and/or "
"subordinates."
msgstr ""
#. module: hr_evaluation
#: view:hr_evaluation.plan.phase:0
msgid "General"
msgstr ""
#. module: hr_evaluation
#: help:hr_evaluation.plan.phase,send_answer_employee:0
msgid "Send all answers to the employee"
msgstr ""
#. module: hr_evaluation
#: view:hr_evaluation.evaluation:0
msgid "Appraisal Data"
msgstr ""
#. module: hr_evaluation
#: view:hr.evaluation.report:0
#: selection:hr.evaluation.report,state:0
#: view:hr_evaluation.evaluation:0
#: selection:hr_evaluation.evaluation,state:0
msgid "Done"
msgstr ""
#. module: hr_evaluation
#: model:ir.actions.act_window,name:hr_evaluation.open_view_hr_evaluation_plan_tree
#: model:ir.ui.menu,name:hr_evaluation.menu_open_view_hr_evaluation_plan_tree
msgid "Appraisal Plans"
msgstr ""
#. module: hr_evaluation
#: model:ir.model,name:hr_evaluation.model_hr_evaluation_interview
msgid "Appraisal Interview"
msgstr ""
#. module: hr_evaluation
#: view:hr_evaluation.evaluation:0
msgid "Cancel"
msgstr ""
#. module: hr_evaluation
#: code:addons/hr_evaluation/wizard/mail_compose_message.py:49
#, python-format
msgid "Reminder to fill up Survey"
msgstr ""
#. module: hr_evaluation
#: view:hr.evaluation.report:0
msgid "In Progress"
msgstr ""
#. module: hr_evaluation
#: view:hr.evaluation.interview:0
msgid "To Do"
msgstr ""
#. module: hr_evaluation
#: view:hr.evaluation.report:0
msgid "Final Validation Evaluations"
msgstr ""
#. module: hr_evaluation
#: field:hr_evaluation.plan.phase,mail_feature:0
msgid "Send mail for this phase"
msgstr ""
#. module: hr_evaluation
#: view:hr.evaluation.interview:0
#: view:hr_evaluation.evaluation:0
msgid "Late"
msgstr ""
#. module: hr_evaluation
#: selection:hr.evaluation.report,month:0
msgid "October"
msgstr ""
#. module: hr_evaluation
#: help:hr.employee,evaluation_date:0
msgid ""
"The date of the next appraisal is computed by the appraisal plan's dates "
"(first appraisal + periodicity)."
msgstr ""
#. module: hr_evaluation
#: field:hr.evaluation.report,overpass_delay:0
msgid "Overpassed Deadline"
msgstr ""
#. module: hr_evaluation
#: help:hr_evaluation.plan,month_next:0
msgid ""
"The number of month that depicts the delay between each evaluation of this "
"plan (after the first one)."
msgstr ""
#. module: hr_evaluation
#: field:hr_evaluation.plan,month_next:0
msgid "Periodicity of Appraisal (months)"
msgstr ""
#. module: hr_evaluation
#: selection:hr_evaluation.plan.phase,action:0
msgid "Self Appraisal Requests"
msgstr ""
#. module: hr_evaluation
#: field:hr_evaluation.evaluation,survey_request_ids:0
msgid "Appraisal Forms"
msgstr ""
#. module: hr_evaluation
#: selection:hr.evaluation.report,month:0
msgid "May"
msgstr ""
#. module: hr_evaluation
#: view:hr_evaluation.evaluation:0
msgid "Internal Notes"
msgstr ""
#. module: hr_evaluation
#: selection:hr_evaluation.plan.phase,action:0
msgid "Final Interview"
msgstr ""
#. module: hr_evaluation
#: field:hr_evaluation.plan.phase,name:0
msgid "Phase"
msgstr ""
#. module: hr_evaluation
#: selection:hr_evaluation.plan.phase,action:0
msgid "Bottom-Up Appraisal Requests"
msgstr ""
#. module: hr_evaluation
#: code:addons/hr_evaluation/hr_evaluation.py:244
#, python-format
msgid ""
"You cannot change state, because some appraisal in waiting answer or draft "
"state"
msgstr ""
#. module: hr_evaluation
#: selection:hr.evaluation.report,month:0
msgid "February"
msgstr ""
#. module: hr_evaluation
#: view:hr.evaluation.interview:0
#: view:hr_evaluation.evaluation:0
msgid "Interview Appraisal"
msgstr ""
#. module: hr_evaluation
#: field:survey.request,is_evaluation:0
msgid "Is Appraisal?"
msgstr ""
#. module: hr_evaluation
#: code:addons/hr_evaluation/hr_evaluation.py:320
#, python-format
msgid "You cannot start evaluation without Appraisal."
msgstr ""
#. module: hr_evaluation
#: view:hr.evaluation.report:0
msgid "Evaluation done in current month"
msgstr ""
#. module: hr_evaluation
#: field:hr.evaluation.interview,user_to_review_id:0
msgid "Employee to Interview"
msgstr ""
#. module: hr_evaluation
#: selection:hr.evaluation.report,month:0
msgid "April"
msgstr ""
#. module: hr_evaluation
#: view:hr_evaluation.plan.phase:0
msgid "Appraisal Plan Phases"
msgstr ""
#. module: hr_evaluation
#: view:hr_evaluation.evaluation:0
msgid "Validate Appraisal"
msgstr ""
#. module: hr_evaluation
#: view:hr.evaluation.interview:0
#: view:hr_evaluation.evaluation:0
msgid "Search Appraisal"
msgstr ""
#. module: hr_evaluation
#: field:hr_evaluation.plan.phase,sequence:0
msgid "Sequence"
msgstr ""
#. module: hr_evaluation
#: view:hr_evaluation.plan.phase:0
msgid "(user_signature)s: User name"
msgstr ""
#. module: hr_evaluation
#: view:board.board:0
#: model:ir.actions.act_window,name:hr_evaluation.action_hr_evaluation_interview_board
#: model:ir.actions.act_window,name:hr_evaluation.action_hr_evaluation_interview_tree
#: model:ir.ui.menu,name:hr_evaluation.menu_open_hr_evaluation_interview_requests
msgid "Interview Requests"
msgstr ""
#. module: hr_evaluation
#: field:hr.evaluation.report,create_date:0
msgid "Create Date"
msgstr ""
#. module: hr_evaluation
#: view:hr.evaluation.report:0
#: field:hr.evaluation.report,year:0
msgid "Year"
msgstr ""
#. module: hr_evaluation
#: field:hr_evaluation.evaluation,note_summary:0
msgid "Appraisal Summary"
msgstr ""
#. module: hr_evaluation
#: field:hr.employee,evaluation_date:0
msgid "Next Appraisal Date"
msgstr ""
@@ -25,9 +25,18 @@ access_survey_page_hr_user,survey.page.hr.user,survey.model_survey_page,base.gro
access_survey_response_hr_user,survey.response.hr.user,survey.model_survey_response,base.group_hr_user,1,1,1,0
access_survey_history_hr_user,survey.history.hr.user,survey.model_survey_history,base.group_hr_user,1,1,1,0
access_survey_request_hr_user,survey.request.hr.user,survey.model_survey_request,base.group_hr_user,1,1,1,0
access_survey_request_hr_employee,survey.request.hr.employee,survey.model_survey_request,base.group_user,1,1,1,0
access_survey_question_column_heading_hr_user,survey.question.column.heading.hr.user,survey.model_survey_question_column_heading,base.group_hr_user,1,0,0,0
access_survey_response_line_hr_user,survey.response.line.hr.user,survey.model_survey_response_line,base.group_hr_user,1,1,1,0
access_survey_tbl_column_heading_hr_user,survey.tbl.column.heading.hr.user,survey.model_survey_tbl_column_heading,base.group_hr_user,1,1,1,0
access_base_calendar_attendee_survey_user,base.calendar.calendar.attendee.survey.user,base_calendar.model_calendar_attendee,base.group_survey_user,1,1,1,0
access_base_calendar_attendee_tool_user,base.calendar.calendar.attendee.tool.user,base_calendar.model_calendar_attendee,base.group_tool_user,1,1,1,0
access_survey_request_hr_employee,survey.request.hr.employee,survey.model_survey_request,base.group_user,1,1,1,0
access_survey_hr_employee,survey.hr.employee,survey.model_survey,base.group_user,1,1,0,0
access_survey_page_hr_employee,survey.page.hr.employee,survey.model_survey_page,base.group_user,1,0,0,0
access_survey_answer_hr_employee,survey.answer.employee,survey.model_survey_answer,base.group_user,1,0,0,0
access_survey_question_hr_employee,survey.question.employee,survey.model_survey_question,base.group_user,1,0,0,0
access_survey_response_hr_employee,survey.response.employee,survey.model_survey_response,base.group_user,1,1,1,0
access_survey_question_column_heading_hr_employee,survey.question.column.heading.employee,survey.model_survey_question_column_heading,base.group_user,1,0,0,0
access_survey_response_line_hr_employee,survey.response.line.employee,survey.model_survey_response_line,base.group_user,1,1,1,0
access_survey_response_answer_hr_employee,survey.response.answer.hr.employee,survey.model_survey_response_answer,base.group_user,1,1,1,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
25 access_survey_response_hr_user survey.response.hr.user survey.model_survey_response base.group_hr_user 1 1 1 0
26 access_survey_history_hr_user survey.history.hr.user survey.model_survey_history base.group_hr_user 1 1 1 0
27 access_survey_request_hr_user survey.request.hr.user survey.model_survey_request base.group_hr_user 1 1 1 0
access_survey_request_hr_employee survey.request.hr.employee survey.model_survey_request base.group_user 1 1 1 0
28 access_survey_question_column_heading_hr_user survey.question.column.heading.hr.user survey.model_survey_question_column_heading base.group_hr_user 1 0 0 0
29 access_survey_response_line_hr_user survey.response.line.hr.user survey.model_survey_response_line base.group_hr_user 1 1 1 0
30 access_survey_tbl_column_heading_hr_user survey.tbl.column.heading.hr.user survey.model_survey_tbl_column_heading base.group_hr_user 1 1 1 0
31 access_base_calendar_attendee_survey_user base.calendar.calendar.attendee.survey.user base_calendar.model_calendar_attendee base.group_survey_user 1 1 1 0
32 access_base_calendar_attendee_tool_user base.calendar.calendar.attendee.tool.user base_calendar.model_calendar_attendee base.group_tool_user 1 1 1 0
33 access_survey_request_hr_employee survey.request.hr.employee survey.model_survey_request base.group_user 1 1 1 0
34 access_survey_hr_employee survey.hr.employee survey.model_survey base.group_user 1 1 0 0
35 access_survey_page_hr_employee survey.page.hr.employee survey.model_survey_page base.group_user 1 0 0 0
36 access_survey_answer_hr_employee survey.answer.employee survey.model_survey_answer base.group_user 1 0 0 0
37 access_survey_question_hr_employee survey.question.employee survey.model_survey_question base.group_user 1 0 0 0
38 access_survey_response_hr_employee survey.response.employee survey.model_survey_response base.group_user 1 1 1 0
39 access_survey_question_column_heading_hr_employee survey.question.column.heading.employee survey.model_survey_question_column_heading base.group_user 1 0 0 0
40 access_survey_response_line_hr_employee survey.response.line.employee survey.model_survey_response_line base.group_user 1 1 1 0
41 access_survey_response_answer_hr_employee survey.response.answer.hr.employee survey.model_survey_response_answer base.group_user 1 1 1 0
42
-1
View File
@@ -172,7 +172,6 @@
<field name="name">Expenses</field>
<field name="res_model">hr.expense.expense</field>
<field name="view_type">form</field>
<field name="context">{"search_default_user_id":uid}</field>
<field name="search_view_id" ref="view_hr_expense_filter"/>
<field name="view_id" ref="view_expenses_tree"/>
<field name="help">The OpenERP expenses management module allows you to track the full flow. Every month, the employees record their expenses. At the end of the month, their managers validates the expenses sheets which creates costs on projects/analytic accounts. The accountant validates the proposed entries and the employee can be reimbursed. You can also reinvoice the customer at the end of the flow.</field>
+14 -6
View File
@@ -356,9 +356,17 @@ resource_calendar_leaves()
class hr_employee(osv.osv):
_inherit="hr.employee"
_inherit="hr.employee"
def _set_remaining_days(self, cr, uid, empl_id, name, value, arg, context=None):
def create(self, cr, uid, vals, context=None):
# don't pass the value of remaining leave if it's 0 at the creation time, otherwise it will trigger the inverse
# function _set_remaining_days and the system may not be configured for. Note that we don't have this problem on
# the write because the clients only send the fields that have been modified.
if 'remaining_leaves' in vals and not vals['remaining_leaves']:
del(vals['remaining_leaves'])
return super(hr_employee, self).create(cr, uid, vals, context=context)
def _set_remaining_days(self, cr, uid, empl_id, name, value, arg, context=None):
employee = self.browse(cr, uid, empl_id, context=context)
diff = value - employee.remaining_leaves
type_obj = self.pool.get('hr.holidays.status')
@@ -366,7 +374,7 @@ class hr_employee(osv.osv):
# Find for holidays status
status_ids = type_obj.search(cr, uid, [('limit', '=', False)], context=context)
if len(status_ids) != 1 :
raise osv.except_osv(_('Warning !'),_("To use this feature, you must have only one leave type without the option 'Allow to Override Limit' set. (%s Found).") % (len(status_ids)))
raise osv.except_osv(_('Warning !'),_("The feature behind the field 'Remaining Legal Leaves' can only be used when there is only one leave type with the option 'Allow to Override Limit' unchecked. (%s Found). Otherwise, the update is ambiguous as we cannot decide on which leave type the update has to be done. \nYou may prefer to use the classic menus 'Leave Requests' and 'Allocation Requests' located in 'Human Resources \ Leaves' to manage the leave days of the employees if the configuration does not allow to use this field.") % (len(status_ids)))
status_id = status_ids and status_ids[0] or False
if not status_id:
return False
@@ -382,7 +390,7 @@ class hr_employee(osv.osv):
wf_service.trg_validate(uid, 'hr.holidays', leave_id, 'second_validate', cr)
return True
def _get_remaining_days(self, cr, uid, ids, name, args, context=None):
def _get_remaining_days(self, cr, uid, ids, name, args, context=None):
cr.execute("""SELECT
sum(h.number_of_days) as days,
h.employee_id
@@ -403,7 +411,7 @@ class hr_employee(osv.osv):
remaining[employee_id] = 0.0
return remaining
def _get_leave_status(self, cr, uid, ids, name, args, context=None):
def _get_leave_status(self, cr, uid, ids, name, args, context=None):
holidays_id = self.pool.get('hr.holidays').search(cr, uid,
[('employee_id', 'in', ids), ('date_from','<=',time.strftime('%Y-%m-%d %H:%M:%S')),
('date_to','>=',time.strftime('%Y-%m-%d %H:%M:%S')),('type','=','remove'),('state','not in',('cancel','refuse'))],
@@ -419,7 +427,7 @@ class hr_employee(osv.osv):
result[holiday.employee_id.id]['current_leave_id'] = holiday.holiday_status_id.id
return result
_columns = {
_columns = {
'remaining_leaves': fields.function(_get_remaining_days, string='Remaining Legal Leaves', fnct_inv=_set_remaining_days, type="float", help='Total number of legal leaves allocated to this employee, change this value to create allocation/leave requests.'),
'current_leave_state': fields.function(_get_leave_status, multi="leave_status", string="Current Leave Status", type="selection",
selection=[('draft', 'New'), ('confirm', 'Waiting Approval'), ('refuse', 'Refused'),
+2 -2
View File
@@ -312,7 +312,7 @@
<field name="name">Allocation Requests</field>
<field name="res_model">hr.holidays</field>
<field name="view_type">form</field>
<field name="context">{"search_default_my_leaves": 1,'default_type':'add',"search_default_department_id": department_id}</field>
<field name="context">{'default_type':'add',"search_default_department_id": department_id}</field>
<field name="domain">[('type','=','add')]</field>
<field name="view_id" ref="allocation_leave_new"/>
<field name="search_view_id" ref="view_hr_holidays_filter"/>
@@ -340,7 +340,7 @@
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="view_id" eval="view_holiday_simple"/>
<field name="context">{'search_default_my_leaves': 1, 'search_default_group_type': 1, 'search_default_validated': 1}</field>
<field name="context">{'search_default_group_type': 1, 'search_default_validated': 1}</field>
<field name="domain">[('holiday_type','=','employee')]</field>
<field name="search_view_id" ref="view_hr_holidays_filter"/>
</record>
+16 -12
View File
@@ -585,14 +585,15 @@ class hr_payslip(osv.osv):
#check if the rule can be applied
if obj_rule.satisfy_condition(cr, uid, rule.id, localdict, context=context) and rule.id not in blacklist:
#compute the amount of the rule
amount, qty = obj_rule.compute_rule(cr, uid, rule.id, localdict, context=context)
amount, qty, rate = obj_rule.compute_rule(cr, uid, rule.id, localdict, context=context)
#check if there is already a rule computed with that code
previous_amount = rule.code in localdict and localdict[rule.code] or 0.0
#set/overwrite the amount computed for this rule in the localdict
localdict[rule.code] = amount * qty
tot_rule = amount * qty * rate / 100.0
localdict[rule.code] = tot_rule
rules[rule.code] = rule
#sum the amount for its salary category
localdict = _sum_salary_rule_category(localdict, rule.category_id, (amount * qty) - previous_amount)
localdict = _sum_salary_rule_category(localdict, rule.category_id, tot_rule - previous_amount)
#create/overwrite the rule in the temporary results
result_dict[key] = {
'salary_rule_id': rule.id,
@@ -616,6 +617,7 @@ class hr_payslip(osv.osv):
'amount': amount,
'employee_id': contract.employee_id.id,
'quantity': qty,
'rate': rate,
}
else:
#blacklist this rule and its children
@@ -780,7 +782,7 @@ class hr_salary_rule(osv.osv):
('code','Python Code'),
],'Amount Type', select=True, required=True, help="The computation method for the rule amount."),
'amount_fix': fields.float('Fixed Amount', digits_compute=dp.get_precision('Payroll'),),
'amount_percentage': fields.float('Percentage (%)', digits_compute=dp.get_precision('Payroll'), help='For example, enter 50.0 to apply a percentage of 50%'),
'amount_percentage': fields.float('Percentage (%)', digits_compute=dp.get_precision('Payroll Rate'), help='For example, enter 50.0 to apply a percentage of 50%'),
'amount_python_compute':fields.text('Python Code'),
'amount_percentage_base':fields.char('Percentage based on',size=1024, required=False, readonly=False, help='result will be affected to a variable'),
'child_ids':fields.one2many('hr.salary.rule', 'parent_rule_id', 'Child Salary Rule'),
@@ -846,26 +848,26 @@ result = rules.NET > categories.NET * 0.10''',
#TODO should add some checks on the type of result (should be float)
def compute_rule(self, cr, uid, rule_id, localdict, context=None):
"""
@param rule_id: id of rule to compute
@param localdict: dictionary containing the environement in which to compute the rule
@return: returns the result of computation and the quantity as floats
:param rule_id: id of rule to compute
:param localdict: dictionary containing the environement in which to compute the rule
:return: returns a tuple build as the base/amount computed, the quantity and the rate
:rtype: (float, float, float)
"""
rule = self.browse(cr, uid, rule_id, context=context)
if rule.amount_select == 'fix':
try:
return rule.amount_fix, eval(rule.quantity, localdict)
return rule.amount_fix, eval(rule.quantity, localdict), 100.0
except:
raise osv.except_osv(_('Error'), _('Wrong quantity defined for salary rule %s (%s)')% (rule.name, rule.code))
elif rule.amount_select == 'percentage':
try:
amount = rule.amount_percentage * eval(rule.amount_percentage_base, localdict) / 100
return amount, eval(rule.quantity, localdict)
return eval(rule.amount_percentage_base, localdict), eval(rule.quantity, localdict), rule.amount_percentage
except:
raise osv.except_osv(_('Error'), _('Wrong percentage base or quantity defined for salary rule %s (%s)')% (rule.name, rule.code))
else:
try:
eval(rule.amount_python_compute, localdict, mode='exec', nocopy=True)
return localdict['result'], 'result_qty' in localdict and localdict['result_qty'] or 1.0
return localdict['result'], 'result_qty' in localdict and localdict['result_qty'] or 1.0, 'result_rate' in localdict and localdict['result_rate'] or 100.0
except:
raise osv.except_osv(_('Error'), _('Wrong python code defined for salary rule %s (%s) ')% (rule.name, rule.code))
@@ -923,7 +925,7 @@ class hr_payslip_line(osv.osv):
if not ids: return {}
res = {}
for line in self.browse(cr, uid, ids, context=context):
res[line.id] = float(line.quantity) * line.amount
res[line.id] = float(line.quantity) * line.amount * line.rate / 100
return res
_columns = {
@@ -931,6 +933,7 @@ class hr_payslip_line(osv.osv):
'salary_rule_id':fields.many2one('hr.salary.rule', 'Rule', required=True),
'employee_id':fields.many2one('hr.employee', 'Employee', required=True),
'contract_id':fields.many2one('hr.contract', 'Contract', required=True, select=True),
'rate': fields.float('Rate (%)', digits_compute=dp.get_precision('Payroll Rate')),
'amount': fields.float('Amount', digits_compute=dp.get_precision('Payroll')),
'quantity': fields.float('Quantity', digits_compute=dp.get_precision('Payroll')),
'total': fields.function(_calculate_total, method=True, type='float', string='Total', digits_compute=dp.get_precision('Payroll'),store=True ),
@@ -938,6 +941,7 @@ class hr_payslip_line(osv.osv):
_defaults = {
'quantity': 1.0,
'rate': 100.0,
}
hr_payslip_line()
+6
View File
@@ -79,5 +79,11 @@
<field name="digits">2</field>
</record>
<record forcecreate="True" id="decimal_payroll_rate" model="decimal.precision">
<field name="name">Payroll Rate</field>
<field name="digits">4</field>
</record>
</data>
</openerp>
+6 -3
View File
@@ -169,7 +169,8 @@
<field name="sequence" groups="base.group_extended"/>
<field name="name"/>
<field name="code"/>
<field name="quantity" string="Quantity/Rate"/>
<field name="quantity"/>
<field name="rate"/>
<field name="amount"/>
<field name="total"/>
<field name="amount_select" invisible="1"/>
@@ -319,7 +320,8 @@
<field name="code"/>
<field name="category_id"/>
<field name="sequence" invisible="1"/>
<field name="quantity" string="Quantity/Rate"/>
<field name="quantity"/>
<field name="rate"/>
<field name="amount"/>
<field name="total"/>
</tree>
@@ -329,7 +331,8 @@
<field name="code" select="1"/>
<field name="category_id"/>
<field name="sequence" groups="base.group_extended"/>
<field name="quantity" string="Quantity/Rate"/>
<field name="quantity"/>
<field name="rate"/>
<field name="amount"/>
<field name="total"/>
<field name="salary_rule_id" groups="base.group_extended"/>
File diff suppressed because it is too large Load Diff
+140
View File
@@ -0,0 +1,140 @@
# Arabic translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-12-22 18:44+0000\n"
"PO-Revision-Date: 2012-01-03 12:54+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Arabic <ar@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-01-04 04:48+0000\n"
"X-Generator: Launchpad (build 14616)\n"
#. module: hr_payroll_account
#: field:hr.payslip,move_id:0
msgid "Accounting Entry"
msgstr ""
#. module: hr_payroll_account
#: field:hr.salary.rule,account_tax_id:0
msgid "Tax Code"
msgstr ""
#. module: hr_payroll_account
#: field:hr.payslip,journal_id:0
#: field:hr.payslip.run,journal_id:0
msgid "Expense Journal"
msgstr ""
#. module: hr_payroll_account
#: code:addons/hr_payroll_account/hr_payroll_account.py:157
#: code:addons/hr_payroll_account/hr_payroll_account.py:173
#, python-format
msgid "Adjustment Entry"
msgstr ""
#. module: hr_payroll_account
#: field:hr.contract,analytic_account_id:0
#: field:hr.salary.rule,analytic_account_id:0
msgid "Analytic Account"
msgstr ""
#. module: hr_payroll_account
#: model:ir.model,name:hr_payroll_account.model_hr_salary_rule
msgid "hr.salary.rule"
msgstr ""
#. module: hr_payroll_account
#: model:ir.model,name:hr_payroll_account.model_hr_payslip_run
msgid "Payslip Batches"
msgstr ""
#. module: hr_payroll_account
#: field:hr.contract,journal_id:0
msgid "Salary Journal"
msgstr ""
#. module: hr_payroll_account
#: model:ir.model,name:hr_payroll_account.model_hr_payslip
msgid "Pay Slip"
msgstr ""
#. module: hr_payroll_account
#: constraint:hr.payslip:0
msgid "Payslip 'Date From' must be before 'Date To'."
msgstr ""
#. module: hr_payroll_account
#: help:hr.payslip,period_id:0
msgid "Keep empty to use the period of the validation(Payslip) date."
msgstr ""
#. module: hr_payroll_account
#: code:addons/hr_payroll_account/hr_payroll_account.py:171
#, python-format
msgid ""
"The Expense Journal \"%s\" has not properly configured the Debit Account!"
msgstr ""
#. module: hr_payroll_account
#: code:addons/hr_payroll_account/hr_payroll_account.py:155
#, python-format
msgid ""
"The Expense Journal \"%s\" has not properly configured the Credit Account!"
msgstr ""
#. module: hr_payroll_account
#: field:hr.salary.rule,account_debit:0
msgid "Debit Account"
msgstr ""
#. module: hr_payroll_account
#: code:addons/hr_payroll_account/hr_payroll_account.py:102
#, python-format
msgid "Payslip of %s"
msgstr ""
#. module: hr_payroll_account
#: model:ir.model,name:hr_payroll_account.model_hr_contract
msgid "Contract"
msgstr ""
#. module: hr_payroll_account
#: constraint:hr.contract:0
msgid "Error! contract start-date must be lower then contract end-date."
msgstr ""
#. module: hr_payroll_account
#: field:hr.payslip,period_id:0
msgid "Force Period"
msgstr ""
#. module: hr_payroll_account
#: field:hr.salary.rule,account_credit:0
msgid "Credit Account"
msgstr ""
#. module: hr_payroll_account
#: model:ir.model,name:hr_payroll_account.model_hr_payslip_employees
msgid "Generate payslips for all selected employees"
msgstr ""
#. module: hr_payroll_account
#: code:addons/hr_payroll_account/hr_payroll_account.py:155
#: code:addons/hr_payroll_account/hr_payroll_account.py:171
#, python-format
msgid "Configuration Error!"
msgstr ""
#. module: hr_payroll_account
#: view:hr.contract:0
#: view:hr.salary.rule:0
msgid "Accounting"
msgstr ""
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -89,7 +89,7 @@
<field name="res_model">hr.analytic.timesheet</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="context">{"search_default_user_id":uid, "search_default_today":1}</field>
<field name="context">{"search_default_today":1}</field>
<field name="search_view_id" ref="hr_timesheet_line_search"/>
<field name="help">Through this menu you can register and follow your workings hours by project every day.</field>
</record>
@@ -170,16 +170,16 @@ hr_analytic_timesheet()
class account_invoice(osv.osv):
_inherit = "account.invoice"
def _get_analytic_lines(self, cr, uid, id):
iml = super(account_invoice, self)._get_analytic_lines(cr, uid, id)
def _get_analytic_lines(self, cr, uid, id, context=None):
iml = super(account_invoice, self)._get_analytic_lines(cr, uid, id, context=context)
inv = self.browse(cr, uid, [id])[0]
inv = self.browse(cr, uid, [id], context=context)[0]
if inv.type == 'in_invoice':
obj_analytic_account = self.pool.get('account.analytic.account')
for il in iml:
if il['account_analytic_id']:
# *-* browse (or refactor to avoid read inside the loop)
to_invoice = obj_analytic_account.read(cr, uid, [il['account_analytic_id']], ['to_invoice'])[0]['to_invoice']
to_invoice = obj_analytic_account.read(cr, uid, [il['account_analytic_id']], ['to_invoice'], context=context)[0]['to_invoice']
if to_invoice:
il['analytic_lines'][0][2]['to_invoice'] = to_invoice[0]
return iml
@@ -23,7 +23,7 @@
<field name="state" readonly="1" widget="statusbar"
statusbar_visible="open,pending,close" statusbar_colors='{"pending":"red", "template":"blue"}'/>
<button name="set_cancel" string="Cancel" type="object" states="open,pending" icon="gtk-cancel"/>
<button name="set_open" string="Reactivate Account" type="object" states="pending,cancelled,close,draft" icon="gtk-ok"/>
<button name="set_open" string="Re-open project" type="object" states="pending,cancelled,close,draft" icon="gtk-ok"/>
<button name="set_pending" string="Pending" type="object" states="open" icon="gtk-media-pause"/>
<button name="set_close" string="Close" type="object" states="open,pending" icon="terp-dialog-close"/>
</group>
+2 -2
View File
@@ -120,9 +120,9 @@
<record id="pst_qc_en" model="account.tax.template">
<field name="chart_template_id" ref="ca_en_chart_template_en"/>
<field name="name">PST - 8.5%</field>
<field name="name">PST - 9.5%</field>
<field name="description">PST</field>
<field name="amount">0.085000</field>
<field name="amount">0.095000</field>
<field name="type">percent</field>
<field name="sequence">1</field>
<field name="account_collected_id" ref="chart1182_en"/>
+2 -2
View File
@@ -120,9 +120,9 @@
<record id="tvq_fr" model="account.tax.template">
<field name="chart_template_id" ref="ca_fr_chart_template_fr"/>
<field name="name">TVQ - 8.5%</field>
<field name="name">TVQ - 9.5%</field>
<field name="description">TVQ</field>
<field name="amount">0.085000</field>
<field name="amount">0.095000</field>
<field name="type">percent</field>
<field name="sequence">1</field>
<field name="account_collected_id" ref="chart1182_fr"/>
+235 -235
View File
@@ -1,235 +1,235 @@
"id","code","name","parent_id:id","user_type:id","type","reconcile"
"0","0","Azienda",,"account_type_view","view","FALSE"
"1","1","ATTIVO ","0","account_type_view","view","TRUE"
"11","11","IMMOBILIZZAZIONI IMMATERIALI ","1","account_type_view","view","TRUE"
"1101","1101","costi di impianto ","11","account_type_asset","other","TRUE"
"1106","1106","software ","11","account_type_asset","other","TRUE"
"1108","1108","avviamento ","11","account_type_asset","other","TRUE"
"1111","1111","fondo ammortamento costi di impianto ","11","account_type_asset","other","TRUE"
"1116","1116","fondo ammortamento software ","11","account_type_asset","other","TRUE"
"1118","1118","fondo ammortamento avviamento ","11","account_type_asset","other","TRUE"
"12","12","IMMOBILIZZAZIONI MATERIALI ","1","account_type_view","view","TRUE"
"1201","1201","fabbricati ","12","account_type_asset","other","TRUE"
"1202","1202","impianti e macchinari ","12","account_type_asset","other","TRUE"
"1204","1204","attrezzature commerciali ","12","account_type_asset","other","TRUE"
"1205","1205","macchine d'ufficio ","12","account_type_asset","other","TRUE"
"1206","1206","arredamento ","12","account_type_asset","other","TRUE"
"1207","1207","automezzi ","12","account_type_asset","other","TRUE"
"1208","1208","imballaggi durevoli ","12","account_type_asset","other","TRUE"
"1211","1211","fondo ammortamento fabbricati ","12","account_type_asset","other","TRUE"
"1212","1212","fondo ammortamento impianti e macchinari ","12","account_type_asset","other","TRUE"
"1214","1214","fondo ammortamento attrezzature commerciali ","12","account_type_asset","other","TRUE"
"1215","1215","fondo ammortamento macchine d'ufficio ","12","account_type_asset","other","TRUE"
"1216","1216","fondo ammortamento arredamento ","12","account_type_asset","other","TRUE"
"1217","1217","fondo ammortamento automezzi ","12","account_type_asset","other","TRUE"
"1218","1218","fondo ammortamento imballaggi durevoli ","12","account_type_asset","other","TRUE"
"1220","1220","fornitori immobilizzazioni c/acconti ","12","account_type_asset","other","TRUE"
"13","13","IMMOBILIZZAZIONI FINANZIARIE ","1","account_type_view","view","TRUE"
"1301","1301","mutui attivi ","13","account_type_asset","other","TRUE"
"14","14","RIMANENZE ","1","account_type_view","view","TRUE"
"1401","1401","materie di consumo ","14","account_type_asset","other","TRUE"
"1404","1404","merci ","14","account_type_asset","other","TRUE"
"1410","1410","fornitori c/acconti ","14","account_type_asset","other","TRUE"
"15","15","CREDITI COMMERCIALI ","1","account_type_view","view","TRUE"
"1501","1501","crediti v/clienti ","15","account_type_receivable","receivable","TRUE"
"1502","1502","crediti commerciali diversi ","15","account_type_receivable","other","TRUE"
"1503","1503","clienti c/spese anticipate ","15","account_type_receivable","receivable","TRUE"
"1505","1505","cambiali attive ","15","account_type_receivable","other","TRUE"
"1506","1506","cambiali allo sconto ","15","account_type_receivable","other","TRUE"
"1507","1507","cambiali all'incasso ","15","account_type_receivable","other","TRUE"
"1509","1509","fatture da emettere ","15","account_type_receivable","other","TRUE"
"1510","1510","crediti insoluti ","15","account_type_receivable","other","TRUE"
"1511","1511","cambiali insolute ","15","account_type_receivable","other","TRUE"
"1531","1531","crediti da liquidare ","15","account_type_receivable","other","TRUE"
"1540","1540","fondo svalutazione crediti ","15","account_type_receivable","other","TRUE"
"1541","1541","fondo rischi su crediti ","15","account_type_receivable","other","TRUE"
"16","16","CREDITI DIVERSI ","1","account_type_view","view","TRUE"
"1601","1601","IVA n/credito ","16","account_type_tax","other","TRUE"
"1602","1602","IVA c/acconto ","16","account_type_tax","other","TRUE"
"1605","1605","crediti per IVA ","16","account_type_tax","other","TRUE"
"1607","1607","imposte c/acconto ","16","account_type_tax","other","TRUE"
"1608","1608","crediti per imposte ","16","account_type_tax","other","TRUE"
"1609","1609","crediti per ritenute subite ","16","account_type_asset","other","TRUE"
"1610","1610","crediti per cauzioni ","16","account_type_asset","other","TRUE"
"1620","1620","personale c/acconti ","16","account_type_asset","other","TRUE"
"1630","1630","crediti v/istituti previdenziali ","16","account_type_asset","other","TRUE"
"1640","1640","debitori diversi ","16","account_type_receivable","receivable","TRUE"
"18","18","DISPONIBILITÀ LIQUIDE ","1","account_type_view","view","TRUE"
"1801","1801","banche c/c ","18","account_type_bank","liquidity","TRUE"
"1810","1810","c/c postali ","18","account_type_cash","liquidity","TRUE"
"1820","1820","denaro in cassa ","18","account_type_cash","liquidity","TRUE"
"1821","1821","assegni ","18","account_type_cash","liquidity","TRUE"
"1822","1822","valori bollati ","18","account_type_cash","liquidity","TRUE"
"19","19","RATEI E RISCONTI ATTIVI ","1","account_type_view","view","TRUE"
"1901","1901","ratei attivi ","19","account_type_asset","other","TRUE"
"1902","1902","risconti attivi ","19","account_type_asset","other","TRUE"
"2","2","PASSIVO ","0","account_type_view","view","TRUE"
"20","20","PATRIMONIO NETTO ","2","account_type_view","view","TRUE"
"2101","2101","patrimonio netto ","20","account_type_asset","other","TRUE"
"2102","2102","utile d'esercizio ","20","account_type_asset","other","TRUE"
"2103","2103","perdita d'esercizio ","20","account_type_asset","other","TRUE"
"2104","2104","prelevamenti extra gestione ","20","account_type_asset","other","TRUE"
"2105","2105","titolare c/ritenute subite ","20","account_type_asset","other","TRUE"
"22","22","FONDI PER RISCHI E ONERI ","2","account_type_view","view","TRUE"
"2201","2201","fondo per imposte ","22","account_type_asset","other","TRUE"
"2204","2204","fondo responsabilità civile ","22","account_type_asset","other","TRUE"
"2205","2205","fondo spese future ","22","account_type_asset","other","TRUE"
"2211","2211","fondo manutenzioni programmate ","22","account_type_asset","other","TRUE"
"23","23","TRATTAMENTO FINE RAPPORTO DI LAVORO ","2","account_type_view","view","TRUE"
"2301","2301","debiti per TFRL ","23","account_type_asset","other","TRUE"
"24","24","DEBITI FINANZIARI ","2","account_type_view","view","TRUE"
"2410","2410","mutui passivi ","24","account_type_asset","other","TRUE"
"2411","2411","banche c/sovvenzioni ","24","account_type_asset","other","TRUE"
"2420","2420","banche c/c passivi ","24","account_type_asset","other","TRUE"
"2421","2421","banche c/RIBA all'incasso ","24","account_type_asset","other","TRUE"
"2422","2422","banche c/cambiali all'incasso ","24","account_type_asset","other","TRUE"
"2423","2423","banche c/anticipi su fatture ","24","account_type_asset","other","TRUE"
"2440","2440","debiti v/altri finanziatori ","24","account_type_asset","other","TRUE"
"25","25","DEBITI COMMERCIALI ","2","account_type_view","view","TRUE"
"2501","2501","debiti v/fornitori ","25","account_type_payable","payable","TRUE"
"2503","2503","cambiali passive ","25","account_type_asset","other","TRUE"
"2520","2520","fatture da ricevere ","25","account_type_asset","other","TRUE"
"2521","2521","debiti da liquidare ","25","account_type_asset","other","TRUE"
"2530","2530","clienti c/acconti ","25","account_type_payable","payable","TRUE"
"26","26","DEBITI DIVERSI ","2","account_type_view","view","TRUE"
"2601","2601","IVA n/debito ","26","account_type_tax","other","TRUE"
"2602","2602","debiti per ritenute da versare ","26","account_type_tax","other","TRUE"
"2605","2605","erario c/IVA ","26","account_type_tax","other","TRUE"
"2606","2606","debiti per imposte ","26","account_type_tax","other","TRUE"
"2619","2619","debiti per cauzioni ","26","account_type_asset","other","TRUE"
"2620","2620","personale c/retribuzioni ","26","account_type_asset","other","TRUE"
"2621","2621","personale c/liquidazioni ","26","account_type_asset","other","TRUE"
"2622","2622","clienti c/cessione ","26","account_type_asset","other","TRUE"
"2630","2630","debiti v/istituti previdenziali ","26","account_type_asset","other","TRUE"
"2640","2640","creditori diversi ","26","account_type_payable","payable","TRUE"
"27","27","RATEI E RISCONTI PASSIVI ","2","account_type_view","view","TRUE"
"2701","2701","ratei passivi ","27","account_type_asset","other","TRUE"
"2702","2702","risconti passivi ","27","account_type_asset","other","TRUE"
"28","28","CONTI TRANSITORI E DIVERSI ","2","account_type_view","view","TRUE"
"2801","2801","bilancio di apertura ","28","account_type_asset","other","TRUE"
"2802","2802","bilancio di chiusura ","28","account_type_asset","other","TRUE"
"2810","2810","IVA c/liquidazioni ","28","account_type_asset","other","TRUE"
"2811","2811","istituti previdenziali ","28","account_type_asset","other","TRUE"
"2820","2820","banca ... c/c ","28","account_type_asset","other","TRUE"
"2821","2821","banca ... c/c ","28","account_type_asset","other","TRUE"
"2822","2822","banca ... c/c ","28","account_type_asset","other","TRUE"
"29","29","CONTI DEI SISTEMI SUPPLEMENTARI ","2","account_type_view","view","TRUE"
"2901","2901","beni di terzi ","29","account_type_asset","other","TRUE"
"2902","2902","depositanti beni ","29","account_type_asset","other","TRUE"
"2911","2911","merci da ricevere ","29","account_type_asset","other","TRUE"
"2912","2912","fornitori c/impegni ","29","account_type_asset","other","TRUE"
"2913","2913","impegni per beni in leasing ","29","account_type_asset","other","TRUE"
"2914","2914","creditori c/leasing ","29","account_type_asset","other","TRUE"
"2916","2916","clienti c/impegni ","29","account_type_asset","other","TRUE"
"2917","2917","merci da consegnare ","29","account_type_asset","other","TRUE"
"2921","2921","rischi per effetti scontati ","29","account_type_asset","other","TRUE"
"2922","2922","banche c/effetti scontati ","29","account_type_asset","other","TRUE"
"2926","2926","rischi per fideiussioni ","29","account_type_asset","other","TRUE"
"2927","2927","creditori per fideiussioni ","29","account_type_asset","other","TRUE"
"2931","2931","rischi per avalli ","29","account_type_asset","other","TRUE"
"2932","2932","creditori per avalli ","29","account_type_asset","other","TRUE"
"3","3","VALORE DELLA PRODUZIONE ","0","account_type_view","view","TRUE"
"31","31","VENDITE E PRESTAZIONI ","3","account_type_view","view","TRUE"
"3101","3101","merci c/vendite ","31","account_type_income","other","TRUE"
"3103","3103","rimborsi spese di vendita ","31","account_type_income","other","TRUE"
"3110","3110","resi su vendite ","31","account_type_income","other","TRUE"
"3111","3111","ribassi e abbuoni passivi ","31","account_type_income","other","TRUE"
"3112","3112","premi su vendite ","31","account_type_income","other","TRUE"
"32","32","RICAVI E PROVENTI DIVERSI ","3","account_type_view","view","TRUE"
"3201","3201","fitti attivi ","32","account_type_income","other","TRUE"
"3202","3202","proventi vari ","32","account_type_income","other","TRUE"
"3210","3210","arrotondamenti attivi ","32","account_type_income","other","TRUE"
"3220","3220","plusvalenze ordinarie diverse ","32","account_type_income","other","TRUE"
"3230","3230","sopravvenienze attive ordinarie diverse ","32","account_type_income","other","TRUE"
"3240","3240","insussistenze attive ordinarie diverse ","32","account_type_income","other","TRUE"
"4","4","COSTI DELLA PRODUZIONE ","0","account_type_view","view","TRUE"
"41","41","COSTO DEL VENDUTO ","4","account_type_view","view","TRUE"
"4101","4101","merci c/acquisti ","41","account_type_expense","other","TRUE"
"4102","4102","materie di consumo c/acquisti ","41","account_type_expense","other","TRUE"
"4105","4105","merci c/apporti ","41","account_type_expense","other","TRUE"
"4110","4110","resi su acquisti ","41","account_type_expense","other","TRUE"
"4111","4111","ribassi e abbuoni attivi ","41","account_type_expense","other","TRUE"
"4112","4112","premi su acquisti ","41","account_type_expense","other","TRUE"
"4121","4121","merci c/esistenze iniziali ","41","account_type_expense","other","TRUE"
"4122","4122","materie di consumo c/esistenze iniziali ","41","account_type_expense","other","TRUE"
"4131","4131","merci c/rimanenze finali ","41","account_type_expense","other","TRUE"
"4132","4132","materie di consumo c/rimanenze finali ","41","account_type_expense","other","TRUE"
"42","42","COSTI PER SERVIZI ","4","account_type_view","view","TRUE"
"4201","4201","costi di trasporto ","42","account_type_expense","other","TRUE"
"4202","4202","costi per energia ","42","account_type_expense","other","TRUE"
"4203","4203","costi di pubblicità ","42","account_type_expense","other","TRUE"
"4204","4204","costi di consulenze ","42","account_type_expense","other","TRUE"
"4205","4205","costi postali ","42","account_type_expense","other","TRUE"
"4206","4206","costi telefonici ","42","account_type_expense","other","TRUE"
"4207","4207","costi di assicurazione ","42","account_type_expense","other","TRUE"
"4208","4208","costi di vigilanza ","42","account_type_expense","other","TRUE"
"4209","4209","costi per i locali ","42","account_type_expense","other","TRUE"
"4210","4210","costi di esercizio automezzi ","42","account_type_expense","other","TRUE"
"4211","4211","costi di manutenzione e riparazione ","42","account_type_expense","other","TRUE"
"4212","4212","provvigioni passive ","42","account_type_expense","other","TRUE"
"4213","4213","spese di incasso ","42","account_type_expense","other","TRUE"
"43","43","COSTI PER GODIMENTO BENI DI TERZI ","4","account_type_view","view","TRUE"
"4301","4301","fitti passivi ","43","account_type_expense","other","TRUE"
"4302","4302","canoni di leasing ","43","account_type_expense","other","TRUE"
"44","44","COSTI PER IL PERSONALE ","4","account_type_view","view","TRUE"
"4401","4401","salari e stipendi ","44","account_type_expense","other","TRUE"
"4402","4402","oneri sociali ","44","account_type_expense","other","TRUE"
"4403","4403","TFRL ","44","account_type_expense","other","TRUE"
"4404","4404","altri costi per il personale ","44","account_type_expense","other","TRUE"
"45","45","AMMORTAMENTI IMMOBILIZZAZIONI IMMATERIALI ","4","account_type_view","view","TRUE"
"4501","4501","ammortamento costi di impianto ","45","account_type_p_l","other","TRUE"
"4506","4506","ammortamento software ","45","account_type_p_l","other","TRUE"
"4508","4508","ammortamento avviamento ","45","account_type_p_l","other","TRUE"
"46","46","AMMORTAMENTI IMMOBILIZZAZIONI MATERIALI ","4","account_type_view","view","TRUE"
"4601","4601","ammortamento fabbricati ","46","account_type_p_l","other","TRUE"
"4602","4602","ammortamento impianti e macchinari ","46","account_type_p_l","other","TRUE"
"4604","4604","ammortamento attrezzature commerciali ","46","account_type_p_l","other","TRUE"
"4605","4605","ammortamento macchine d'ufficio ","46","account_type_p_l","other","TRUE"
"4606","4606","ammortamento arredamento ","46","account_type_p_l","other","TRUE"
"4607","4607","ammortamento automezzi ","46","account_type_p_l","other","TRUE"
"4608","4608","ammortamento imballaggi durevoli ","46","account_type_p_l","other","TRUE"
"47","47","SVALUTAZIONI ","4","account_type_view","view","TRUE"
"4701","4701","svalutazioni immobilizzazioni immateriali ","47","account_type_p_l","other","TRUE"
"4702","4702","svalutazioni immobilizzazioni materiali ","47","account_type_p_l","other","TRUE"
"4706","4706","svalutazione crediti ","47","account_type_p_l","other","TRUE"
"48","48","ACCANTONAMENTI ","4","account_type_view","view","TRUE"
"481","481","ACCANTONAMENTI PER RISCHI ","48","account_type_view","view","TRUE"
"4814","4814","accantonamento per responsabilità civile ","481","account_type_p_l","other","TRUE"
"482","482","ALTRI ACCANTONAMENTI ","48","account_type_view","view","TRUE"
"4821","4821","accantonamento per spese future ","482","account_type_p_l","other","TRUE"
"4823","4823","accantonamento per manutenzioni programmate ","482","account_type_p_l","other","TRUE"
"49","49","ONERI DIVERSI ","4","account_type_view","view","TRUE"
"4901","4901","oneri fiscali diversi ","49","account_type_p_l","other","TRUE"
"4903","4903","oneri vari ","49","account_type_p_l","other","TRUE"
"4905","4905","perdite su crediti ","49","account_type_p_l","other","TRUE"
"4910","4910","arrotondamenti passivi ","49","account_type_p_l","other","TRUE"
"4920","4920","minusvalenze ordinarie diverse ","49","account_type_p_l","other","TRUE"
"4930","4930","sopravvenienze passive ordinarie diverse ","49","account_type_p_l","other","TRUE"
"4940","4940","insussistenze passive ordinarie diverse ","49","account_type_p_l","other","TRUE"
"5","5","PROVENTI E ONERI FINANZIARI ","0","account_type_view","view","TRUE"
"51","51","PROVENTI FINANZIARI ","5","account_type_view","view","TRUE"
"5110","5110","interessi attivi v/clienti ","51","account_type_p_l","other","TRUE"
"5115","5115","interessi attivi bancari ","51","account_type_p_l","other","TRUE"
"5116","5116","interessi attivi postali ","51","account_type_p_l","other","TRUE"
"5140","5140","proventi finanziari diversi ","51","account_type_p_l","other","TRUE"
"52","52","ONERI FINANZIARI ","5","account_type_view","view","TRUE"
"5201","5201","interessi passivi v/fornitori ","52","account_type_p_l","other","TRUE"
"5202","5202","interessi passivi bancari ","52","account_type_p_l","other","TRUE"
"5203","5203","sconti passivi bancari ","52","account_type_p_l","other","TRUE"
"5210","5210","interessi passivi su mutui ","52","account_type_p_l","other","TRUE"
"5240","5240","oneri finanziari diversi ","52","account_type_p_l","other","TRUE"
"7","7","PROVENTI E ONERI STRAORDINARI ","0","account_type_view","view","TRUE"
"71","71","PROVENTI STRAORDINARI ","7","account_type_view","view","TRUE"
"7101","7101","plusvalenze straordinarie ","71","account_type_p_l","other","TRUE"
"7102","7102","sopravvenienze attive straordinarie ","71","account_type_p_l","other","TRUE"
"7103","7103","insussistenze attive straordinarie ","71","account_type_p_l","other","TRUE"
"72","72","ONERI STRAORDINARI ","7","account_type_view","view","TRUE"
"7201","7201","minusvalenze straordinarie ","72","account_type_p_l","other","TRUE"
"7202","7202","sopravvenienze passive straordinarie ","72","account_type_p_l","other","TRUE"
"7203","7203","insussistenze passive straordinarie ","72","account_type_p_l","other","TRUE"
"7204","7204","imposte esercizi precedenti ","72","account_type_p_l","other","TRUE"
"8","8","IMPOSTE DELL'ESERCIZIO ","0","account_type_view","view","TRUE"
"8101","8101","imposte dell'esercizio ","8","account_type_p_l","other","TRUE"
"9","9","CONTI DI RISULTATO ","0","account_type_view","view","TRUE"
"9101","9101","conto di risultato economico ","9","account_type_p_l","other","TRUE"
"9102","9102","stato patrimoniale","9","account_type_p_l","other","TRUE"
id,code,name,parent_id:id,user_type:id,type,reconcile
0,0,Azienda,,account_type_view,view,FALSE
1,1,ATTIVO ,0,account_type_view,view,TRUE
11,11,IMMOBILIZZAZIONI IMMATERIALI ,1,account_type_view,view,TRUE
1101,1101,costi di impianto ,11,account_type_asset,other,TRUE
1106,1106,software ,11,account_type_asset,other,TRUE
1108,1108,avviamento ,11,account_type_asset,other,TRUE
1111,1111,fondo ammortamento costi di impianto ,11,account_type_asset,other,TRUE
1116,1116,fondo ammortamento software ,11,account_type_asset,other,TRUE
1118,1118,fondo ammortamento avviamento ,11,account_type_asset,other,TRUE
12,12,IMMOBILIZZAZIONI MATERIALI ,1,account_type_view,view,TRUE
1201,1201,fabbricati ,12,account_type_asset,other,TRUE
1202,1202,impianti e macchinari ,12,account_type_asset,other,TRUE
1204,1204,attrezzature commerciali ,12,account_type_asset,other,TRUE
1205,1205,macchine d'ufficio ,12,account_type_asset,other,TRUE
1206,1206,arredamento ,12,account_type_asset,other,TRUE
1207,1207,automezzi ,12,account_type_asset,other,TRUE
1208,1208,imballaggi durevoli ,12,account_type_asset,other,TRUE
1211,1211,fondo ammortamento fabbricati ,12,account_type_asset,other,TRUE
1212,1212,fondo ammortamento impianti e macchinari ,12,account_type_asset,other,TRUE
1214,1214,fondo ammortamento attrezzature commerciali ,12,account_type_asset,other,TRUE
1215,1215,fondo ammortamento macchine d'ufficio ,12,account_type_asset,other,TRUE
1216,1216,fondo ammortamento arredamento ,12,account_type_asset,other,TRUE
1217,1217,fondo ammortamento automezzi ,12,account_type_asset,other,TRUE
1218,1218,fondo ammortamento imballaggi durevoli ,12,account_type_asset,other,TRUE
1220,1220,fornitori immobilizzazioni c/acconti ,12,account_type_asset,other,TRUE
13,13,IMMOBILIZZAZIONI FINANZIARIE ,1,account_type_view,view,TRUE
1301,1301,mutui attivi ,13,account_type_asset,other,TRUE
14,14,RIMANENZE ,1,account_type_view,view,TRUE
1401,1401,materie di consumo ,14,account_type_asset,other,TRUE
1404,1404,merci ,14,account_type_asset,other,TRUE
1410,1410,fornitori c/acconti ,14,account_type_asset,other,TRUE
15,15,CREDITI COMMERCIALI ,1,account_type_view,view,TRUE
1501,1501,crediti v/clienti ,15,account_type_receivable,receivable,TRUE
1502,1502,crediti commerciali diversi ,15,account_type_receivable,other,TRUE
1503,1503,clienti c/spese anticipate ,15,account_type_receivable,receivable,TRUE
1505,1505,cambiali attive ,15,account_type_receivable,other,TRUE
1506,1506,cambiali allo sconto ,15,account_type_receivable,other,TRUE
1507,1507,cambiali all'incasso ,15,account_type_receivable,other,TRUE
1509,1509,fatture da emettere ,15,account_type_receivable,other,TRUE
1510,1510,crediti insoluti ,15,account_type_receivable,other,TRUE
1511,1511,cambiali insolute ,15,account_type_receivable,other,TRUE
1531,1531,crediti da liquidare ,15,account_type_receivable,other,TRUE
1540,1540,fondo svalutazione crediti ,15,account_type_receivable,other,TRUE
1541,1541,fondo rischi su crediti ,15,account_type_receivable,other,TRUE
16,16,CREDITI DIVERSI ,1,account_type_view,view,TRUE
1601,1601,IVA n/credito ,16,account_type_tax,other,TRUE
1602,1602,IVA c/acconto ,16,account_type_tax,other,TRUE
1605,1605,crediti per IVA ,16,account_type_tax,other,TRUE
1607,1607,imposte c/acconto ,16,account_type_tax,other,TRUE
1608,1608,crediti per imposte ,16,account_type_tax,other,TRUE
1609,1609,crediti per ritenute subite ,16,account_type_asset,other,TRUE
1610,1610,crediti per cauzioni ,16,account_type_asset,other,TRUE
1620,1620,personale c/acconti ,16,account_type_asset,other,TRUE
1630,1630,crediti v/istituti previdenziali ,16,account_type_asset,other,TRUE
1640,1640,debitori diversi ,16,account_type_receivable,receivable,TRUE
18,18,DISPONIBILITÀ LIQUIDE ,1,account_type_view,view,TRUE
1801,1801,banche c/c ,18,account_type_bank,liquidity,TRUE
1810,1810,c/c postali ,18,account_type_cash,liquidity,TRUE
1820,1820,denaro in cassa ,18,account_type_cash,liquidity,TRUE
1821,1821,assegni ,18,account_type_cash,liquidity,TRUE
1822,1822,valori bollati ,18,account_type_cash,liquidity,TRUE
19,19,RATEI E RISCONTI ATTIVI ,1,account_type_view,view,TRUE
1901,1901,ratei attivi ,19,account_type_asset,other,TRUE
1902,1902,risconti attivi ,19,account_type_asset,other,TRUE
2,2,PASSIVO ,0,account_type_view,view,TRUE
20,20,PATRIMONIO NETTO ,2,account_type_view,view,TRUE
2101,2101,patrimonio netto ,20,account_type_asset,other,TRUE
2102,2102,utile d'esercizio ,20,account_type_asset,other,TRUE
2103,2103,perdita d'esercizio ,20,account_type_asset,other,TRUE
2104,2104,prelevamenti extra gestione ,20,account_type_asset,other,TRUE
2105,2105,titolare c/ritenute subite ,20,account_type_asset,other,TRUE
22,22,FONDI PER RISCHI E ONERI ,2,account_type_view,view,TRUE
2201,2201,fondo per imposte ,22,account_type_asset,other,TRUE
2204,2204,fondo responsabilità civile ,22,account_type_asset,other,TRUE
2205,2205,fondo spese future ,22,account_type_asset,other,TRUE
2211,2211,fondo manutenzioni programmate ,22,account_type_asset,other,TRUE
23,23,TRATTAMENTO FINE RAPPORTO DI LAVORO ,2,account_type_view,view,TRUE
2301,2301,debiti per TFRL ,23,account_type_asset,other,TRUE
24,24,DEBITI FINANZIARI ,2,account_type_view,view,TRUE
2410,2410,mutui passivi ,24,account_type_asset,other,TRUE
2411,2411,banche c/sovvenzioni ,24,account_type_asset,other,TRUE
2420,2420,banche c/c passivi ,24,account_type_asset,other,TRUE
2421,2421,banche c/RIBA all'incasso ,24,account_type_asset,other,TRUE
2422,2422,banche c/cambiali all'incasso ,24,account_type_asset,other,TRUE
2423,2423,banche c/anticipi su fatture ,24,account_type_asset,other,TRUE
2440,2440,debiti v/altri finanziatori ,24,account_type_asset,other,TRUE
25,25,DEBITI COMMERCIALI ,2,account_type_view,view,TRUE
2501,2501,debiti v/fornitori ,25,account_type_payable,payable,TRUE
2503,2503,cambiali passive ,25,account_type_asset,other,TRUE
2520,2520,fatture da ricevere ,25,account_type_asset,other,TRUE
2521,2521,debiti da liquidare ,25,account_type_asset,other,TRUE
2530,2530,clienti c/acconti ,25,account_type_payable,payable,TRUE
26,26,DEBITI DIVERSI ,2,account_type_view,view,TRUE
2601,2601,IVA n/debito ,26,account_type_tax,other,TRUE
2602,2602,debiti per ritenute da versare ,26,account_type_tax,other,TRUE
2605,2605,erario c/IVA ,26,account_type_payable,payable,TRUE
2606,2606,debiti per imposte ,26,account_type_tax,other,TRUE
2619,2619,debiti per cauzioni ,26,account_type_asset,other,TRUE
2620,2620,personale c/retribuzioni ,26,account_type_asset,other,TRUE
2621,2621,personale c/liquidazioni ,26,account_type_asset,other,TRUE
2622,2622,clienti c/cessione ,26,account_type_asset,other,TRUE
2630,2630,debiti v/istituti previdenziali ,26,account_type_asset,other,TRUE
2640,2640,creditori diversi ,26,account_type_payable,payable,TRUE
27,27,RATEI E RISCONTI PASSIVI ,2,account_type_view,view,TRUE
2701,2701,ratei passivi ,27,account_type_asset,other,TRUE
2702,2702,risconti passivi ,27,account_type_asset,other,TRUE
28,28,CONTI TRANSITORI E DIVERSI ,2,account_type_view,view,TRUE
2801,2801,bilancio di apertura ,28,account_type_asset,other,TRUE
2802,2802,bilancio di chiusura ,28,account_type_asset,other,TRUE
2810,2810,IVA c/liquidazioni ,28,account_type_asset,other,TRUE
2811,2811,istituti previdenziali ,28,account_type_asset,other,TRUE
2820,2820,banca ... c/c ,28,account_type_asset,other,TRUE
2821,2821,banca ... c/c ,28,account_type_asset,other,TRUE
2822,2822,banca ... c/c ,28,account_type_asset,other,TRUE
29,29,CONTI DEI SISTEMI SUPPLEMENTARI ,2,account_type_view,view,TRUE
2901,2901,beni di terzi ,29,account_type_asset,other,TRUE
2902,2902,depositanti beni ,29,account_type_asset,other,TRUE
2911,2911,merci da ricevere ,29,account_type_asset,other,TRUE
2912,2912,fornitori c/impegni ,29,account_type_asset,other,TRUE
2913,2913,impegni per beni in leasing ,29,account_type_asset,other,TRUE
2914,2914,creditori c/leasing ,29,account_type_asset,other,TRUE
2916,2916,clienti c/impegni ,29,account_type_asset,other,TRUE
2917,2917,merci da consegnare ,29,account_type_asset,other,TRUE
2921,2921,rischi per effetti scontati ,29,account_type_asset,other,TRUE
2922,2922,banche c/effetti scontati ,29,account_type_asset,other,TRUE
2926,2926,rischi per fideiussioni ,29,account_type_asset,other,TRUE
2927,2927,creditori per fideiussioni ,29,account_type_asset,other,TRUE
2931,2931,rischi per avalli ,29,account_type_asset,other,TRUE
2932,2932,creditori per avalli ,29,account_type_asset,other,TRUE
3,3,VALORE DELLA PRODUZIONE ,0,account_type_view,view,TRUE
31,31,VENDITE E PRESTAZIONI ,3,account_type_view,view,TRUE
3101,3101,merci c/vendite ,31,account_type_income,other,TRUE
3103,3103,rimborsi spese di vendita ,31,account_type_income,other,TRUE
3110,3110,resi su vendite ,31,account_type_income,other,TRUE
3111,3111,ribassi e abbuoni passivi ,31,account_type_income,other,TRUE
3112,3112,premi su vendite ,31,account_type_income,other,TRUE
32,32,RICAVI E PROVENTI DIVERSI ,3,account_type_view,view,TRUE
3201,3201,fitti attivi ,32,account_type_income,other,TRUE
3202,3202,proventi vari ,32,account_type_income,other,TRUE
3210,3210,arrotondamenti attivi ,32,account_type_income,other,TRUE
3220,3220,plusvalenze ordinarie diverse ,32,account_type_income,other,TRUE
3230,3230,sopravvenienze attive ordinarie diverse ,32,account_type_income,other,TRUE
3240,3240,insussistenze attive ordinarie diverse ,32,account_type_income,other,TRUE
4,4,COSTI DELLA PRODUZIONE ,0,account_type_view,view,TRUE
41,41,COSTO DEL VENDUTO ,4,account_type_view,view,TRUE
4101,4101,merci c/acquisti ,41,account_type_expense,other,TRUE
4102,4102,materie di consumo c/acquisti ,41,account_type_expense,other,TRUE
4105,4105,merci c/apporti ,41,account_type_expense,other,TRUE
4110,4110,resi su acquisti ,41,account_type_expense,other,TRUE
4111,4111,ribassi e abbuoni attivi ,41,account_type_expense,other,TRUE
4112,4112,premi su acquisti ,41,account_type_expense,other,TRUE
4121,4121,merci c/esistenze iniziali ,41,account_type_expense,other,TRUE
4122,4122,materie di consumo c/esistenze iniziali ,41,account_type_expense,other,TRUE
4131,4131,merci c/rimanenze finali ,41,account_type_expense,other,TRUE
4132,4132,materie di consumo c/rimanenze finali ,41,account_type_expense,other,TRUE
42,42,COSTI PER SERVIZI ,4,account_type_view,view,TRUE
4201,4201,costi di trasporto ,42,account_type_expense,other,TRUE
4202,4202,costi per energia ,42,account_type_expense,other,TRUE
4203,4203,costi di pubblicità ,42,account_type_expense,other,TRUE
4204,4204,costi di consulenze ,42,account_type_expense,other,TRUE
4205,4205,costi postali ,42,account_type_expense,other,TRUE
4206,4206,costi telefonici ,42,account_type_expense,other,TRUE
4207,4207,costi di assicurazione ,42,account_type_expense,other,TRUE
4208,4208,costi di vigilanza ,42,account_type_expense,other,TRUE
4209,4209,costi per i locali ,42,account_type_expense,other,TRUE
4210,4210,costi di esercizio automezzi ,42,account_type_expense,other,TRUE
4211,4211,costi di manutenzione e riparazione ,42,account_type_expense,other,TRUE
4212,4212,provvigioni passive ,42,account_type_expense,other,TRUE
4213,4213,spese di incasso ,42,account_type_expense,other,TRUE
43,43,COSTI PER GODIMENTO BENI DI TERZI ,4,account_type_view,view,TRUE
4301,4301,fitti passivi ,43,account_type_expense,other,TRUE
4302,4302,canoni di leasing ,43,account_type_expense,other,TRUE
44,44,COSTI PER IL PERSONALE ,4,account_type_view,view,TRUE
4401,4401,salari e stipendi ,44,account_type_expense,other,TRUE
4402,4402,oneri sociali ,44,account_type_expense,other,TRUE
4403,4403,TFRL ,44,account_type_expense,other,TRUE
4404,4404,altri costi per il personale ,44,account_type_expense,other,TRUE
45,45,AMMORTAMENTI IMMOBILIZZAZIONI IMMATERIALI ,4,account_type_view,view,TRUE
4501,4501,ammortamento costi di impianto ,45,account_type_p_l,other,TRUE
4506,4506,ammortamento software ,45,account_type_p_l,other,TRUE
4508,4508,ammortamento avviamento ,45,account_type_p_l,other,TRUE
46,46,AMMORTAMENTI IMMOBILIZZAZIONI MATERIALI ,4,account_type_view,view,TRUE
4601,4601,ammortamento fabbricati ,46,account_type_p_l,other,TRUE
4602,4602,ammortamento impianti e macchinari ,46,account_type_p_l,other,TRUE
4604,4604,ammortamento attrezzature commerciali ,46,account_type_p_l,other,TRUE
4605,4605,ammortamento macchine d'ufficio ,46,account_type_p_l,other,TRUE
4606,4606,ammortamento arredamento ,46,account_type_p_l,other,TRUE
4607,4607,ammortamento automezzi ,46,account_type_p_l,other,TRUE
4608,4608,ammortamento imballaggi durevoli ,46,account_type_p_l,other,TRUE
47,47,SVALUTAZIONI ,4,account_type_view,view,TRUE
4701,4701,svalutazioni immobilizzazioni immateriali ,47,account_type_p_l,other,TRUE
4702,4702,svalutazioni immobilizzazioni materiali ,47,account_type_p_l,other,TRUE
4706,4706,svalutazione crediti ,47,account_type_p_l,other,TRUE
48,48,ACCANTONAMENTI ,4,account_type_view,view,TRUE
481,481,ACCANTONAMENTI PER RISCHI ,48,account_type_view,view,TRUE
4814,4814,accantonamento per responsabilità civile ,481,account_type_p_l,other,TRUE
482,482,ALTRI ACCANTONAMENTI ,48,account_type_view,view,TRUE
4821,4821,accantonamento per spese future ,482,account_type_p_l,other,TRUE
4823,4823,accantonamento per manutenzioni programmate ,482,account_type_p_l,other,TRUE
49,49,ONERI DIVERSI ,4,account_type_view,view,TRUE
4901,4901,oneri fiscali diversi ,49,account_type_p_l,other,TRUE
4903,4903,oneri vari ,49,account_type_p_l,other,TRUE
4905,4905,perdite su crediti ,49,account_type_p_l,other,TRUE
4910,4910,arrotondamenti passivi ,49,account_type_p_l,other,TRUE
4920,4920,minusvalenze ordinarie diverse ,49,account_type_p_l,other,TRUE
4930,4930,sopravvenienze passive ordinarie diverse ,49,account_type_p_l,other,TRUE
4940,4940,insussistenze passive ordinarie diverse ,49,account_type_p_l,other,TRUE
5,5,PROVENTI E ONERI FINANZIARI ,0,account_type_view,view,TRUE
51,51,PROVENTI FINANZIARI ,5,account_type_view,view,TRUE
5110,5110,interessi attivi v/clienti ,51,account_type_p_l,other,TRUE
5115,5115,interessi attivi bancari ,51,account_type_p_l,other,TRUE
5116,5116,interessi attivi postali ,51,account_type_p_l,other,TRUE
5140,5140,proventi finanziari diversi ,51,account_type_p_l,other,TRUE
52,52,ONERI FINANZIARI ,5,account_type_view,view,TRUE
5201,5201,interessi passivi v/fornitori ,52,account_type_p_l,other,TRUE
5202,5202,interessi passivi bancari ,52,account_type_p_l,other,TRUE
5203,5203,sconti passivi bancari ,52,account_type_p_l,other,TRUE
5210,5210,interessi passivi su mutui ,52,account_type_p_l,other,TRUE
5240,5240,oneri finanziari diversi ,52,account_type_p_l,other,TRUE
7,7,PROVENTI E ONERI STRAORDINARI ,0,account_type_view,view,TRUE
71,71,PROVENTI STRAORDINARI ,7,account_type_view,view,TRUE
7101,7101,plusvalenze straordinarie ,71,account_type_p_l,other,TRUE
7102,7102,sopravvenienze attive straordinarie ,71,account_type_p_l,other,TRUE
7103,7103,insussistenze attive straordinarie ,71,account_type_p_l,other,TRUE
72,72,ONERI STRAORDINARI ,7,account_type_view,view,TRUE
7201,7201,minusvalenze straordinarie ,72,account_type_p_l,other,TRUE
7202,7202,sopravvenienze passive straordinarie ,72,account_type_p_l,other,TRUE
7203,7203,insussistenze passive straordinarie ,72,account_type_p_l,other,TRUE
7204,7204,imposte esercizi precedenti ,72,account_type_p_l,other,TRUE
8,8,IMPOSTE DELL'ESERCIZIO ,0,account_type_view,view,TRUE
8101,8101,imposte dell'esercizio ,8,account_type_p_l,other,TRUE
9,9,CONTI DI RISULTATO ,0,account_type_view,view,TRUE
9101,9101,conto di risultato economico ,9,account_type_p_l,other,TRUE
9102,9102,stato patrimoniale,9,account_type_p_l,other,TRUE
1 id code name parent_id:id user_type:id type reconcile
2 0 0 Azienda account_type_view view FALSE
3 1 1 ATTIVO 0 account_type_view view TRUE
4 11 11 IMMOBILIZZAZIONI IMMATERIALI 1 account_type_view view TRUE
5 1101 1101 costi di impianto 11 account_type_asset other TRUE
6 1106 1106 software 11 account_type_asset other TRUE
7 1108 1108 avviamento 11 account_type_asset other TRUE
8 1111 1111 fondo ammortamento costi di impianto 11 account_type_asset other TRUE
9 1116 1116 fondo ammortamento software 11 account_type_asset other TRUE
10 1118 1118 fondo ammortamento avviamento 11 account_type_asset other TRUE
11 12 12 IMMOBILIZZAZIONI MATERIALI 1 account_type_view view TRUE
12 1201 1201 fabbricati 12 account_type_asset other TRUE
13 1202 1202 impianti e macchinari 12 account_type_asset other TRUE
14 1204 1204 attrezzature commerciali 12 account_type_asset other TRUE
15 1205 1205 macchine d'ufficio 12 account_type_asset other TRUE
16 1206 1206 arredamento 12 account_type_asset other TRUE
17 1207 1207 automezzi 12 account_type_asset other TRUE
18 1208 1208 imballaggi durevoli 12 account_type_asset other TRUE
19 1211 1211 fondo ammortamento fabbricati 12 account_type_asset other TRUE
20 1212 1212 fondo ammortamento impianti e macchinari 12 account_type_asset other TRUE
21 1214 1214 fondo ammortamento attrezzature commerciali 12 account_type_asset other TRUE
22 1215 1215 fondo ammortamento macchine d'ufficio 12 account_type_asset other TRUE
23 1216 1216 fondo ammortamento arredamento 12 account_type_asset other TRUE
24 1217 1217 fondo ammortamento automezzi 12 account_type_asset other TRUE
25 1218 1218 fondo ammortamento imballaggi durevoli 12 account_type_asset other TRUE
26 1220 1220 fornitori immobilizzazioni c/acconti 12 account_type_asset other TRUE
27 13 13 IMMOBILIZZAZIONI FINANZIARIE 1 account_type_view view TRUE
28 1301 1301 mutui attivi 13 account_type_asset other TRUE
29 14 14 RIMANENZE 1 account_type_view view TRUE
30 1401 1401 materie di consumo 14 account_type_asset other TRUE
31 1404 1404 merci 14 account_type_asset other TRUE
32 1410 1410 fornitori c/acconti 14 account_type_asset other TRUE
33 15 15 CREDITI COMMERCIALI 1 account_type_view view TRUE
34 1501 1501 crediti v/clienti 15 account_type_receivable receivable TRUE
35 1502 1502 crediti commerciali diversi 15 account_type_receivable other TRUE
36 1503 1503 clienti c/spese anticipate 15 account_type_receivable receivable TRUE
37 1505 1505 cambiali attive 15 account_type_receivable other TRUE
38 1506 1506 cambiali allo sconto 15 account_type_receivable other TRUE
39 1507 1507 cambiali all'incasso 15 account_type_receivable other TRUE
40 1509 1509 fatture da emettere 15 account_type_receivable other TRUE
41 1510 1510 crediti insoluti 15 account_type_receivable other TRUE
42 1511 1511 cambiali insolute 15 account_type_receivable other TRUE
43 1531 1531 crediti da liquidare 15 account_type_receivable other TRUE
44 1540 1540 fondo svalutazione crediti 15 account_type_receivable other TRUE
45 1541 1541 fondo rischi su crediti 15 account_type_receivable other TRUE
46 16 16 CREDITI DIVERSI 1 account_type_view view TRUE
47 1601 1601 IVA n/credito 16 account_type_tax other TRUE
48 1602 1602 IVA c/acconto 16 account_type_tax other TRUE
49 1605 1605 crediti per IVA 16 account_type_tax other TRUE
50 1607 1607 imposte c/acconto 16 account_type_tax other TRUE
51 1608 1608 crediti per imposte 16 account_type_tax other TRUE
52 1609 1609 crediti per ritenute subite 16 account_type_asset other TRUE
53 1610 1610 crediti per cauzioni 16 account_type_asset other TRUE
54 1620 1620 personale c/acconti 16 account_type_asset other TRUE
55 1630 1630 crediti v/istituti previdenziali 16 account_type_asset other TRUE
56 1640 1640 debitori diversi 16 account_type_receivable receivable TRUE
57 18 18 DISPONIBILITÀ LIQUIDE 1 account_type_view view TRUE
58 1801 1801 banche c/c 18 account_type_bank liquidity TRUE
59 1810 1810 c/c postali 18 account_type_cash liquidity TRUE
60 1820 1820 denaro in cassa 18 account_type_cash liquidity TRUE
61 1821 1821 assegni 18 account_type_cash liquidity TRUE
62 1822 1822 valori bollati 18 account_type_cash liquidity TRUE
63 19 19 RATEI E RISCONTI ATTIVI 1 account_type_view view TRUE
64 1901 1901 ratei attivi 19 account_type_asset other TRUE
65 1902 1902 risconti attivi 19 account_type_asset other TRUE
66 2 2 PASSIVO 0 account_type_view view TRUE
67 20 20 PATRIMONIO NETTO 2 account_type_view view TRUE
68 2101 2101 patrimonio netto 20 account_type_asset other TRUE
69 2102 2102 utile d'esercizio 20 account_type_asset other TRUE
70 2103 2103 perdita d'esercizio 20 account_type_asset other TRUE
71 2104 2104 prelevamenti extra gestione 20 account_type_asset other TRUE
72 2105 2105 titolare c/ritenute subite 20 account_type_asset other TRUE
73 22 22 FONDI PER RISCHI E ONERI 2 account_type_view view TRUE
74 2201 2201 fondo per imposte 22 account_type_asset other TRUE
75 2204 2204 fondo responsabilità civile 22 account_type_asset other TRUE
76 2205 2205 fondo spese future 22 account_type_asset other TRUE
77 2211 2211 fondo manutenzioni programmate 22 account_type_asset other TRUE
78 23 23 TRATTAMENTO FINE RAPPORTO DI LAVORO 2 account_type_view view TRUE
79 2301 2301 debiti per TFRL 23 account_type_asset other TRUE
80 24 24 DEBITI FINANZIARI 2 account_type_view view TRUE
81 2410 2410 mutui passivi 24 account_type_asset other TRUE
82 2411 2411 banche c/sovvenzioni 24 account_type_asset other TRUE
83 2420 2420 banche c/c passivi 24 account_type_asset other TRUE
84 2421 2421 banche c/RIBA all'incasso 24 account_type_asset other TRUE
85 2422 2422 banche c/cambiali all'incasso 24 account_type_asset other TRUE
86 2423 2423 banche c/anticipi su fatture 24 account_type_asset other TRUE
87 2440 2440 debiti v/altri finanziatori 24 account_type_asset other TRUE
88 25 25 DEBITI COMMERCIALI 2 account_type_view view TRUE
89 2501 2501 debiti v/fornitori 25 account_type_payable payable TRUE
90 2503 2503 cambiali passive 25 account_type_asset other TRUE
91 2520 2520 fatture da ricevere 25 account_type_asset other TRUE
92 2521 2521 debiti da liquidare 25 account_type_asset other TRUE
93 2530 2530 clienti c/acconti 25 account_type_payable payable TRUE
94 26 26 DEBITI DIVERSI 2 account_type_view view TRUE
95 2601 2601 IVA n/debito 26 account_type_tax other TRUE
96 2602 2602 debiti per ritenute da versare 26 account_type_tax other TRUE
97 2605 2605 erario c/IVA 26 account_type_tax account_type_payable other payable TRUE
98 2606 2606 debiti per imposte 26 account_type_tax other TRUE
99 2619 2619 debiti per cauzioni 26 account_type_asset other TRUE
100 2620 2620 personale c/retribuzioni 26 account_type_asset other TRUE
101 2621 2621 personale c/liquidazioni 26 account_type_asset other TRUE
102 2622 2622 clienti c/cessione 26 account_type_asset other TRUE
103 2630 2630 debiti v/istituti previdenziali 26 account_type_asset other TRUE
104 2640 2640 creditori diversi 26 account_type_payable payable TRUE
105 27 27 RATEI E RISCONTI PASSIVI 2 account_type_view view TRUE
106 2701 2701 ratei passivi 27 account_type_asset other TRUE
107 2702 2702 risconti passivi 27 account_type_asset other TRUE
108 28 28 CONTI TRANSITORI E DIVERSI 2 account_type_view view TRUE
109 2801 2801 bilancio di apertura 28 account_type_asset other TRUE
110 2802 2802 bilancio di chiusura 28 account_type_asset other TRUE
111 2810 2810 IVA c/liquidazioni 28 account_type_asset other TRUE
112 2811 2811 istituti previdenziali 28 account_type_asset other TRUE
113 2820 2820 banca ... c/c 28 account_type_asset other TRUE
114 2821 2821 banca ... c/c 28 account_type_asset other TRUE
115 2822 2822 banca ... c/c 28 account_type_asset other TRUE
116 29 29 CONTI DEI SISTEMI SUPPLEMENTARI 2 account_type_view view TRUE
117 2901 2901 beni di terzi 29 account_type_asset other TRUE
118 2902 2902 depositanti beni 29 account_type_asset other TRUE
119 2911 2911 merci da ricevere 29 account_type_asset other TRUE
120 2912 2912 fornitori c/impegni 29 account_type_asset other TRUE
121 2913 2913 impegni per beni in leasing 29 account_type_asset other TRUE
122 2914 2914 creditori c/leasing 29 account_type_asset other TRUE
123 2916 2916 clienti c/impegni 29 account_type_asset other TRUE
124 2917 2917 merci da consegnare 29 account_type_asset other TRUE
125 2921 2921 rischi per effetti scontati 29 account_type_asset other TRUE
126 2922 2922 banche c/effetti scontati 29 account_type_asset other TRUE
127 2926 2926 rischi per fideiussioni 29 account_type_asset other TRUE
128 2927 2927 creditori per fideiussioni 29 account_type_asset other TRUE
129 2931 2931 rischi per avalli 29 account_type_asset other TRUE
130 2932 2932 creditori per avalli 29 account_type_asset other TRUE
131 3 3 VALORE DELLA PRODUZIONE 0 account_type_view view TRUE
132 31 31 VENDITE E PRESTAZIONI 3 account_type_view view TRUE
133 3101 3101 merci c/vendite 31 account_type_income other TRUE
134 3103 3103 rimborsi spese di vendita 31 account_type_income other TRUE
135 3110 3110 resi su vendite 31 account_type_income other TRUE
136 3111 3111 ribassi e abbuoni passivi 31 account_type_income other TRUE
137 3112 3112 premi su vendite 31 account_type_income other TRUE
138 32 32 RICAVI E PROVENTI DIVERSI 3 account_type_view view TRUE
139 3201 3201 fitti attivi 32 account_type_income other TRUE
140 3202 3202 proventi vari 32 account_type_income other TRUE
141 3210 3210 arrotondamenti attivi 32 account_type_income other TRUE
142 3220 3220 plusvalenze ordinarie diverse 32 account_type_income other TRUE
143 3230 3230 sopravvenienze attive ordinarie diverse 32 account_type_income other TRUE
144 3240 3240 insussistenze attive ordinarie diverse 32 account_type_income other TRUE
145 4 4 COSTI DELLA PRODUZIONE 0 account_type_view view TRUE
146 41 41 COSTO DEL VENDUTO 4 account_type_view view TRUE
147 4101 4101 merci c/acquisti 41 account_type_expense other TRUE
148 4102 4102 materie di consumo c/acquisti 41 account_type_expense other TRUE
149 4105 4105 merci c/apporti 41 account_type_expense other TRUE
150 4110 4110 resi su acquisti 41 account_type_expense other TRUE
151 4111 4111 ribassi e abbuoni attivi 41 account_type_expense other TRUE
152 4112 4112 premi su acquisti 41 account_type_expense other TRUE
153 4121 4121 merci c/esistenze iniziali 41 account_type_expense other TRUE
154 4122 4122 materie di consumo c/esistenze iniziali 41 account_type_expense other TRUE
155 4131 4131 merci c/rimanenze finali 41 account_type_expense other TRUE
156 4132 4132 materie di consumo c/rimanenze finali 41 account_type_expense other TRUE
157 42 42 COSTI PER SERVIZI 4 account_type_view view TRUE
158 4201 4201 costi di trasporto 42 account_type_expense other TRUE
159 4202 4202 costi per energia 42 account_type_expense other TRUE
160 4203 4203 costi di pubblicità 42 account_type_expense other TRUE
161 4204 4204 costi di consulenze 42 account_type_expense other TRUE
162 4205 4205 costi postali 42 account_type_expense other TRUE
163 4206 4206 costi telefonici 42 account_type_expense other TRUE
164 4207 4207 costi di assicurazione 42 account_type_expense other TRUE
165 4208 4208 costi di vigilanza 42 account_type_expense other TRUE
166 4209 4209 costi per i locali 42 account_type_expense other TRUE
167 4210 4210 costi di esercizio automezzi 42 account_type_expense other TRUE
168 4211 4211 costi di manutenzione e riparazione 42 account_type_expense other TRUE
169 4212 4212 provvigioni passive 42 account_type_expense other TRUE
170 4213 4213 spese di incasso 42 account_type_expense other TRUE
171 43 43 COSTI PER GODIMENTO BENI DI TERZI 4 account_type_view view TRUE
172 4301 4301 fitti passivi 43 account_type_expense other TRUE
173 4302 4302 canoni di leasing 43 account_type_expense other TRUE
174 44 44 COSTI PER IL PERSONALE 4 account_type_view view TRUE
175 4401 4401 salari e stipendi 44 account_type_expense other TRUE
176 4402 4402 oneri sociali 44 account_type_expense other TRUE
177 4403 4403 TFRL 44 account_type_expense other TRUE
178 4404 4404 altri costi per il personale 44 account_type_expense other TRUE
179 45 45 AMMORTAMENTI IMMOBILIZZAZIONI IMMATERIALI 4 account_type_view view TRUE
180 4501 4501 ammortamento costi di impianto 45 account_type_p_l other TRUE
181 4506 4506 ammortamento software 45 account_type_p_l other TRUE
182 4508 4508 ammortamento avviamento 45 account_type_p_l other TRUE
183 46 46 AMMORTAMENTI IMMOBILIZZAZIONI MATERIALI 4 account_type_view view TRUE
184 4601 4601 ammortamento fabbricati 46 account_type_p_l other TRUE
185 4602 4602 ammortamento impianti e macchinari 46 account_type_p_l other TRUE
186 4604 4604 ammortamento attrezzature commerciali 46 account_type_p_l other TRUE
187 4605 4605 ammortamento macchine d'ufficio 46 account_type_p_l other TRUE
188 4606 4606 ammortamento arredamento 46 account_type_p_l other TRUE
189 4607 4607 ammortamento automezzi 46 account_type_p_l other TRUE
190 4608 4608 ammortamento imballaggi durevoli 46 account_type_p_l other TRUE
191 47 47 SVALUTAZIONI 4 account_type_view view TRUE
192 4701 4701 svalutazioni immobilizzazioni immateriali 47 account_type_p_l other TRUE
193 4702 4702 svalutazioni immobilizzazioni materiali 47 account_type_p_l other TRUE
194 4706 4706 svalutazione crediti 47 account_type_p_l other TRUE
195 48 48 ACCANTONAMENTI 4 account_type_view view TRUE
196 481 481 ACCANTONAMENTI PER RISCHI 48 account_type_view view TRUE
197 4814 4814 accantonamento per responsabilità civile 481 account_type_p_l other TRUE
198 482 482 ALTRI ACCANTONAMENTI 48 account_type_view view TRUE
199 4821 4821 accantonamento per spese future 482 account_type_p_l other TRUE
200 4823 4823 accantonamento per manutenzioni programmate 482 account_type_p_l other TRUE
201 49 49 ONERI DIVERSI 4 account_type_view view TRUE
202 4901 4901 oneri fiscali diversi 49 account_type_p_l other TRUE
203 4903 4903 oneri vari 49 account_type_p_l other TRUE
204 4905 4905 perdite su crediti 49 account_type_p_l other TRUE
205 4910 4910 arrotondamenti passivi 49 account_type_p_l other TRUE
206 4920 4920 minusvalenze ordinarie diverse 49 account_type_p_l other TRUE
207 4930 4930 sopravvenienze passive ordinarie diverse 49 account_type_p_l other TRUE
208 4940 4940 insussistenze passive ordinarie diverse 49 account_type_p_l other TRUE
209 5 5 PROVENTI E ONERI FINANZIARI 0 account_type_view view TRUE
210 51 51 PROVENTI FINANZIARI 5 account_type_view view TRUE
211 5110 5110 interessi attivi v/clienti 51 account_type_p_l other TRUE
212 5115 5115 interessi attivi bancari 51 account_type_p_l other TRUE
213 5116 5116 interessi attivi postali 51 account_type_p_l other TRUE
214 5140 5140 proventi finanziari diversi 51 account_type_p_l other TRUE
215 52 52 ONERI FINANZIARI 5 account_type_view view TRUE
216 5201 5201 interessi passivi v/fornitori 52 account_type_p_l other TRUE
217 5202 5202 interessi passivi bancari 52 account_type_p_l other TRUE
218 5203 5203 sconti passivi bancari 52 account_type_p_l other TRUE
219 5210 5210 interessi passivi su mutui 52 account_type_p_l other TRUE
220 5240 5240 oneri finanziari diversi 52 account_type_p_l other TRUE
221 7 7 PROVENTI E ONERI STRAORDINARI 0 account_type_view view TRUE
222 71 71 PROVENTI STRAORDINARI 7 account_type_view view TRUE
223 7101 7101 plusvalenze straordinarie 71 account_type_p_l other TRUE
224 7102 7102 sopravvenienze attive straordinarie 71 account_type_p_l other TRUE
225 7103 7103 insussistenze attive straordinarie 71 account_type_p_l other TRUE
226 72 72 ONERI STRAORDINARI 7 account_type_view view TRUE
227 7201 7201 minusvalenze straordinarie 72 account_type_p_l other TRUE
228 7202 7202 sopravvenienze passive straordinarie 72 account_type_p_l other TRUE
229 7203 7203 insussistenze passive straordinarie 72 account_type_p_l other TRUE
230 7204 7204 imposte esercizi precedenti 72 account_type_p_l other TRUE
231 8 8 IMPOSTE DELL'ESERCIZIO 0 account_type_view view TRUE
232 8101 8101 imposte dell'esercizio 8 account_type_p_l other TRUE
233 9 9 CONTI DI RISULTATO 0 account_type_view view TRUE
234 9101 9101 conto di risultato economico 9 account_type_p_l other TRUE
235 9102 9102 stato patrimoniale 9 account_type_p_l other TRUE
+1 -34
View File
@@ -22,10 +22,6 @@
import time
from datetime import datetime
from dateutil.relativedelta import relativedelta
import PIL
import io
import base64
import StringIO
import netsvc
from osv import fields, osv
@@ -282,7 +278,7 @@ class pos_order(osv.osv):
('user_id', '=', uid),
('state', '=', 'open')], context=context)
if len(statement_id) == 0:
raise osv.except_osv(_('Error !'), _('You have to open at least one cashbox.'))
raise osv.except_osv(_('Error !'), _('You have to open at least one cashbox'))
if statement_id:
statement_id = statement_id[0]
args['statement_id'] = statement_id
@@ -731,40 +727,11 @@ class pos_category(osv.osv):
}
pos_category()
_IMAGE_SIZE = 100,120
class product_product(osv.osv):
_inherit = 'product.product'
def _get_img(self, cr, uid, ids, field_name, arg, context=None):
context = context or {}
bin_size = context.get('bin_size', False)
context = dict(context, bin_size = False)
products = self.browse(cr, uid, ids, context=context)
result = {}
for product in products:
image64 = product.product_image
if not image64:
result[product.id] = False
continue
image_bin = base64.decodestring(image64)
image_stream = io.BytesIO(image_bin)
im = PIL.Image.open(image_stream)
im.thumbnail(_IMAGE_SIZE, PIL.Image.ANTIALIAS)
nimage_stream = StringIO.StringIO()
im.save(nimage_stream, format="JPEG")
nimage_bin = nimage_stream.getvalue()
if not bin_size:
result[product.id] = base64.encodestring(nimage_bin)
else:
result[product.id] = nimage_bin.length
return result
_columns = {
'income_pdt': fields.boolean('PoS Cash Input', help="This is a product you can use to put cash into a statement for the point of sale backend."),
'expense_pdt': fields.boolean('PoS Cash Output', help="This is a product you can use to take cash from a statement for the point of sale backend, exemple: money lost, transfer to bank, etc."),
'img': fields.function(_get_img, method=True, type="binary", string='Product Image',
store = {'product.product': (lambda self, cr, uid, ids, c=None: ids, ['product_image'], 10)}),
'pos_categ_id': fields.many2one('pos.category','PoS Category',
help="If you want to sell this product through the point of sale, select the category it belongs to.")
}
@@ -82,6 +82,9 @@
height: 35px;
padding: 10px;
}
.point-of-sale #rightheader {
float: none;
}
.point-of-sale #branding {
border-right: 1px solid #373737;
text-align: center;
+2 -2
View File
@@ -86,7 +86,7 @@ openerp.point_of_sale = function(db) {
}, this));
}, this));
$.when(this.fetch('pos.category', ['name', 'parent_id', 'child_id']),
this.fetch('product.product', ['name', 'list_price', 'pos_categ_id', 'taxes_id', 'img'], [['pos_categ_id', '!=', 'false']]),
this.fetch('product.product', ['name', 'list_price', 'pos_categ_id', 'taxes_id', 'product_image'], [['pos_categ_id', '!=', 'false']]),
this.fetch('account.bank.statement', ['account_id', 'currency', 'journal_id', 'state', 'name'],
[['state', '=', 'open'], ['user_id', '=', this.session.uid]]),
this.fetch('account.journal', ['auto_cash', 'check_dtls', 'currency', 'name', 'type']),
@@ -591,7 +591,7 @@ openerp.point_of_sale = function(db) {
},
clickAppendNewChar: function(event) {
var newChar;
newChar = event.currentTarget.innerText;
newChar = event.currentTarget.innerText || event.currentTarget.textContent;
return this.state.appendNewChar(newChar);
},
clickChangeMode: function(event) {
+5 -5
View File
@@ -18,16 +18,16 @@
<input type="radio" id="receipt-step-button" class="step-button" data-step='receipt' name="radio" />
<label for="receipt-step-button">Receipt</label>
</div>
<div id="loggedas">
<span class="oe_pos_synch-notification"></span>
<button>Close</button>
</div>
<div id="rightheader">
<div id="order-selector">
<button id="neworder-button">+</button>
<ol id="orders"></ol>
</div>
</div>
<div id="loggedas">
<span class="oe_pos_synch-notification"></span>
<button>Close</button>
</div>
</div>
<div id="content">
@@ -188,7 +188,7 @@
<t t-name="pos-product-template">
<a href="#">
<div class="product-img">
<img t-att-src="'data:image/gif;base64,'+ img" />
<img t-att-src="'data:image/gif;base64,'+ product_image" />
<span class="price-tag">
<t t-esc="format_amount(list_price)"/>
</span>
@@ -44,7 +44,6 @@ def get_journal(self, cr, uid, context=None):
res = [(r['journal_id']) for r in res]
if not len(res):
raise osv.except_osv(_('Error !'), _('You do not have any open cash register. You must create a payment method or open a cash register.'))
res.insert(0, ('', ''))
return res
class pos_box_entries(osv.osv_memory):
@@ -70,8 +69,8 @@ class pos_box_entries(osv.osv_memory):
_columns = {
'name': fields.char('Reason', size=32, required=True),
'journal_id': fields.selection(get_journal, "Cash Register", required=True),
'product_id': fields.selection(_get_income_product, "Operation", required=True),
'journal_id': fields.selection(get_journal, "Cash Register", required=True, size=-1),
'product_id': fields.selection(_get_income_product, "Operation", required=True, size=-1),
'amount': fields.float('Amount', digits=(16, 2), required=True),
'ref': fields.char('Ref', size=32),
}
+2 -3
View File
@@ -45,13 +45,12 @@ class pos_box_out(osv.osv_memory):
ids = product_obj.search(cr, uid, ['&', ('expense_pdt', '=', True), '|', ('company_id', '=', company_id), ('company_id', '=', None)], context=context)
res = product_obj.read(cr, uid, ids, ['id', 'name'], context=context)
res = [(r['id'], r['name']) for r in res]
res.insert(0, ('', ''))
return res
_columns = {
'name': fields.char('Description / Reason', size=32, required=True),
'journal_id': fields.selection(pos_box_entries.get_journal, "Cash Register", required=True),
'product_id': fields.selection(_get_expense_product, "Operation", required=True),
'journal_id': fields.selection(pos_box_entries.get_journal, "Cash Register", required=True, size=-1),
'product_id': fields.selection(_get_expense_product, "Operation", required=True, size=-1),
'amount': fields.float('Amount', digits=(16, 2), required=True),
}
_defaults = {
+8 -1
View File
@@ -98,6 +98,7 @@ class portal(osv.osv):
def do_create_menu(self, cr, uid, ids, context=None):
""" create a parent menu for the given portals """
menu_obj = self.pool.get('ir.ui.menu')
ir_data = self.pool.get('ir.model.data')
menu_root = self._res_xml_id(cr, uid, 'portal', 'portal_menu')
for p in self.browse(cr, uid, ids, context):
@@ -110,7 +111,13 @@ class portal(osv.osv):
menu_id = menu_obj.create(cr, uid, menu_values, context)
# set the parent_menu_id to item_id
self.write(cr, uid, [p.id], {'parent_menu_id': menu_id}, context)
menu_values.pop('parent_id')
menu_values.pop('groups_id')
menu_values.update({'model': 'ir.ui.menu',
'module': 'portal',
'res_id': menu_id,
'noupdate': 'True'})
data_id = ir_data.create(cr, uid, menu_values, context)
return True
def _assign_menu(self, cr, uid, ids, context=None):
+8
View File
@@ -567,4 +567,12 @@ class stock_warehouse_orderpoint(osv.osv):
return super(stock_warehouse_orderpoint, self).copy(cr, uid, id, default, context=context)
stock_warehouse_orderpoint()
class product_product(osv.osv):
_inherit="product.product"
_columns = {
'orderpoint_ids': fields.one2many('stock.warehouse.orderpoint', 'product_id', 'Minimum Stock Rule')
}
product_product()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+25
View File
@@ -275,5 +275,30 @@
<menuitem id="menu_stock_procurement" name="Automatic Procurements" parent="stock.menu_stock_configuration" sequence="5"/>
<menuitem action="action_orderpoint_form" id="menu_stock_order_points" parent="menu_stock_procurement" sequence="10"/>
<record id="product_normal_form_view" model="ir.ui.view">
<field name="name">product.normal.form.orderpoint.inherit</field>
<field name="model">product.product</field>
<field name="type">form</field>
<field name="inherit_id" ref="product.product_normal_form_view"/>
<field name="arch" type="xml">
<group name="misc" position="after">
<group col="2" colspan="2" attrs="{'invisible':[('type', '=', 'service')]}">
<separator string="Minimum Stock Rules" colspan="2"/>
<field name="orderpoint_ids" context="{'default_product_uom': uom_id}" nolabel="1">
<tree string="Minimum Stock Rule" editable="bottom">
<field name="warehouse_id" on_change="onchange_warehouse_id(warehouse_id)" widget="selection"/>
<field name="location_id" groups="base.group_extended"/>
<field name="product_min_qty"/>
<field name="product_max_qty"/>
<field name="product_uom" groups="base.group_extended"/>
</tree>
</field>
</group>
</group>
</field>
</record>
</data>
</openerp>
+5 -1
View File
@@ -61,7 +61,11 @@ Print product labels with barcode.
'partner_view.xml',
'process/product_process.xml'
],
'test':['test/product_report.yml','test/product_test.yml'],
'test':[
'test/product_test.yml',
'test/product_price_list.yml',
'test/product_report.yml',
],
'installable': True,
'active': False,
'certificate': '0068861431437',
+1
View File
@@ -321,6 +321,7 @@
<field name="type">product</field>
<field name="categ_id" ref="product_category_10"/>
</record>
<record id="product_product_tow1" model="product.product">
<field name="default_code">TOW1</field>
<field name="list_price">37.5</field>
+124
View File
@@ -0,0 +1,124 @@
-
In order to check the calculation of price of the products according to selected pricelist,
I create a pricelist rule for giving discount on some quantities of product.
-
!record {model: product.pricelist.item, id: item0}:
name: Default Public Pricelist for More Qty
min_quantity: 15
price_discount: -0.10
-
I check whether the product consumes the price, based on the given quantities, correctly or not.
-
!python {model: product.pricelist}: |
product_obj = self.pool.get("product.product")
result = self.price_get_multi(cr, uid, [ref("product.list0")], [(ref("product_product_pc1"),15,False)])
new_price = result[ref("product_product_pc1")].values()
context.update({'pricelist': ref("product.list0"), 'quantity': 15})
product_price = product_obj.browse(cr, uid, ref("product_product_pc1"), context=context).price
assert new_price[0] == product_price,"Discount is not given on price of the product."
-
I create a pricelist rule to give discount for a specific product.
-
!record {model: product.pricelist.item, id: pricelist_rules_for_pc2}:
name: Default Public Pricelist for PC2
min_quantity: 1
product_id: product.product_product_pc2
sequence: 4
base: !eval (ref('product.list_price'))
price_version_id: product.ver0
price_discount: -0.20
-
I check whether the selected product is having the price correctly or not.
-
!python {model: product.pricelist}: |
result = self.price_get_multi(cr, uid, [ref("product.list0")], [(ref("product_product_pc2"),1,False)])
product_obj = self.pool.get("product.product")
new_price = result[ref("product_product_pc2")].values()
context.update({'pricelist': ref("product.list0"), 'quantity': 1})
product_price = product_obj.browse(cr, uid, ref("product_product_pc2"), context=context).price
assert new_price[0] == product_price,"Discount is not given on price of the special product."
-
I create a pricelist rule to give discount for a specific category of products.
-
!record {model: product.pricelist.item, id: pricelist_rules_category_1}:
name: Default Public Pricelist for Category
min_quantity: 1
categ_id: product.cat1
sequence: 3
base: !eval (ref('product.list_price'))
price_version_id: product.ver0
price_discount: -0.25
-
I check whether the price of products of selected product category is correctly set or not.
-
!python {model: product.pricelist}: |
result = self.price_get_multi(cr, uid, [ref("product.list0")], [(ref("product_product_fan2"),1,False)])
product_obj = self.pool.get("product.product")
new_price = result[ref("product_product_fan2")].values()
context.update({'pricelist': ref("product.list0"), 'quantity': 1})
product_price = product_obj.browse(cr, uid, ref("product_product_fan2"), context=context).price
assert new_price[0] == product_price,"Discount is not given on price of the special category of products."
-
I create a pricelist to give the discount at the end of year.
-
!record {model: product.pricelist, id: product_price_list_end_year}:
name: End of Year Price List
type: sale
version_id:
- name: End of Year Price List Version
items_id:
- name: End of Year Price List Version Rule
min_quantity: 1
base: !eval (ref('product.list_price'))
price_discount: -0.30
-
!record {model: product.pricelist.item, id: pricelist_rules_for_end_year1}:
name: End of Year Price List Version Rule - Public Pricelist
min_quantity: 1
sequence: 2
base: -1
price_version_id: product.ver0
base_pricelist_id: product_price_list_end_year
-
Now, I check that the end of the year pricelist rule is applied on products.
-
!python {model: product.pricelist}: |
result = self.price_get_multi(cr, uid, [ref("product.list0")], [(ref("product_product_pc1"),1,False)])
new_price = result[ref("product_product_pc1")].values()
product_obj = self.pool.get("product.product")
context.update({'pricelist': ref("product.list0"), 'quantity': 1})
product_price = product_obj.browse(cr, uid, ref("product_product_pc1"), context=context).price
assert new_price[0] == product_price,"Discount is not given on price of product at the end of the year."
-
I create a pricelist for special customers by which they can get discount on products.
-
!record {model: product.pricelist, id: special_customer_price_list1}:
name: Price List For Special Customer
type: sale
version_id:
- name: Special Customer Price List Version
items_id:
- name: Special Customer Price List Version Rule
min_quantity: 1
base: !eval (ref('product.list_price'))
price_discount: -0.40
-
!record {model: res.partner, id: base.res_partner_agrolait}:
property_product_pricelist: special_customer_price_list1
-
I check that the customer is getting the discount according to the pricelist.
-
!python {model: product.pricelist}: |
result = self.price_get_multi(cr, uid, [ref("product.special_customer_price_list1")], [(ref("product_product_pc4"),1,ref("base.res_partner_agrolait"))])
product_obj = self.pool.get("product.product")
new_price = result[ref("product_product_pc4")].values()
context.update({'pricelist': ref("product.special_customer_price_list1"), 'quantity': 1})
product_price = product_obj.browse(cr, uid, ref("product_product_pc4"), context=context).price
assert new_price[0] == product_price,"Discount is not given to special customer."
-
I set the supplier pricelist for a product to get the discount at the time of purchase.
-
!record {model: product.supplierinfo, id: supplierinfo5}:
pricelist_ids:
- min_quantity: 10
price: 200
+1 -1
View File
@@ -517,7 +517,7 @@ class task(osv.osv):
if not project_id:
return {}
data = self.pool.get('project.project').browse(cr, uid, [project_id])
partner_id=data and data[0].parent_id.partner_id
partner_id=data and data[0].partner_id
if partner_id:
return {'value':{'partner_id':partner_id.id}}
return {}
+2 -2
View File
@@ -41,7 +41,7 @@
<field name="company_id" select="1" groups="base.group_multi_company" widget="selection" required="1"/>
<field name="warn_manager"/>
<field name="priority"/>
<field name="active"/>
<field name="active" attrs="{'invisible':[('state','in',['open', 'pending', 'template'])]}"/>
</group>
<newline/>
<separator colspan="4"/>
@@ -49,7 +49,7 @@
<field name="state" widget="statusbar" statusbar_visible="open,close" statusbar_colors='{"pending":"blue"}' select="1" readonly="1"/>
<button name="set_cancel" string="Cancel" type="object" states="open,pending" icon="gtk-cancel"/>
<button name="set_template" string="Set as Template" type="object" states="open" icon="gtk-convert" groups="base.group_extended"/>
<button name="set_open" string="Reactivate Project" type="object" states="pending,cancelled,close" icon="gtk-ok"/>
<button name="set_open" string="Re-open project" type="object" states="pending,cancelled,close" icon="gtk-ok"/>
<button name="set_pending" string="Pending" type="object" states="open" icon="gtk-media-pause"/>
<button name="set_done" string="Done" type="object" states="open,pending" icon="terp-dialog-close"/>
<button name="reset_project" string="Reset as Project" type="object" states="template" icon="gtk-convert"/>
@@ -243,6 +243,8 @@ class account_analytic_line(osv.osv):
acc = self.pool.get('account.analytic.account').browse(cr, uid, account_id)
st = acc.to_invoice.id
res['value']['to_invoice'] = st or False
if acc.state == 'close' or acc.state == 'cancelled':
raise osv.except_osv(_('Invalid Analytic Account !'), _('You cannot select a Analytic Account which is in Close or Cancelled state'))
return res
account_analytic_line()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+1 -1
View File
@@ -76,10 +76,10 @@ Dashboard for Sales Manager that includes:
'company_view.xml',
'sale_workflow.xml',
'sale_sequence.xml',
'sale_report.xml',
'sale_data.xml',
'sale_view.xml',
'report/sale_report_view.xml',
'sale_report.xml',
'stock_view.xml',
'process/sale_process.xml',
'board_sale_view.xml',
+14 -8
View File
@@ -102,12 +102,16 @@
<field name="arch" type="xml">
<form string="Sales Order">
<group col="6" colspan="4">
<field name="name"/>
<field name="date_order"/>
<field name="invoiced"/>
<field name="shop_id" on_change="onchange_shop_id(shop_id)" widget="selection"/>
<field name="client_order_ref"/>
<field name="shipped"/>
<group col="4" colspan="4">
<field name="name"/>
<field name="date_order"/>
<field name="shop_id" on_change="onchange_shop_id(shop_id)" widget="selection" groups="base.group_extended"/>
<field name="client_order_ref"/>
</group>
<group col="2" colspan="2">
<field name="invoiced"/>
<field name="shipped"/>
</group>
</group>
<notebook colspan="5">
<page string="Sales Order">
@@ -118,7 +122,7 @@
<field domain="[('type','=','sale')]" name="pricelist_id" groups="base.group_extended" on_change="onchange_pricelist_id(pricelist_id,order_line)"/>
<field name="project_id" context="{'partner_id':partner_id, 'contact_id':partner_order_id, 'pricelist_id':pricelist_id, 'default_name':name}" groups="analytic.group_analytic_accounting" domain="[('parent_id','!=',False)]"/>
<newline/>
<field colspan="4" mode="tree,form,graph" name="order_line" nolabel="1" widget="one2many_list">
<field colspan="4" name="order_line" nolabel="1" widget="one2many_list">
<form string="Sales Order Lines">
<notebook>
<page string="Order Line">
@@ -195,18 +199,20 @@
<button name="button_dummy" states="draft" string="Compute" type="object" icon="gtk-execute"/>
<button name="%(action_view_sale_advance_payment_inv)d" string="Advance Invoice" type="action" icon="gtk-execute" states="draft,manual" groups="base.group_extended"/>
</group>
<group col="13" colspan="4">
<group col="17" colspan="4">
<field name="state" widget="statusbar" statusbar_visible="draft,progress,done" statusbar_colors='{"shipping_except":"red","invoice_except":"red","waiting_date":"blue"}'/>
<button name="invoice_recreate" states="invoice_except" string="Recreate Invoice" icon="gtk-go-forward"/>
<button name="invoice_corrected" states="invoice_except" string="Ignore Exception" icon="gtk-apply"/>
<button name="ship_recreate" states="shipping_except" string="Recreate Packing" icon="gtk-ok"/>
<button name="ship_corrected" states="shipping_except" string="Ignore Exception" icon="gtk-apply"/>
<button name="action_cancel" states="manual,progress" string="Cancel Order" type="object" icon="gtk-cancel"/>
<button name="%(report_sale_order)d" string="Print Order" type="action" icon="gtk-print" states="waiting_date,manual,progress,done,shipping_except,invoice_except"/>
<button name="manual_invoice" states="manual" string="Create Final Invoice" icon="gtk-go-forward" type="object"/>
<button name="ship_cancel" states="shipping_except" string="Cancel Order" icon="gtk-cancel"/>
<button name="action_cancel_draft" states="cancel" string="Set to Draft" type="object" icon="gtk-convert"/>
<button name="cancel" states="draft" string="Cancel Order" icon="gtk-cancel"/>
<button name="invoice_cancel" states="invoice_except" string="Cancel Order" icon="gtk-cancel"/>
<button name="%(report_sale_order)d" string="Print Quotation" type="action" icon="gtk-print" states="draft"/>
<button name="order_confirm" states="draft" string="Confirm Order" icon="gtk-apply"/>
</group>
</page>
+3 -4
View File
@@ -51,7 +51,7 @@ Thanks to the double entry management, the inventory controlling is powerful and
"init_xml" : [],
"demo_xml" : [
"stock_demo.xml",
"stock_demo_picking.yml",
"stock_demo.yml",
],
"update_xml" : [
"security/stock_security.xml",
@@ -82,10 +82,9 @@ Thanks to the double entry management, the inventory controlling is powerful and
"board_warehouse_view.xml",
],
'test': [
'test/stock_test.yml',
'test/opening_stock.yml',
'test/shipment.yml',
'test/stock_report.yml',
'test/stock_test_wizard.yml',
'test/stock_demo_backorder.yml'
],
'installable': True,
'application': True,
+9 -5
View File
@@ -447,14 +447,12 @@ class stock_location(osv.osv):
""",
(id, id, product_id))
results += cr.dictfetchall()
total = 0.0
results2 = 0.0
for r in results:
amount = self.pool.get('product.uom')._compute_qty(cr, uid, r['product_uom'], r['product_qty'], context.get('uom', False))
results2 += amount
total += amount
if total <= 0.0:
continue
@@ -822,6 +820,7 @@ class stock_picking(osv.osv):
""" Tests whether the move is in assigned state or not.
@return: True or False
"""
#TOFIX: assignment of move lines should be call before testing assigment otherwise picking never gone in assign state
ok = True
for pick in self.browse(cr, uid, ids):
mt = pick.move_type
@@ -2321,6 +2320,7 @@ class stock_move(osv.osv):
@param context: context arguments
@return: Scraped lines
"""
#quantity should in MOVE UOM
if quantity <= 0:
raise osv.except_osv(_('Warning!'), _('Please provide a positive quantity to scrap!'))
res = []
@@ -2421,6 +2421,7 @@ class stock_move(osv.osv):
@param context: context arguments
@return: Consumed lines
"""
#quantity should in MOVE UOM
if context is None:
context = {}
if quantity <= 0:
@@ -2439,13 +2440,14 @@ class stock_move(osv.osv):
quantity = move.product_qty
uos_qty = quantity / move_qty * move.product_uos_qty
location_dest_id = move.product_id.property_stock_production or move.location_dest_id
if quantity_rest > 0:
default_val = {
'product_qty': quantity,
'product_uos_qty': uos_qty,
'state': move.state,
'location_id': location_id or move.location_id.id,
'location_dest_id': location_dest_id.id,
}
current_move = self.copy(cr, uid, move.id, default_val)
res += [current_move]
@@ -2461,7 +2463,8 @@ class stock_move(osv.osv):
update_val = {
'product_qty' : quantity_rest,
'product_uos_qty' : uos_qty_rest,
'location_id': location_id or move.location_id.id
'location_id': location_id or move.location_id.id,
'location_dest_id': location_dest_id.id,
}
self.write(cr, uid, [move.id], update_val)
@@ -2675,6 +2678,7 @@ class stock_inventory(osv.osv):
message = _("Inventory '%s' is done.") %(inv.name)
self.log(cr, uid, inv.id, message)
self.write(cr, uid, [inv.id], {'state': 'confirm', 'move_ids': [(6, 0, move_ids)]})
self.pool.get('stock.move').action_confirm(cr, uid, move_ids, context=context)
return True
def action_cancel_draft(self, cr, uid, ids, context=None):
@@ -2686,7 +2690,7 @@ class stock_inventory(osv.osv):
self.write(cr, uid, [inv.id], {'state':'draft'}, context=context)
return True
def action_cancel_inventary(self, cr, uid, ids, context=None):
def action_cancel_inventory(self, cr, uid, ids, context=None):
""" Cancels both stock move and inventory
@return: True
"""
+1 -3
View File
@@ -42,6 +42,7 @@
<field name="name">Shelf 1</field>
<field name="location_id" ref="stock_location_stock"/>
</record>
<!--
Resource: stock.inventory
@@ -49,10 +50,7 @@
<record id="stock_inventory_0" model="stock.inventory">
<field name="name">Starting Inventory</field>
<field name="date_done">2005-08-02 13:42:43</field>
<field name="state">done</field>
</record>
<!--
Resource: stock.inventory.line
-->
+102
View File
@@ -0,0 +1,102 @@
-
!record {model: stock.location, id: location_refrigerator}:
name: Refrigerator
usage: internal
-
!record {model: stock.location, id: location_delivery_counter}:
name: Delivery Counter
usage: internal
-
!record {model: stock.location, id: location_refrigerator_small}:
name: Small Refrigerator
usage: internal
location_id: location_refrigerator
-
!record {model: stock.location, id: location_opening}:
name: opening
usage: inventory
-
!record {model: stock.location, id: location_convenience_shop}:
name: Convenient Store
chained_auto_packing: auto
chained_location_type: fixed
usage: supplier
chained_location_id: location_refrigerator
location_id: stock_location_suppliers
-
!record {model: stock.warehouse, id: warehouse_icecream}:
name: Ice Cream Shop
lot_input_id: location_refrigerator
lot_stock_id: location_refrigerator
lot_output_id: location_delivery_counter
-
!record {model: product.product, id: product_icecream}:
default_code: 001
name: Ice Cream
type: product
categ_id: product.cat1
supply_method: buy
list_price: 100.0
standard_price: 70.0
uom_id: product.product_uom_kgm
uom_po_id: product.product_uom_kgm
procure_method: make_to_stock
property_stock_inventory: location_opening
property_stock_account_input: location_refrigerator
property_stock_account_output: location_delivery_counter
description: Ice cream can be mass-produced and thus is widely available in developed parts of the world. Ice cream can be purchased in large cartons (vats and squrounds) from supermarkets and grocery stores, in smaller quantities from ice cream shops, convenience stores, and milk bars, and in individual servings from small carts or vans at public events.
-
!record {model: stock.production.lot, id: lot_icecream_0}:
name: Lot0 for Ice cream
product_id: product_icecream
-
!record {model: stock.production.lot, id: lot_icecream_1}:
name: Lot1 for Ice cream
product_id: product_icecream
-
!record {model: stock.inventory, id: stock_inventory_icecream}:
name: Inventory for icecream
-
!record {model: stock.inventory.line, id: stock_inventory_line_icecream_lot0}:
product_id: product_icecream
product_uom: product.product_uom_kgm
inventory_id: stock_inventory_icecream
product_qty: 50.0
prod_lot_id: lot_icecream_0
location_id: location_refrigerator
-
!record {model: stock.inventory.line, id: stock_inventory_line_icecream_lot1}:
product_id: product_icecream
product_uom: product.product_uom_kgm
inventory_id: stock_inventory_icecream
product_qty: 40.0
prod_lot_id: lot_icecream_1
location_id: location_refrigerator
-
!record {model: stock.picking, id: outgoing_shipment}:
type: out
location_dest_id: location_delivery_counter
-
!record {model: stock.move, id: outgoing_shipment_icecream}:
picking_id: outgoing_shipment
product_id: product_icecream
product_uom: product.product_uom_kgm
product_qty: 130.0
location_id: location_refrigerator
location_dest_id: location_delivery_counter
-
!record {model: stock.picking, id: incomming_shipment}:
type: in
invoice_state: 2binvoiced
address_id: base.res_partner_address_9
location_dest_id: location_refrigerator
-
!record {model: stock.move, id: incomming_shipment_icecream}:
picking_id: incomming_shipment
product_id: product_icecream
product_uom: product.product_uom_kgm
product_qty: 50.0
location_id: location_convenience_shop
location_dest_id: location_refrigerator
-25
View File
@@ -1,25 +0,0 @@
-
!record {model: stock.picking, id: stock_picking_1}:
type: out
company_id: base.main_company
address_id: res_partner_address_fabien0
-
!record {model: stock.move, id: stock_move_1}:
product_id: product.product_product_cpu1
product_uom: product.product_uom_unit
product_uos_qty: 5.0
product_qty: 5.0
location_dest_id: stock.stock_location_customers
location_id: stock.stock_location_stock
name: CPU1, Processor AMD Athlon XP 1800
picking_id: stock_picking_1
-
!record {model: stock.move, id: stock_move_2}:
product_id: product.product_product_cpu3
product_uom: product.product_uom_unit
product_uos_qty: 5.0
product_qty: 5.0
location_dest_id: stock.stock_location_customers
location_id: stock.stock_location_stock
name: CPU3, Processor AMD Athlon XP 1800
picking_id: stock_picking_1
+5 -5
View File
@@ -171,7 +171,7 @@
<field name="state"/>
</group>
<group col="3" colspan="2">
<button name="action_cancel_inventary" states="draft,confirm,done" string="Cancel Inventory" type="object" icon="gtk-cancel"/>
<button name="action_cancel_inventory" states="draft,confirm,done" string="Cancel Inventory" type="object" icon="gtk-cancel"/>
<button name="action_confirm" states="draft" string="Confirm Inventory" type="object" icon="gtk-apply"/>
<button name="action_done" states="confirm" string="Validate Inventory" type="object" icon="gtk-jump-to"/>
<button name="action_cancel_draft" states="cancel" string="Set to Draft" type="object" icon="gtk-convert"/>
@@ -709,7 +709,7 @@
</group>
<notebook colspan="4">
<page string="Products">
<field colspan="4" name="move_lines" nolabel="1" widget="one2many_list" default_get="{'move_line':move_lines, 'address_in_id': address_id}">
<field colspan="4" name="move_lines" nolabel="1" widget="one2many_list" context="{'address_in_id': address_id}">
<tree colors="grey:scrapped == True" string="Stock Moves">
<field name="product_id"/>
<field name="product_qty" on_change="onchange_quantity(product_id, product_qty, product_uom, product_uos)"/>
@@ -902,7 +902,7 @@
</group>
<notebook colspan="4">
<page string="Products">
<field colspan="4" name="move_lines" nolabel="1" widget="one2many_list" default_get="{'move_line':move_lines, 'address_out_id': address_id, 'picking_type': type}" >
<field colspan="4" name="move_lines" nolabel="1" widget="one2many_list" context="{'address_out_id': address_id, 'picking_type': type}" >
<tree colors="grey:scrapped==True" string="Stock Moves">
<field name="product_id"/>
<field name="product_qty" on_change="onchange_quantity(product_id, product_qty, product_uom, product_uos)"/>
@@ -1058,7 +1058,7 @@
<field name="view_type">form</field>
<field name="view_mode">tree,form,calendar</field>
<field name="domain">[('type','=','out')]</field>
<field name="context">{'default_type': 'out', 'contact_display': 'partner_address', 'search_default_available': 1}</field>
<field name="context">{'default_type': 'out', 'contact_display': 'partner_address', 'search_default_confirmed': 1, 'search_default_available': 1}</field>
<field name="search_view_id" ref="view_picking_out_search"/>
<field name="help">This is the list of all delivery orders that have to be prepared, according to your different sales orders and your logistics rules.</field>
</record>
@@ -1123,7 +1123,7 @@
</group>
<notebook colspan="4">
<page string="General Information">
<field colspan="4" name="move_lines" nolabel="1" widget="one2many_list" default_get="{'move_line':move_lines, 'address_in_id': address_id, 'picking_type': type}" >
<field colspan="4" name="move_lines" nolabel="1" widget="one2many_list" context="{'address_in_id': address_id, 'picking_type': type}" >
<tree colors="grey:scrapped==True" string="Stock Moves">
<field name="product_id" />
<field name="product_qty" />
+131
View File
@@ -0,0 +1,131 @@
-
I update the price of the Ice-cream.
-
!python {model: stock.change.standard.price}: |
context.update({'active_model':'product.product', 'active_id': ref('product_icecream'), 'active_ids':[ref('product_icecream')]})
-
!record {model: stock.change.standard.price, id: change_price}:
new_price: 120
-
!python {model: stock.change.standard.price}: |
self.change_price(cr, uid, [ref('change_price')], context=context)
-
I check price of Ice-cream after update price.
-
!python {model: product.product}: |
product = self.browse(cr, uid, ref('product_icecream'), context=context)
assert product.standard_price == 120, "Price is not updated."
-
I update the current stock of the Ice-cream with 10 kgm in Small Refrigerator in lot0.
-
!record {model: stock.change.product.qty, id: change_qty}:
location_id: location_refrigerator_small
new_quantity: 10
product_id: product_icecream
prodlot_id: lot_icecream_1
-
!python {model: stock.change.product.qty}: |
self.change_product_qty(cr, uid, [ref('change_qty')], context=context)
-
I check available stock of Ice-cream after update stock.
-
!python {model: product.product}: |
product = self.browse(cr, uid, ref('product_icecream'), context=context)
assert product.qty_available == 10, "Stock is not updated."
-
I merge inventory.
-
!python {model: stock.inventory.merge }: |
context.update({'active_model': 'stock.inventory', 'active_id': ref('stock_inventory_icecream'), 'active_ids': [ref('stock_inventory_icecream')]})
-
!record {model: stock.inventory.merge, id: merge_inventory}:
-
!python {model: stock.inventory.merge }: |
self.do_merge(cr, uid, [ref('merge_inventory')], context=context)
-
I cancel inventory.
-
!python {model: stock.inventory}: |
self.action_cancel_inventory(cr, uid, [ref('stock_inventory_icecream')])
-
I reset to draft inventory.
-
!python {model: stock.inventory}: |
self.action_cancel_draft(cr, uid, [ref('stock_inventory_icecream')])
-
I confirm physical inventory of Ice-cream which are came in different lots.
-
!python {model: stock.inventory}: |
self.action_confirm(cr, uid, [ref('stock_inventory_icecream')], context=context)
-
I check move details after confirmed physical inventory.
-
!python {model: stock.inventory}: |
inventory = self.browse(cr, uid, ref('stock_inventory_icecream'), context=context)
assert len(inventory.move_ids) == len(inventory.inventory_line_id), "moves are not correspond."
for move_line in inventory.move_ids:
for line in inventory.inventory_line_id:
if move_line.product_id.id == line.product_id.id and move_line.prodlot_id.id == line.prod_lot_id.id:
location_id = line.product_id.product_tmpl_id.property_stock_inventory.id
assert move_line.product_qty == line.product_qty, "Qty is not correspond."
assert move_line.product_uom.id == line.product_uom.id, "UOM is not correspond."
assert move_line.date == inventory.date, "Date is not correspond."
assert move_line.location_id.id == location_id, "Source location is not correspond."
assert move_line.location_dest_id.id == line.location_id.id, "Destination location is not correspond."
assert move_line.state == 'confirmed', "Move is not confirmed."
-
I split inventory line.
-
!python {model: stock.inventory.line.split}: |
context.update({'active_model': 'stock.inventory.line', 'active_id': ref('stock_inventory_line_icecream_lot0'), 'active_ids': [ref('stock_inventory_line_icecream_lot0')]})
-
!record {model: stock.inventory.line.split, id: split_inventory_lot0}:
use_exist: True
line_exist_ids:
- quantity: 6
prodlot_id: lot_icecream_0
- quantity: 4
prodlot_id: lot_icecream_0
-
!python {model: stock.inventory.line.split }: |
self.split_lot(cr, uid, [ref('split_inventory_lot0')], context=context)
-
I fill inventory line.
-
!python {model: stock.fill.inventory}: |
context.update({'active_model': 'stock.inventory', 'active_id': ref('stock_inventory_icecream'), 'active_ids': [ref('stock_inventory_icecream')]})
-
!record {model: stock.fill.inventory, id: fill_inventory}:
location_id: location_refrigerator
recursive: True
-
!python {model: stock.fill.inventory }: |
self.fill_inventory(cr, uid, [ref('fill_inventory')], context=context)
-
Now I check vitual stock of Ice-cream after confirmed physical inventory.
-
!python {model: product.product}: |
product = self.browse(cr, uid, ref('product_icecream'), context=context)
assert product.virtual_available == 100, "Vitual stock is not updated."
-
I close physical inventory of Ice-cream.
-
!python {model: stock.inventory}: |
self.action_done(cr, uid, [ref('stock_inventory_icecream')], context=context)
-
I check closed move and real stock of Ice-cream after closed physical inventory.
-
!python {model: stock.inventory}: |
inventory = self.browse(cr, uid, ref('stock_inventory_icecream'), context=context)
assert inventory.state == 'done', "inventory is not closed."
for move_line in inventory.move_ids:
assert move_line.state == 'done', "Move is not closed."
product = self.pool.get('product.product').browse(cr, uid, ref('product_icecream'), context=context)
product.qty_available == 100, "Real stock is not updated."
-
I check stock in lot.
-
!python {model: stock.production.lot}: |
lot = self.browse(cr, uid, ref('lot_icecream_0'), context=context)
assert lot.stock_available == 50, "Stock in lot is not correspond."
+263
View File
@@ -0,0 +1,263 @@
-
I confirm outgoing shipment of 130 kgm Ice-cream.
-
!workflow {model: stock.picking, action: button_confirm, ref: outgoing_shipment}
-
I check shipment details after confirmed.
-
!python {model: stock.picking}: |
shipment = self.browse(cr, uid, ref("outgoing_shipment"))
assert shipment.state == "confirmed", "Shipment should be confirmed."
for move_line in shipment.move_lines:
assert move_line.state == "confirmed", "Move should be confirmed."
-
Now I check vitual stock of Ice-cream after confirmed outgoing shipment.
-
!python {model: product.product}: |
product = self.browse(cr, uid, ref('product_icecream'), context=context)
product.virtual_available == -30, "Vitual stock is not updated."
-
I confirm incomming shipment of 50 kgm Ice-cream.
-
!workflow {model: stock.picking, action: button_confirm, ref: incomming_shipment}
-
I receive 40kgm Ice-cream so I make backorder of incomming shipment for 40 kgm.
-
!python {model: stock.partial.picking}: |
context.update({'active_model': 'stock.picking', 'active_id': ref('incomming_shipment'), 'active_ids': [ref('incomming_shipment')]})
-
!record {model: stock.partial.picking, id: partial_incomming}:
move_ids:
- quantity: 40
product_id: product_icecream
product_uom: product.product_uom_kgm
move_id: incomming_shipment_icecream
location_id: location_convenience_shop
location_dest_id: location_refrigerator
-
!python {model: stock.partial.picking }: |
self.do_partial(cr, uid, [ref('partial_incomming')], context=context)
-
I check backorder shipment after received partial shipment.
-
!python {model: stock.picking}: |
shipment = self.browse(cr, uid, ref("incomming_shipment"))
backorder = shipment.backorder_id
assert backorder, "Backorder should be created after partial shipment."
assert backorder.state == 'done', "Backorder should be close after received."
for move_line in backorder.move_lines:
assert move_line.product_qty == 40, "Qty in backorder is not correspond."
assert move_line.state == 'done', "Move line of backorder should be closed."
-
I receive another 10kgm Ice-cream.
-
!record {model: stock.partial.picking, id: partial_incomming}:
move_ids:
- quantity: 10
product_id: product_icecream
product_uom: product.product_uom_kgm
move_id: incomming_shipment_icecream
location_id: location_convenience_shop
location_dest_id: location_refrigerator
-
!python {model: stock.partial.picking }: |
self.do_partial(cr, uid, [ref('partial_incomming')], context=context)
-
I check incomming shipment after received.
-
!python {model: stock.picking}: |
shipment = self.browse(cr, uid, ref("incomming_shipment"))
assert shipment.state == 'done', "shipment should be close after received."
for move_line in shipment.move_lines:
assert move_line.product_qty == 10, "Qty is not correspond."
assert move_line.state == 'done', "Move line should be closed."
-
I return last incomming shipment for 10 kgm Ice-cream.
-
!record {model: stock.return.picking, id: return_incomming}:
invoice_state: none
-
!python {model: stock.return.picking }: |
self.create_returns(cr, uid, [ref('return_incomming')], context=context)
-
I cancel incomming shipment after return it.
-
!python {model: stock.picking}: |
self.action_cancel(cr, uid, [ref("incomming_shipment")], context=context)
-
I make invoice of backorder of incomming shipment.
-
!python {model: stock.invoice.onshipping}: |
shipment = self.pool.get('stock.picking').browse(cr, uid, ref("incomming_shipment"))
context.update({'active_model': 'stock.picking', 'active_id': shipment.backorder_id.id, 'active_ids': [shipment.backorder_id.id]})
-
!record {model: stock.invoice.onshipping, id: invoice_incomming}:
group: False
-
!python {model: stock.invoice.onshipping }: |
self.create_invoice(cr, uid, [ref('invoice_incomming')], context=context)
-
I check invoice state of backorder of incomming shipment.
-
!python {model: stock.picking}: |
shipment = self.browse(cr, uid, ref("incomming_shipment"))
assert shipment.backorder_id.invoice_state == 'invoiced', 'Invoice state is not upadted.'
-
I check availabile stock after received incomming shipping.
-
!python {model: product.product}: |
product = self.browse(cr, uid, ref('product_icecream'), context=context)
assert product.qty_available == 140, "Stock is not correspond."
assert product.virtual_available == 10, "Vitual stock is not correspond."
-
I split incomming shipment into lots. each lot contain 10 kgm Ice-cream.
-
!python {model: stock.picking}: |
shipment = self.browse(cr, uid, ref("incomming_shipment"))
move_ids = [x.id for x in shipment.backorder_id.move_lines]
context.update({'active_model': 'stock.move', 'active_id': move_ids[0], 'active_ids': move_ids})
-
!record {model: stock.move.split, id: split_lot_incomming}:
line_ids:
- name: incoming_lot0
quantity: 10
- name: incoming_lot1
quantity: 10
- name: incoming_lot2
quantity: 10
- name: incoming_lot3
quantity: 10
-
!python {model: stock.move.split }: |
self.split_lot(cr, uid, [ref('split_lot_incomming')], context=context)
-
I check move lines after spliting
-
!python {model: stock.move}: |
lot = self.pool.get('stock.move.split').browse(cr, uid, ref('split_lot_incomming'), context=context)
lot_ids = self.pool.get('stock.production.lot').search(cr, uid, [('name','in',[x.name for x in lot.line_ids])])
assert len(lot_ids) == 4, 'lots of incomming shipment are not correspond.'
move_ids = self.search(cr, uid, [('location_dest_id','=',ref('location_refrigerator')),('prodlot_id','in',lot_ids)])
assert len(move_ids) == 4, 'move lines are not correspond per prodcution lot after splited.'
for move in self.browse(cr, uid, move_ids, context=context):
assert move.prodlot_id.name in ['incoming_lot0', 'incoming_lot1', 'incoming_lot2', 'incoming_lot3'], "lot is not correspond."
assert move.product_qty == 10, "qty is not correspond per production lot."
context.update({'active_model':'stock.move', 'active_id':move_ids[0],'active_ids': move_ids})
-
I consume 1 kgm ice-cream from each incoming lots into internal production.
-
!record {model: stock.move.consume, id: consume_lot_incomming}:
product_qty: 1
location_id: location_refrigerator
-
!python {model: stock.move.consume}: |
self.do_move_consume(cr, uid, [ref('consume_lot_incomming')], context=context)
-
I scrap 10 gm ice-cream from each incoming lots into scrap location.
-
!record {model: stock.move.scrap, id: scrap_lot_incomming}:
product_qty: 0.010
-
!python {model: stock.move.scrap}: |
self.move_scrap(cr, uid, [ref('scrap_lot_incomming')], context=context)
-
I check stock in scrap location and refrigerator location.
-
!python {model: stock.location}: |
ctx = {'product_id': ref('product_icecream')}
refrigerator_location = self.browse(cr, uid, ref('location_refrigerator'), context=ctx)
assert refrigerator_location.stock_real == 131.96, 'stock is not correspond in refrigerator location.'
scrapped_location = self.browse(cr, uid, ref('stock_location_scrapped'), context=ctx)
assert scrapped_location.stock_real == 0.010*4, 'scraped stock is not correspond in scrap location.'
production_location = self.browse(cr, uid, ref('location_production'), context=ctx)
assert production_location.stock_real == 1*4, 'consume stock is not correspond in production location.' #TOFIX: consume stock is not updated in default production location of product.
-
I check availabile stock after consumed and scraped.
-
!python {model: product.product}: |
product = self.browse(cr, uid, ref('product_icecream'), context=context)
assert product.qty_available == 131.96, "Stock is not correspond."
assert round(product.virtual_available, 2) == 1.96, "Vitual stock is not correspond."
-
I trace all incoming lots.
-
!python {model: stock.production.lot }: |
lot = self.pool.get('stock.move.split').browse(cr, uid, ref('split_lot_incomming'), context=context)
lot_ids = self.search(cr, uid, [('name', 'in', [x.name for x in lot.line_ids])])
self.action_traceability(cr, uid, lot_ids, context=context)
-
I check outgoing shipment after stock availablity in refrigerator.
-
!python {model: stock.picking}: |
shipment = self.browse(cr, uid, ref("outgoing_shipment"), context=context)
self.pool.get('stock.move').action_assign(cr, uid, [x.id for x in shipment.move_lines]) #TOFIX: assignment of move lines should be call before testing assigment otherwise picking never gone in assign state
#TOFIX: shipment should be assigned if stock available
#assert shipment.state == "assigned", "Shipment should be assigned."
#for move_line in shipment.move_lines:
# assert move_line.state == "assigned", "Move should be assigned."
self.force_assign(cr, uid, [shipment.id])
-
I deliver 5kgm Ice-cream to customer so I make partial deliver
-
!python {model: stock.partial.move}: |
context.update({'active_model': 'stock.move', 'active_id': ref('outgoing_shipment_icecream'), 'active_ids': [ref('outgoing_shipment_icecream')]})
-
!record {model: stock.partial.move, id: partial_outgoing_icecream}:
move_ids:
- quantity: 5
product_id: product_icecream
product_uom: product.product_uom_kgm
move_id: outgoing_shipment_icecream
location_id: location_refrigerator
location_dest_id: location_delivery_counter
-
!python {model: stock.partial.move }: |
self.do_partial(cr, uid, [ref('partial_outgoing_icecream')], context=context)
-
I packing outgoing shipment into box per 10kgm with unique tracking lot.
-
!python {model: stock.move}: |
stock_split = self.pool.get('stock.split.into')
move = self.browse(cr, uid, ref('outgoing_shipment_icecream'), context=context)
context.update({'active_model': 'stock.move', 'active_id': move.id, 'active_ids': [move.id]})
total_qty = move.product_qty
split_qty = 10
while(total_qty>0):
split_id = stock_split.create(cr, uid, {'quantity': split_qty}, context=context)
stock_split.split(cr, uid, [split_id], context=context)
total_qty -= split_qty
-
I deliver outgoing shipment.
-
!python {model: stock.partial.picking}: |
context.update({'active_model': 'stock.picking', 'active_id': ref('outgoing_shipment'), 'active_ids': [ref('outgoing_shipment')]})
-
!record {model: stock.partial.picking, id: partial_outgoing}:
picking_id: outgoing_shipment
-
!python {model: stock.partial.picking }: |
self.do_partial(cr, uid, [ref('partial_outgoing')], context=context)
-
I check outgoing shipment after deliver.
-
!python {model: stock.picking}: |
shipment = self.browse(cr, uid, ref("outgoing_shipment"), context=context)
assert shipment.state == "done", "Shipment should be closed."
for move_line in shipment.move_lines:
assert move_line.state == "done", "Move should be closed."
-
I check availabile stock after deliver.
-
!python {model: product.product}: |
product = self.browse(cr, uid, ref('product_icecream'), context=context)
assert round(product.qty_available, 2) == 1.96, "Stock is not correspond."
assert round(product.virtual_available, 2) == 1.96, "Vitual stock is not correspond."
@@ -1,65 +0,0 @@
-
In order to test partial delivery and back orders, I will use a delivery order with 5 CPU1 and 5 CPU3
-
I confirm and force the availability of all products on the picking OUT001
-
!python {model: stock.picking}: |
self.draft_force_assign(cr, uid, [ref('stock.stock_picking_1')], {})
self.force_assign(cr, uid, [ref('stock.stock_picking_1')], {})
-
After having confirmed the picking and its two lines, I add a new move line in draft state with 7 FAN2
-
!record {model: stock.move, id: stock_move_3}:
product_id: product.product_product_fan2
product_uom: product.product_uom_unit
product_uos_qty: 7.0
product_qty: 7.0
location_dest_id: stock.stock_location_customers
location_id: stock.stock_location_stock
name: CPU3, Processor AMD Athlon XP 1800
picking_id: stock_picking_1
- |
I click on 'Process Now' to process the delivery order and I change quantities to:
7 CPU1, 0 CPU3, 3 FAN2 and a new product of 4 PC1
-
!python {model: stock.picking}: |
result = self.action_process(cr, uid, [ref('stock.stock_picking_1')], {})['res_id']
pick = self.pool.get('stock.partial.picking').browse(cr, uid, result, {})
lobj = self.pool.get('stock.partial.picking.line')
for line in pick.move_ids:
if line.product_id.id == ref('product.product_product_cpu3'):
lobj.write(cr, uid, [line.id], {
'quantity': 0.0
}, {})
elif line.product_id.id == ref('product.product_product_cpu1'):
lobj.write(cr, uid, [line.id], {
'quantity': 7.0
}, {})
elif line.product_id.id == ref('product.product_product_fan2'):
lobj.write(cr, uid, [line.id], {
'quantity': 3.0
}, {})
lobj.create(cr, uid, {
'product_id': ref('product.product_product_pc1'),
'quantity': 2.0,
'product_uom': ref('product.product_uom_unit'),
'location_id': ref('stock.stock_location_stock'),
'location_dest_id': ref('stock.stock_location_customers'),
'wizard_id': result
}, {})
self.pool.get('stock.partial.picking').do_partial(cr, uid, [result], {})
-
I test that the back order contains 5 CPU3, 4 FAN2 and nothing else
-
!python {model: stock.picking}: |
pick = self.browse(cr, uid, ref('stock.stock_picking_1'), {})
for line in pick.move_lines:
if line.product_id.id == ref('product.product_product_cpu3'):
assert line.product_qty == 5.0, "Wrong quantity %.2f for CPU3 back order" % (line.product_qty,)
elif line.product_id.id == ref('product.product_product_fan2'):
assert line.product_qty == 4.0, "Wrong quantity %.2f for FAN2 back order" % (line.product_qty,)
elif line.product_id.id == ref('product.product_product_pc1'):
assert line.product_qty == 0.0, "Wrong quantity for PC1 back order"
else:
assert line.product_qty == 0.0, "Wrong quantity for %s back order" % (line.product_id.code,)
+23 -22
View File
@@ -1,40 +1,41 @@
-
In order to test the PDF reports defined on a stock, we will print a Stock Overviewall(children) report
I print a stock overview report of location.
-
!python {model: stock.location}: |
import netsvc, tools, os
(data, format) = netsvc.LocalService('report.lot.stock.overview_all').create(cr, uid, [ref('stock.stock_location_stock')], {}, {})
if tools.config['test_report_directory']:
file(os.path.join(tools.config['test_report_directory'], 'stock-overviewall'+format), 'wb+').write(data)
-
In order to test the PDF reports defined on stock inventory, we will print a Stock Inventory Move report
-
!python {model: stock.inventory}: |
import netsvc, tools, os
(data, format) = netsvc.LocalService('report.stock.inventory.move').create(cr, uid, [ref('stock.stock_inventory_0')], {}, {})
if tools.config['test_report_directory']:
file(os.path.join(tools.config['test_report_directory'], 'stock-stock_inventory_move.'+format), 'wb+').write(data)
-
In order to test the PDF reports defined on a stock, we will print a Stock Overview report
-
!python {model: stock.location}: |
import netsvc, tools, os
(data, format) = netsvc.LocalService('report.lot.stock.overview').create(cr, uid, [ref('stock.stock_location_14')], {}, {})
(data, format) = netsvc.LocalService('report.lot.stock.overview').create(cr, uid, [ref('location_refrigerator')], {}, {})
if tools.config['test_report_directory']:
file(os.path.join(tools.config['test_report_directory'], 'stock-overview'+format), 'wb+').write(data)
-
In order to test the PDF reports defined on a stock, we will print a Stock Picking List report
I print a Stock Overview report of location with child location.
-
!python {model: stock.location}: |
import netsvc, tools, os
(data, format) = netsvc.LocalService('report.lot.stock.overview_all').create(cr, uid, [ref('location_refrigerator')], {}, {})
if tools.config['test_report_directory']:
file(os.path.join(tools.config['test_report_directory'], 'stock-overviewall'+format), 'wb+').write(data)
-
I print a Stock Inventory report.
-
!python {model: stock.inventory}: |
import netsvc, tools, os
(data, format) = netsvc.LocalService('report.stock.inventory.move').create(cr, uid, [ref('stock_inventory_icecream')], {}, {})
if tools.config['test_report_directory']:
file(os.path.join(tools.config['test_report_directory'], 'stock-stock_inventory_move.'+format), 'wb+').write(data)
-
I print a outgoing shipment report.
-
!python {model: stock.picking}: |
import netsvc, tools, os
(data, format) = netsvc.LocalService('report.stock.picking.list').create(cr, uid, [ref('stock.stock_picking_0')], {}, {})
(data, format) = netsvc.LocalService('report.stock.picking.list').create(cr, uid, [ref('outgoing_shipment')], {}, {})
if tools.config['test_report_directory']:
file(os.path.join(tools.config['test_report_directory'], 'stock-picking_list'+format), 'wb+').write(data)
-
In order to test the PDF reports defined on a Stock, we will print Product Stock Report
I print stock Report.
-
!python {model: product.product}: |
import netsvc, tools, os
(data, format) = netsvc.LocalService('report.stock.product.history').create(cr, uid, [ref('product.product_product_pc1')], {}, {})
(data, format) = netsvc.LocalService('report.stock.product.history').create(cr, uid, [ref('product_icecream')], {}, {})
if tools.config['test_report_directory']:
file(os.path.join(tools.config['test_report_directory'], 'stock-product_stock_report.'+format), 'wb+').write(data)
-424
View File
@@ -1,424 +0,0 @@
-
In order to test the stock module, I will create product,
create physical inventory ,fill inventory lines from location,split inventory line into production lot
-
I create Stock Production Lot for product PC3
-
!record {model: stock.production.lot, id: stock_production_lot0}:
product_id: product.product_product_pc3
date: !eval time.strftime('%Y-%m-%d %H:%M:%S')
name: 0000001
-
I trace the Stock Production Lot for product PC3.
-
!python {model: stock.production.lot }: |
self.action_traceability(cr,uid,[ref('stock_production_lot0')], {'lang': 'en_US', 'tz': False, 'active_model': 'ir.ui.menu', 'field': '', 'type': ''})
-
I create change product quantity for product PC3.
-
!record {model: stock.change.product.qty, id: stock_change_product_qty0}:
product_id: product.product_product_pc3
new_quantity: 100
location_id: stock.stock_location_stock
prodlot_id: stock.stock_production_lot0
-
I apply the new quantity on product PC3.
-
!python {model: stock.change.product.qty }: |
context = {"lang": 'en_US', "active_model":
"product.product", "active_ids": [ref("product.product_product_pc3")], "tz": False, "active_id":ref('product.product_product_pc3')}
self.default_get(cr, uid, ["prodlot_id", "location_id", "new_quantity", "product_id"], context)
self.fields_view_get(cr, uid, ref("stock.view_change_product_quantity"),"form", context)
self.change_product_qty(cr, uid, [ref("stock_change_product_qty0")], {"lang": 'en_US', "active_model":
"stock.change.product.qty", "active_ids": ref("product.product_product_pc3"), "tz": False, "active_id":ref('product.product_product_pc3')})
-
I check that the quantity on product PC3 is updated.
-
!python {model: product.product }: |
pro_obj = self.browse(cr, uid, ref("product.product_product_pc3"))
assert (pro_obj.qty_available >= 100) , "The quantity of PC3 is not updated!"
-
I Read quantity on product PC3.
-
!python {model: stock.location }: |
self.read(cr, uid, [ref("stock.stock_location_stock")],['stock_real_value','stock_virtual'], {'lang': 'en_GB', 'tz': False, 'active_model': 'product.product', 'bin_size': True, 'active_ids': [ref("product.product_product_pc3")], 'product_id':ref("product.product_product_pc3"), 'active_id': ref("product.product_product_pc3")})
-
I Creating a chained stock.location record
-
!record {model: stock.location, id: stock_location_loc0}:
chained_auto_packing: auto
chained_delay: 0.0
chained_location_id: stock.stock_location_customers
chained_location_type: fixed
location_id: stock.stock_location_company
name: chain location
parent_left: 2
parent_right: 3
usage: internal
-
I create Product By location chart for stock.location.product Object.
-
!record {model: stock.location.product, id: stock_location_product0}:
from_date: '2011-07-01 00:00:00'
to_date: '2011-07-31 23:59:00'
-
I open product chart.
-
!python {model: stock.location.product }: |
self.action_open_window(cr, uid, [ref("stock_location_product0")], {'lang': 'en_US', 'full': 1, 'tz': False, 'active_model': 'stock.location', 'search_default_in_location': 1, 'active_ids': [ref("stock.stock_location_stock")], 'active_id': ref("stock.stock_location_stock")})
-
I open product form from stock.location object .
-
!python {model: product.product }: |
self.fields_view_get(cr, uid, False, "tree", {'lang': 'en_US', 'full': 1, 'tz': False, 'active_model': 'stock.location', 'location': ref('stock.stock_location_stock'), 'search_default_in_location': 1, 'active_ids': [ref("stock.stock_location_stock")], 'active_id': ref("stock.stock_location_stock")})
-
I create change product standard price for product PC3.
-
!record {model: stock.change.standard.price, id: stock_change_standard_price0}:
new_price: 1515
stock_account_input: account.a_recv
stock_account_output: account.a_pay
stock_journal: account.expenses_journal
enable_stock_in_out_acc: True
-
I apply the new product standard price on product PC3.
-
!python {model: stock.change.standard.price }: |
context = {"lang": 'en_US', "active_model":
"product.product", "active_ids": [ref("product.product_product_pc3")], "tz": False, "active_id":ref('product.product_product_pc3')}
self.default_get(cr, uid, ["new_price"], context)
self.change_price(cr, uid, [ref("stock_change_product_qty0")], context)
-
I create Physical Inventory for the products.
-
!record {model: stock.inventory, id: stock_inventory_physicalinventoy0}:
company_id: base.main_company
date: !eval time.strftime('%Y-%m-%d %H:%M:%S')
inventory_line_id:
- company_id: base.main_company
location_id: stock.stock_location_stock
product_id: product.product_product_pc3
product_qty: 10.0
product_uom: product.product_uom_unit
- company_id: base.main_company
location_id: stock.stock_location_stock
product_id: product.product_product_pc1
product_qty: 10.0
product_uom: product.product_uom_unit
name: Physical inventory
state: draft
-
I create merge Inventory for the products.
-
!record {model: stock.inventory, id: stock_inventory_mergeinventoy0}:
company_id: base.main_company
date: !eval time.strftime('%Y-%m-%d %H:%M:%S')
inventory_line_id:
- company_id: base.main_company
location_id: stock.stock_location_stock
product_id: product.product_product_pc3
product_qty: 20.0
product_uom: product.product_uom_unit
- company_id: base.main_company
location_id: stock.stock_location_stock
product_id: product.product_product_pc1
product_qty: 20.0
product_uom: product.product_uom_unit
name: Physical inventory
state: draft
-
I merge inventory .
-
!python {model: stock.inventory.merge}: |
context = {"lang": 'en_US',
"full": "1", "tz": False, "active_model": "stock.inventory", "active_ids":
[ref("stock_inventory_physicalinventoy0"), ref("stock_inventory_mergeinventoy0")], "active_id": ref("stock_inventory_physicalinventoy0"), }
self.fields_view_get(cr, uid, False, "form", context)
self.do_merge(cr, uid, [ref("stock_inventory_mergeinventoy0")], context)
-
I create stock.inventory.line record.
-
!record {model: stock.inventory.line, id: stock_inventory_line}:
product_id: product.product_product_pc1
product_uom: product.product_uom_unit
product_qty: 10
inventory_id: stock_inventory_mergeinventoy0
location_id: stock.stock_location_stock
-
I Change a Product oF stock.inventory.line record.
-
!python {model: stock.inventory.line}: |
self.on_change_product_id(cr, uid, [ref("stock_inventory_line")], ref('stock.stock_location_stock'), ref('product.product_product_pc3'), False, False)
-
I create stock.fill.inventory .
-
!record {model: stock.fill.inventory, id: stock_fill_inventory_0}:
location_id: stock.stock_location_stock
recursive: False
set_stock_zero: False
-
I fill inventory for PC3.
-
!python {model: stock.fill.inventory}: |
context = {"lang": 'en_US',"full": "1", "tz": False, "active_model": "stock.inventory", "active_ids":
[ref("stock_inventory_physicalinventoy0")], "active_id": ref("stock_inventory_physicalinventoy0")}
self.view_init(cr, uid, ["set_stock_zero", "location_id", "recursive"], context)
self.fill_inventory(cr, uid, [ref("stock_fill_inventory_0")], context)
-
I split the PC3 inventory line to create 5 PC3 with production lot 00002-stock-test
-
!record {model: stock.inventory.line.split, id: stock_inventory_line_0}:
line_ids:
- name: '00002-stock-test'
quantity: 5
product_id: product.product_product_pc1
product_uom: product.product_uom_unit
use_exist: False
qty: 10
-
I confirm the split operation
-
!python {model: stock.inventory.line}: |
line_ids = self.search(cr, uid, [('inventory_id','=',ref('stock_inventory_physicalinventoy0')),
('product_id','=',ref('product.product_product_pc1'))])
assert line_ids, 'Inventory lines are missing'
self.pool.get('stock.inventory.line.split').split_lot(cr, uid, [ref("stock_inventory_line_0")],
{'active_model': 'stock.inventory.line',
'active_ids': [line_ids[0]]})
-
I confirm the Inventory for PC3.
-
!python {model: stock.inventory}: |
self.action_confirm(cr,uid,[ref('stock_inventory_physicalinventoy0')])
self.action_done(cr,uid,[ref('stock_inventory_physicalinventoy0')])
-
I cancel the Inventory for PC3.
-
!python {model: stock.inventory}: |
self.action_cancel_inventary(cr,uid,[ref('stock_inventory_physicalinventoy0')])
-
I change inventory state to draft for PC3.
-
!python {model: stock.inventory}: |
self.action_cancel_draft(cr,uid,[ref('stock_inventory_physicalinventoy0')])
-
In Order to test the picking I create picking with move lines.
-
!record {model: stock.picking, id: stock_picking_0}:
name: test_picking
address_id: base.res_partner_address_4
company_id: base.main_company
date: !eval time.strftime('%Y-%m-%d %H:%M:%S')
invoice_state: 2binvoiced
move_lines:
- company_id: base.main_company
date: !eval time.strftime('%Y-%m-%d %H:%M:%S')
location_dest_id: stock.stock_location_loc0
location_id: stock.stock_location_stock
name: PC3
product_id: product.product_product_pc3
product_qty: 100.0
product_uom: product.product_uom_unit
date: !eval time.strftime('%Y-%m-%d %H:%M:%S')
product_uos_qty: 100.0
move_type: direct
type: out
-
I split the picking with a first batch of 20 PCs
-
!python {model: stock.picking }: |
pick=self.browse(cr,uid,ref('stock_picking_0'))
split_obj=self.pool.get('stock.split.into')
partial_datas={}
move=pick.move_lines[0]
partial_datas= {
'quantity': 20,
}
split_id = self.pool.get('stock.split.into').create(cr, uid, partial_datas)
split_obj.split(cr, uid, [split_id], {"lang": "en_US", "tz":
False, "active_model": "stock.move", "active_ids": [move.id],
"active_id": move.id, })
-
I click on draft_force_assign on picking.
-
!python {model: stock.picking}: |
self.draft_force_assign(cr, uid, [ref("stock_picking_0")], {"lang": "en_US", "active_model":
"ir.ui.menu", "tz": False, "search_default_confirmed": 1, "contact_display":
"partner", "active_ids": [ref("stock.menu_action_picking_tree6")], "active_id":
ref("stock.menu_action_picking_tree6"), })
-
I click on action_assign on picking.
-
!python {model: stock.picking}: |
self.action_assign(cr, uid, [ref("stock_picking_0")], {"lang": "en_US", "active_model":
"ir.ui.menu", "tz": False, "search_default_confirmed": 1, "contact_display":
"partner", "active_ids": [ref("stock.menu_action_picking_tree6")], "active_id":
ref("stock.menu_action_picking_tree6"), })
-
I process the partial picking with 20 PCE
-
!python {model: stock.picking }: |
pick = self.browse(cr,uid,ref('stock_picking_0'))
stock_partial_move = self.pool.get('stock.partial.move')
partial_id = stock_partial_move.create(cr, uid, {},
context={'active_model': 'stock.move',
'active_ids': [x.id for x in pick.move_lines]})
stock_partial_move.do_partial(cr, uid, [partial_id])
-
I Performing an osv_memory action split_lot on module stock.move.split
-
!python {model: stock.picking }: |
split_obj=self.pool.get('stock.move.split')
split_move_lines=self.pool.get('stock.move.split.lines')
pick=self.browse(cr,uid,ref('stock_picking_0'))
partial_datas={}
move=pick.move_lines[0]
partial_datas= {
'product_id': move.product_id.id,
'qty': 80,
'product_uom': move.product_uom.id,
'use_exist': move.picking_id and move.picking_id.type=='out' and True or False
}
split_id = self.pool.get('stock.move.split').create(cr, uid, partial_datas, context={})
split_move_data= {
'quantity': 10,
'name': 'lot',
}
split_move_id = split_move_lines.create(cr, uid, split_move_data, context={})
split_obj.default_get(cr, uid, ["product_id", "product_uom", "line_exist_ids", "qty",
"line_ids", "use_exist"], {'lang': 'en_US', 'default_location_dest_id': ref('stock.stock_location_stock'), 'tz': False, 'active_model': 'stock.move', 'search_default_receive': 1, 'product_receive': True, 'active_ids': [move.id], 'default_location_id': ref('stock.stock_location_locations'), 'active_id': move.id})
split_obj.split_lot(cr, uid, [split_id], context={"lang": "en_US", "tz":
False, "active_model": "stock.move", "scrap": True, "active_ids": [move.id],
"active_id": move.id, })
-
I Performed an osv_memory action move_scrap on module stock.move.scrap
-
!python {model: stock.picking }: |
location_obj = self.pool.get('stock.location')
scrpaed_location_ids = location_obj.search(cr, uid, [('scrap_location','=',True)])
pick=self.browse(cr,uid,ref('stock_picking_0'))
scrap_obj=self.pool.get('stock.move.scrap')
partial_datas={}
move=pick.move_lines[0]
partial_datas= {
'product_id': move.product_id.id,
'location_id': scrpaed_location_ids[0],
'product_qty': 1,
'product_uom': move.product_uom.id,
}
scrap_id = scrap_obj.create(cr, uid, partial_datas)
context = {"lang": "en_US", "tz": False, "active_model": "stock.move",
"scrap": True, "active_ids": [move.id], "active_id": move.id, }
scrap_obj.default_get(cr, uid, ["location_id", "product_id", "product_uom", "product_qty"], context)
scrap_obj.move_scrap(cr, uid, [scrap_id], context)
-
I Performed an osv_memory do move consume on module stock.move.consume
-
!python {model: stock.picking }: |
location_obj = self.pool.get('stock.location')
scrpaed_location_ids = location_obj.search(cr, uid, [('scrap_location','=',True)])
pick=self.browse(cr,uid,ref('stock_picking_0'))
consume_obj=self.pool.get('stock.move.consume')
partial_datas={}
move=pick.move_lines[0]
partial_datas= {
'product_id': move.product_id.id,
'location_id': scrpaed_location_ids[0],
'product_qty': 1,
'product_uom': move.product_uom.id,
}
context = {"lang": "en_US", "tz": False, "active_model": "stock.move",
"scrap": True, "active_ids": [move.id], "active_id": move.id, }
consume_id = consume_obj.create(cr, uid, partial_datas)
consume_obj.default_get(cr, uid, ["location_id", "product_id", "product_uom", "product_qty"], context)
consume_obj.do_move_consume(cr, uid, [consume_id], context)
-
I process the picking with the 80 remaining PCs
-
!python {model: stock.picking}: |
stock_partial_picking = self.pool.get('stock.partial.picking')
partial_id = stock_partial_picking.create(cr, uid, {},
context={'active_model': 'stock.picking',
'active_ids': [ref('stock_picking_0')]})
stock_partial_picking.do_partial(cr, uid, [partial_id])
-
I Performing an osv_memory action create_invoice on module stock.invoice.onshipping
-
!python {model: stock.invoice.onshipping}: |
invoice_line_id = self.create(cr, uid,{}, {"lang": 'en_US', "active_model":
"stock.picking", "active_ids": [ref("stock_picking_0")], "tz": False, "active_id":ref("stock_picking_0")})
self.open_invoice(cr, uid, [invoice_line_id], {"lang": "en_US",
"search_default_available": 1, "inv_type": "in_invoice" , "tz": False, "active_model": "stock.picking",
"contact_display": "partner_address", "active_ids": [ref("stock_picking_0")],
"active_id": ref("stock_picking_0")})
self._get_journal_id(cr, uid, {"lang": "en_US", "search_default_available": 1, "tz": False, "active_model": "stock.picking",
"contact_display": "partner_address", "active_ids": [ref("stock_picking_0")],
"active_id": ref("stock_picking_0"), })
-
I create a record of stock.picking and unlink a record
-
!python {model: stock.picking}: |
copy_id = self.copy(cr, uid, (ref("stock_picking_0")))
ctx = {"lang": "en_US", "active_model":
"ir.ui.menu", "tz": False, "search_default_confirmed": 1, "contact_display":
"partner", "active_ids": [ref("stock.menu_action_picking_tree6")], "active_id":
ref("stock.menu_action_picking_tree6"), }
self.draft_force_assign(cr, uid, [copy_id], ctx)
self.unlink(cr, uid, [copy_id], ctx)
-
I create a record of stock.picking and cancel a record
-
!python {model: stock.picking}: |
copy_id = self.copy(cr, uid, (ref("stock_picking_0")))
self.draft_validate(cr, uid, [copy_id], {"lang": "en_US", "search_default_available":
1, "tz": False, "active_model": "ir.ui.menu", "contact_display": "partner_address",
"active_ids": [ref("stock.menu_action_picking_tree4")], "active_id": ref("stock.menu_action_picking_tree4"),
})
self.allow_cancel(cr, uid, [copy_id], context= None)
-
I process a copy of the picking and I return it
-
!python {model: stock.picking}: |
copy_id = self.copy(cr, uid, (ref("stock_picking_0")))
self.draft_force_assign(cr, uid, [copy_id])
self.force_assign(cr, uid, [copy_id])
stock_partial_picking = self.pool.get('stock.partial.picking')
context = {'active_model': 'stock.picking',
'active_ids': [copy_id],
'active_id': copy_id}
partial_id = stock_partial_picking.create(cr, uid, {}, context=context)
stock_partial_picking.do_partial(cr, uid, [partial_id], context)
return_pick_id = self.pool.get('stock.return.picking').create(cr, uid,{}, context)
self.pool.get('stock.return.picking').create_returns(cr, uid, [return_pick_id], context)
-78
View File
@@ -1,78 +0,0 @@
-
I create stock.tracking record.
-
!record {model: stock.tracking, id: stock_tracking_0}:
move_ids:
- product_id: product.product_product_pc1
product_qty: 5.0
product_uom: product.product_uom_unit
location_id : stock.stock_location_suppliers
location_dest_id: stock.stock_location_shop0
name : '[PC1] Basic PC'
date_expected : !eval time.strftime('%Y-%m-%d %H:%M:%S')
name: 0000007
active: True
date: !eval time.strftime('%Y-%m-%d %H:%M:%S')
-
I trace the information of a product.
-
!python {model: stock.tracking}: |
self.name_get(cr, uid, [ref('stock_tracking_0')],{'lang': 'en_US', 'tz': False, 'active_model': 'ir.ui.menu', 'field': '', 'type': ''})
self.action_traceability(cr,uid,[ref('stock_tracking_0')], {'lang': 'en_US', 'tz': False, 'active_model': 'ir.ui.menu', 'field': '', 'type': ''})
-
I creat stock.move Record
-
!record {model: stock.move, id: stock_move_test0}:
location_dest_id: stock.stock_location_shop0
product_id: product.product_product_pc1
product_qty: 5.0
product_uom: product.product_uom_unit
date_expected : !eval time.strftime('%Y-%m-%d %H:%M:%S')
location_id : stock.stock_location_suppliers
name : '[PC1] Basic PC'
company_id: base.main_company
product_uos_qty : 5.0
name: IN/00010
state: assigned
-
I Check onchange function of stock.move object
-
!python {model: stock.move }: |
self.onchange_lot_id(cr, uid, [ref("stock_move_test0")], ref("stock.stock_production_lot0"), 5, ref("stock.stock_location_suppliers"), ref("product.product_product_pc1"), ref("product.product_uom_unit"), None)
self.onchange_quantity(cr, uid, [ref("stock_move_test0")], ref("product.product_product_pc1"), 10, ref("product.product_uom_unit"), ref("product.product_uom_unit"))
self.onchange_uos_quantity(cr, uid, [ref("stock_move_test0")], ref("product.product_product_pc1"), 10, ref("product.product_uom_unit"), ref("product.product_uom_unit"))
self.onchange_product_id(cr, uid, [ref("stock_move_test0")], ref("product.product_product_pc1"), ref("stock.stock_location_suppliers"), ref("stock.stock_location_shop0"), False)
-
I Check _getSSCC and action_partial_move function of stock.move object
-
!python {model: stock.move }: |
context = {"lang": 'en_US', "default_location_dest_id": ref("stock.stock_location_shop0"), "active_model":
"stock.move", "search_default_receive": 1, 'product_receive': True, "default_location_id": ref("stock.stock_location_suppliers"),"active_ids":[ref("stock_move_test0")], "tz": False, "active_id":ref("stock_move_test0")}
self._getSSCC(cr, uid , context)
self.action_partial_move(cr, uid , [ref("stock_move_test0")], context)
-
I check write function
-
!python {model: stock.move }: |
vals = {"product_qty" : 2, "product_uos_qty": 2}
self.write(cr, uid, [ref("stock_move_test0")], vals, {"lang": 'en_US', "default_location_dest_id": ref("stock.stock_location_shop0"), "active_model":
"ir.ui.menu", "search_default_receive": 1, 'product_receive': True, "default_location_id": ref("stock.stock_location_suppliers"),"active_ids":[ref("stock_move_tree")], "tz": False, "active_id":ref("stock_move_tree")})
-
I check default function
-
!python {model: stock.move }: |
self.name_get(cr, uid, [ref("stock_move_test0")], {"lang": 'en_US', "default_location_dest_id": ref("stock.stock_location_shop0"), "active_model":
"stock.move", "search_default_receive": 1, 'product_receive': True, "default_location_id": ref("stock.stock_location_suppliers"),"active_ids":[ref("stock_move_test0")], "tz": False, "active_id":ref("stock_move_test0")})
ctx = {"lang": 'en_US', "default_location_dest_id": ref("stock.stock_location_shop0"), "active_model":
"ir.ui.menu", "search_default_receive": 1, 'product_receive': True, "default_location_id": ref("stock.stock_location_suppliers"),"active_ids":[ref("view_move_form_reception_picking")], "tz": False, "active_id":ref("view_move_form_reception_picking")}
self._default_location_destination(cr, uid, ctx)
self._default_location_source(cr, uid, ctx)
+1 -1
View File
@@ -81,7 +81,7 @@ class stock_fill_inventory(osv.osv_memory):
if fill_inventory.recursive:
location_ids = location_obj.search(cr, uid, [('location_id',
'child_of', [fill_inventory.location_id.id])], order="id",
'child_of', [fill_inventory.location_id.id])], order="id",
context=context)
else:
location_ids = [fill_inventory.location_id.id]
+1
View File
@@ -34,6 +34,7 @@ class stock_move_consume(osv.osv_memory):
'location_id': fields.many2one('stock.location', 'Location', required=True)
}
#TOFIX: product_uom should not have differemt category of default UOM of product. Qty should be convert into UOM of original move line before going in consume and scrap
def default_get(self, cr, uid, fields, context=None):
""" Get default values
@param self: The object pointer.
+2 -2
View File
@@ -42,8 +42,8 @@ class action_traceability(osv.osv_memory):
lot_id = ids
if context is None:
context = {}
type1 = context['type'] or 'move_history_ids2'
field = context['field'] or 'tracking_id'
type1 = context.get('type', 'move_history_ids2')
field = context.get('field', 'tracking_id')
obj = self.pool.get('stock.move')
ids = obj.search(cr, uid, [(field, 'in',lot_id)])
cr.execute('select id from ir_ui_view where model=%s and field_parent=%s and type=%s', ('stock.move', type1, 'tree'))
@@ -6,20 +6,15 @@
-
!record {model: stock.picking, id: stock_picking_out0}:
address_id: base.res_partner_address_3000
company_id: base.main_company
invoice_state: 2binvoiced
move_lines:
- company_id: base.main_company
date_expected: !eval time.strftime('%Y-%m-%d %H:%M:%S')
date: !eval time.strftime('%Y-%m-%d %H:%M:%S')
location_id: stock.stock_location_stock
product_id: product.product_product_pc1
product_qty: 3.0
product_uom: product.product_uom_unit
location_dest_id: stock.stock_location_customers
name: '[PC1] Basic PC'
move_type: direct
name: OUT/00006
type: out
-
I need to check the availability of the product so I make my picking order for processing later.
@@ -253,5 +253,6 @@
I check whether the procurement orders are created or not.
-
!python {model: procurement.order}: |
proc_ids = self.search(cr, uid, [('origin','=','MPS(admin) 2011, week 29'),('product_id','=',ref("product.product_product_pc1"))])
import datetime
proc_ids = self.search(cr, uid, [('origin','=','MPS(admin) %s, week 29' % (datetime.datetime.now().year)),('product_id','=',ref("product.product_product_pc1"))])
assert proc_ids,'No Procurements!'
+1 -1
View File
@@ -563,7 +563,7 @@ class survey_question_wiz(osv.osv_memory):
surv_name_wiz.write(cr, uid, [context.get('sur_name_id',False)], {'response' : tools.ustr(response_id)})
#click first time on next button then increemnet on total start suvey
if not sur_name_read['store_ans']:
if not safe_eval(sur_name_read['store_ans']):
his_id = self.pool.get('survey.history').create(cr, uid, {'user_id': uid, \
'date': strftime('%Y-%m-%d %H:%M:%S'), 'survey_id': sur_name_read['survey_id'][0]})
survey_id = sur_name_read['survey_id'][0]
+1 -1
View File
@@ -12,7 +12,7 @@
<field name="type">ir.actions.act_window</field>
<field name="res_model">ir.attachment</field>
<field name="view_type">form</field>
<field name="domain" eval="[('parent_id','=',ref('dir_sale'))]"></field>
<field name="context" eval="{'default_parent_id':ref('dir_sale')}"/>
<field name="help">Documents give you access to all files attached to any record. It is a repository of all documents such as emails, project-related attachments or any other documents. From this view, you can search through the content of the documents. OpenERP automatically assign meta data based on the record like the related partner and indexes the content of .DOC, .ODT, .TXT, .SXW and .PDF documents.</field>
</record>