Merge
bzr revid: dhara_openerp-20120106065019-qvsider94itsokp4
This commit is contained in:
commit
1bb1c09e58
|
@ -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,
|
||||
|
|
|
@ -824,8 +824,9 @@ class account_invoice(osv.osv):
|
|||
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
|
||||
|
@ -1267,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]:
|
||||
|
|
|
@ -152,7 +152,7 @@
|
|||
<field name="currency_id" width="50"/>
|
||||
<button name="%(action_account_change_currency)d" type="action" icon="terp-stock_effects-object-colorize" string="Change" attrs="{'invisible':[('state','!=','draft')]}" groups="account.group_account_user"/>
|
||||
<newline/>
|
||||
<field string="Supplier" name="partner_id" on_change="onchange_partner_id(type,partner_id,date_invoice,payment_term, partner_bank_id,company_id)" context="{'default_customer': 0, 'search_default_supplier': 1, 'default_supplier': 1}" options='{"quick_create": false}'/>
|
||||
<field string="Supplier" name="partner_id" on_change="onchange_partner_id(type,partner_id,date_invoice,payment_term, partner_bank_id,company_id)" context="{'default_customer': 0, 'search_default_supplier': 1, 'default_supplier': 1}" options='{"quick_create": false}' domain="[('supplier', '=', True)]"/>
|
||||
<field domain="[('partner_id','=',partner_id)]" name="address_invoice_id" context="{'default_partner_id': partner_id}" options='{"quick_create": false}'/>
|
||||
<field name="fiscal_position" groups="base.group_extended" widget="selection"/>
|
||||
<newline/>
|
||||
|
@ -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>
|
||||
|
@ -263,7 +263,7 @@
|
|||
<field name="currency_id" width="50"/>
|
||||
<button name="%(action_account_change_currency)d" type="action" icon="terp-stock_effects-object-colorize" string="Change" attrs="{'invisible':[('state','!=','draft')]}" groups="account.group_account_user"/>
|
||||
<newline/>
|
||||
<field string="Customer" name="partner_id" on_change="onchange_partner_id(type,partner_id,date_invoice,payment_term, partner_bank_id,company_id)" groups="base.group_user" context="{'search_default_customer': 1}" options='{"quick_create": false}'/>
|
||||
<field string="Customer" name="partner_id" on_change="onchange_partner_id(type,partner_id,date_invoice,payment_term, partner_bank_id,company_id)" groups="base.group_user" context="{'search_default_customer': 1}" options='{"quick_create": false}' domain="[('customer', '=', True)]"/>
|
||||
<field domain="[('partner_id','=',partner_id)]" name="address_invoice_id" context="{'default_partner_id': partner_id}" options='{"quick_create": false}'/>
|
||||
<field name="fiscal_position" groups="base.group_extended" widget="selection" options='{"quick_create": false}'/>
|
||||
<newline/>
|
||||
|
@ -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','<>','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"/>
|
||||
|
|
|
@ -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-12-08 16:20+0000\n"
|
||||
"PO-Revision-Date: 2012-01-05 15:14+0000\n"
|
||||
"Last-Translator: kifcaliph <kifcaliph@hotmail.com>\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:43+0000\n"
|
||||
"X-Generator: Launchpad (build 14560)\n"
|
||||
"X-Launchpad-Export-Date: 2012-01-06 04:49+0000\n"
|
||||
"X-Generator: Launchpad (build 14637)\n"
|
||||
|
||||
#. module: account
|
||||
#: view:account.invoice.report:0
|
||||
|
@ -1103,7 +1103,7 @@ msgstr ""
|
|||
#: field:account.fiscal.position.tax,tax_dest_id:0
|
||||
#: field:account.fiscal.position.tax.template,tax_dest_id:0
|
||||
msgid "Replacement Tax"
|
||||
msgstr ""
|
||||
msgstr "ضريبة الإستبدال"
|
||||
|
||||
#. module: account
|
||||
#: selection:account.move.line,centralisation:0
|
||||
|
@ -1406,7 +1406,7 @@ msgstr "عدد خانات الأرقام"
|
|||
#. module: account
|
||||
#: field:account.journal,entry_posted:0
|
||||
msgid "Skip 'Draft' State for Manual Entries"
|
||||
msgstr ""
|
||||
msgstr "تخطي حالة \"المسودة\" للقيود اليدوية"
|
||||
|
||||
#. module: account
|
||||
#: view:account.invoice.report:0
|
||||
|
@ -1438,7 +1438,7 @@ msgstr ""
|
|||
#. module: account
|
||||
#: model:ir.model,name:account.model_temp_range
|
||||
msgid "A Temporary table used for Dashboard view"
|
||||
msgstr ""
|
||||
msgstr "جدول م}قت يستخدم لعرض اللوحة الرئيسية"
|
||||
|
||||
#. module: account
|
||||
#: model:ir.actions.act_window,name:account.action_invoice_tree4
|
||||
|
@ -1734,7 +1734,7 @@ msgstr "مبلغ الدائنون"
|
|||
#. module: account
|
||||
#: constraint:account.move.line:0
|
||||
msgid "You can not create move line on closed account."
|
||||
msgstr ""
|
||||
msgstr "لا يمكنك إنشاء حركة سطر علي حساب مغلق."
|
||||
|
||||
#. module: account
|
||||
#: code:addons/account/account.py:406
|
||||
|
@ -1827,7 +1827,7 @@ msgstr "صالح"
|
|||
#: model:ir.actions.act_window,name:account.action_account_print_journal
|
||||
#: model:ir.model,name:account.model_account_print_journal
|
||||
msgid "Account Print Journal"
|
||||
msgstr ""
|
||||
msgstr "يومية طباعة حساب"
|
||||
|
||||
#. module: account
|
||||
#: model:ir.model,name:account.model_product_category
|
||||
|
@ -2645,13 +2645,13 @@ msgstr "المبيعات بعرض الحسابات"
|
|||
#. module: account
|
||||
#: view:account.use.model:0
|
||||
msgid "This wizard will create recurring accounting entries"
|
||||
msgstr ""
|
||||
msgstr "سيقوم هذا المعالج بإنشاء قيود محاسبية تكرارية"
|
||||
|
||||
#. module: account
|
||||
#: code:addons/account/account.py:1320
|
||||
#, python-format
|
||||
msgid "No sequence defined on the journal !"
|
||||
msgstr ""
|
||||
msgstr "لا يوجد مسلسل معرف لهذه اليومية !"
|
||||
|
||||
#. module: account
|
||||
#: code:addons/account/account.py:2264
|
||||
|
@ -3177,7 +3177,7 @@ msgstr ""
|
|||
#. module: account
|
||||
#: report:account.overdue:0
|
||||
msgid "VAT:"
|
||||
msgstr ""
|
||||
msgstr "ضريبة القيمة المضافة:"
|
||||
|
||||
#. module: account
|
||||
#: constraint:account.invoice:0
|
||||
|
@ -3280,6 +3280,7 @@ msgid ""
|
|||
"Selected Invoice(s) cannot be cancelled as they are already in 'Cancelled' "
|
||||
"or 'Done' state!"
|
||||
msgstr ""
|
||||
"الفواتير المختارة لا يمكن إلغاءها حيث أنها ملغاة أو تمت من حيث الحالة!"
|
||||
|
||||
#. module: account
|
||||
#: view:account.invoice.line:0
|
||||
|
@ -3331,7 +3332,7 @@ msgstr "تفاصيل"
|
|||
#. module: account
|
||||
#: report:account.invoice:0
|
||||
msgid "VAT :"
|
||||
msgstr ""
|
||||
msgstr "ضريبة القيمة المضافة:"
|
||||
|
||||
#. module: account
|
||||
#: report:account.central.journal:0
|
||||
|
@ -3359,7 +3360,7 @@ msgstr "النظير المركزي"
|
|||
#. module: account
|
||||
#: model:ir.model,name:account.model_account_partner_reconcile_process
|
||||
msgid "Reconcilation Process partner by partner"
|
||||
msgstr ""
|
||||
msgstr "عملية التسوية شريك شريك"
|
||||
|
||||
#. module: account
|
||||
#: selection:account.automatic.reconcile,power:0
|
||||
|
@ -3369,7 +3370,7 @@ msgstr "2"
|
|||
#. module: account
|
||||
#: view:account.chart:0
|
||||
msgid "(If you do not select Fiscal year it will take all open fiscal years)"
|
||||
msgstr ""
|
||||
msgstr "(إذا لم تختار سنة مالية سيتم التعامل مع كل السنوات المالية المفتوحة)"
|
||||
|
||||
#. module: account
|
||||
#: selection:account.aged.trial.balance,filter:0
|
||||
|
@ -3454,7 +3455,7 @@ msgstr "بعض القيود تمت تسويتها من قبل !"
|
|||
#. module: account
|
||||
#: view:account.tax:0
|
||||
msgid "Account Tax"
|
||||
msgstr ""
|
||||
msgstr "حساب الضرائب"
|
||||
|
||||
#. module: account
|
||||
#: model:ir.ui.menu,name:account.menu_finance_reporting_budgets
|
||||
|
@ -3533,7 +3534,7 @@ msgstr "دائن"
|
|||
#. module: account
|
||||
#: model:process.node,name:account.process_node_supplierpaymentorder0
|
||||
msgid "Payment Order"
|
||||
msgstr ""
|
||||
msgstr "أمر الدفع"
|
||||
|
||||
#. module: account
|
||||
#: help:account.account.template,reconcile:0
|
||||
|
@ -3806,7 +3807,7 @@ msgstr ""
|
|||
#. module: account
|
||||
#: view:account.tax.template:0
|
||||
msgid "Search Tax Templates"
|
||||
msgstr ""
|
||||
msgstr "بحث قوالب الضريبة"
|
||||
|
||||
#. module: account
|
||||
#: model:ir.ui.menu,name:account.periodical_processing_journal_entries_validation
|
||||
|
@ -5340,7 +5341,7 @@ msgstr ""
|
|||
#. module: account
|
||||
#: view:account.journal:0
|
||||
msgid "Invoicing Data"
|
||||
msgstr ""
|
||||
msgstr "بيانات الفواتير"
|
||||
|
||||
#. module: account
|
||||
#: model:ir.actions.act_window,name:account.action_account_automatic_reconcile
|
||||
|
@ -6088,7 +6089,7 @@ msgstr ""
|
|||
#. module: account
|
||||
#: model:ir.ui.menu,name:account.menu_finance_bank_and_cash
|
||||
msgid "Bank and Cash"
|
||||
msgstr ""
|
||||
msgstr "النقدية و البنك"
|
||||
|
||||
#. module: account
|
||||
#: model:ir.actions.act_window,help:account.action_analytic_entries_report
|
||||
|
@ -6864,7 +6865,7 @@ msgstr ""
|
|||
#. module: account
|
||||
#: view:account.journal.select:0
|
||||
msgid "Are you sure you want to open Journal Entries?"
|
||||
msgstr ""
|
||||
msgstr "هل أنت تريد فتح قيود اليومية؟"
|
||||
|
||||
#. module: account
|
||||
#: view:account.state.open:0
|
||||
|
@ -8600,7 +8601,7 @@ msgstr "دفع مسجل"
|
|||
#. module: account
|
||||
#: view:account.fiscalyear.close.state:0
|
||||
msgid "Close states of Fiscal year and periods"
|
||||
msgstr ""
|
||||
msgstr "إغلاق حالات السنة المالية و الفترات"
|
||||
|
||||
#. module: account
|
||||
#: view:account.analytic.line:0
|
||||
|
@ -9584,7 +9585,7 @@ msgstr ""
|
|||
#: view:account.move.line:0
|
||||
#: view:account.period:0
|
||||
msgid "States"
|
||||
msgstr ""
|
||||
msgstr "حالات"
|
||||
|
||||
#. module: account
|
||||
#: model:ir.actions.server,name:account.ir_actions_server_edi_invoice
|
||||
|
@ -9905,7 +9906,7 @@ msgstr ""
|
|||
#. module: account
|
||||
#: view:account.analytic.line:0
|
||||
msgid "Fin.Account"
|
||||
msgstr ""
|
||||
msgstr "Fin.Account"
|
||||
|
||||
#. module: account
|
||||
#: model:ir.actions.act_window,name:account.action_aged_receivable_graph
|
||||
|
@ -10186,7 +10187,7 @@ msgstr "بحث قوالب الحساب"
|
|||
#. module: account
|
||||
#: view:account.invoice.tax:0
|
||||
msgid "Manual Invoice Taxes"
|
||||
msgstr ""
|
||||
msgstr "ضرائب الفاتورة يدوياً"
|
||||
|
||||
#. module: account
|
||||
#: field:account.account,parent_right:0
|
||||
|
@ -10263,7 +10264,7 @@ msgstr "حساب دفتر اليومية المركزي"
|
|||
#. module: account
|
||||
#: report:account.overdue:0
|
||||
msgid "Maturity"
|
||||
msgstr "الإستحقاق"
|
||||
msgstr "إكتمال"
|
||||
|
||||
#. module: account
|
||||
#: selection:account.aged.trial.balance,direction_selection:0
|
||||
|
@ -10712,3 +10713,14 @@ msgstr ""
|
|||
|
||||
#~ msgid " value amount: n.a"
|
||||
#~ msgstr " قيمة المبلغ: غير متاحة"
|
||||
|
||||
#~ msgid "Bank and Cash Accounts"
|
||||
#~ msgstr "حسابات النقدية و البنك"
|
||||
|
||||
#~ msgid "For Value percent enter % ratio between 0-1."
|
||||
#~ msgstr "لتحديد النسبةاختر قيمة بين 0 إلي 1."
|
||||
|
||||
#, python-format
|
||||
#~ msgid ""
|
||||
#~ "The expected balance (%.2f) is different than the computed one. (%.2f)"
|
||||
#~ msgstr "الرصيد المتوقع(%.2f) مختلف عن الرصيد المحسوب (%.2f)."
|
||||
|
|
|
@ -7,14 +7,14 @@ msgstr ""
|
|||
"Project-Id-Version: OpenERP Server 5.0.4\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2011-12-22 18:44+0000\n"
|
||||
"PO-Revision-Date: 2009-02-03 06:22+0000\n"
|
||||
"Last-Translator: <>\n"
|
||||
"PO-Revision-Date: 2012-01-05 20:55+0000\n"
|
||||
"Last-Translator: kifcaliph <kifcaliph@hotmail.com>\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-23 06:50+0000\n"
|
||||
"X-Generator: Launchpad (build 14560)\n"
|
||||
"X-Launchpad-Export-Date: 2012-01-06 04:49+0000\n"
|
||||
"X-Generator: Launchpad (build 14637)\n"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: view:account.analytic.account:0
|
||||
|
@ -211,7 +211,7 @@ msgstr ""
|
|||
#: field:account.analytic.account,user_ids:0
|
||||
#: field:account_analytic_analysis.summary.user,user:0
|
||||
msgid "User"
|
||||
msgstr ""
|
||||
msgstr "المستخدم"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: help:account.analytic.account,real_margin_rate:0
|
||||
|
@ -260,7 +260,7 @@ msgstr ""
|
|||
msgid ""
|
||||
"Error! The currency has to be the same as the currency of the selected "
|
||||
"company"
|
||||
msgstr ""
|
||||
msgstr "خطأ! العملة لابد و أن تكون مثل العملة للشركة المختارة"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: help:account.analytic.account,ca_invoiced:0
|
||||
|
@ -275,7 +275,7 @@ msgstr ""
|
|||
#. module: account_analytic_analysis
|
||||
#: constraint:account.analytic.account:0
|
||||
msgid "Error! You can not create recursive analytic accounts."
|
||||
msgstr ""
|
||||
msgstr "خطأ! لا يمكنك إنشاء حسابات تحليلية متكررة."
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: field:account.analytic.account,remaining_ca:0
|
||||
|
@ -315,7 +315,7 @@ msgstr ""
|
|||
#: field:account.analytic.account,month_ids:0
|
||||
#: field:account_analytic_analysis.summary.month,month:0
|
||||
msgid "Month"
|
||||
msgstr ""
|
||||
msgstr "شهر"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: view:account.analytic.account:0
|
||||
|
@ -323,7 +323,7 @@ msgstr ""
|
|||
#: field:account_analytic_analysis.summary.user,account_id:0
|
||||
#: model:ir.model,name:account_analytic_analysis.model_account_analytic_account
|
||||
msgid "Analytic Account"
|
||||
msgstr ""
|
||||
msgstr "حساب تحليلي"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: model:ir.actions.act_window,name:account_analytic_analysis.action_account_analytic_overdue_all
|
||||
|
@ -362,7 +362,7 @@ msgstr ""
|
|||
#: field:account_analytic_analysis.summary.month,unit_amount:0
|
||||
#: field:account_analytic_analysis.summary.user,unit_amount:0
|
||||
msgid "Total Time"
|
||||
msgstr ""
|
||||
msgstr "إجمالي الوقت"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: help:account.analytic.account,total_cost:0
|
||||
|
@ -370,3 +370,9 @@ msgid ""
|
|||
"Total of costs for this account. It includes real costs (from invoices) and "
|
||||
"indirect costs, like time spent on timesheets."
|
||||
msgstr ""
|
||||
|
||||
#~ msgid "Remaining Hours"
|
||||
#~ msgstr "الساعات المتبقية"
|
||||
|
||||
#~ msgid "Billing"
|
||||
#~ msgstr "عمليات الفواتير"
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -8,19 +8,19 @@ 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: 2011-01-19 10:49+0000\n"
|
||||
"Last-Translator: bamuhrez <bamuhrez@gmail.com>\n"
|
||||
"PO-Revision-Date: 2012-01-05 17:03+0000\n"
|
||||
"Last-Translator: kifcaliph <kifcaliph@hotmail.com>\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: 2011-12-23 07:18+0000\n"
|
||||
"X-Generator: Launchpad (build 14560)\n"
|
||||
"X-Launchpad-Export-Date: 2012-01-06 04:50+0000\n"
|
||||
"X-Generator: Launchpad (build 14637)\n"
|
||||
|
||||
#. module: account_cancel
|
||||
#: view:account.invoice:0
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
msgstr "إلغاء"
|
||||
|
||||
#~ msgid "Account Cancel"
|
||||
#~ msgstr "إلغاء الحساب"
|
||||
|
|
|
@ -51,8 +51,10 @@ This module provides :
|
|||
],
|
||||
'demo_xml': ['account_payment_demo.xml'],
|
||||
'test': [
|
||||
'test/account_payment.yml',
|
||||
'test/account_payment_report.yml'
|
||||
'test/account_payment_demo.yml',
|
||||
'test/cancel_payment_order.yml',
|
||||
'test/payment_order_process.yml',
|
||||
'test/account_payment_report.yml',
|
||||
],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
|
|
|
@ -68,6 +68,7 @@ class payment_order(osv.osv):
|
|||
_rec_name = 'reference'
|
||||
_order = 'id desc'
|
||||
|
||||
#dead code
|
||||
def get_wizard(self, type):
|
||||
logger = netsvc.Logger()
|
||||
logger.notifyChannel("warning", netsvc.LOG_WARNING,
|
||||
|
@ -235,6 +236,7 @@ class payment_line(osv.osv):
|
|||
break
|
||||
return result
|
||||
|
||||
#dead code
|
||||
def select_by_name(self, cr, uid, ids, name, args, context=None):
|
||||
if not ids: return {}
|
||||
partner_obj = self.pool.get('res.partner')
|
||||
|
|
|
@ -1,118 +0,0 @@
|
|||
-
|
||||
In order to test account_payment in OpenERP I created a new Bank Record
|
||||
-
|
||||
Creating a res.partner.bank record
|
||||
-
|
||||
!record {model: res.partner.bank, id: res_partner_bank_0}:
|
||||
acc_number: '126-2013269-08'
|
||||
partner_id: base.res_partner_9
|
||||
sequence: 0.0
|
||||
state: bank
|
||||
bank: base.res_bank_1
|
||||
-
|
||||
I created a new Payment Mode
|
||||
-
|
||||
Creating a payment.mode record
|
||||
-
|
||||
!record {model: payment.mode, id: payment_mode_m0}:
|
||||
bank_id: res_partner_bank_0
|
||||
journal: account.bank_journal
|
||||
name: TestMode
|
||||
|
||||
-
|
||||
I created a Supplier Invoice
|
||||
-
|
||||
Creating a account.invoice record
|
||||
-
|
||||
!record {model: account.invoice, id: account_invoice_payment}:
|
||||
account_id: account.a_pay
|
||||
address_contact_id: base.res_partner_address_tang
|
||||
address_invoice_id: base.res_partner_address_tang
|
||||
check_total: 300.0
|
||||
company_id: base.main_company
|
||||
currency_id: base.EUR
|
||||
invoice_line:
|
||||
- account_id: account.a_expense
|
||||
name: '[PC1] Basic PC'
|
||||
price_unit: 300.0
|
||||
product_id: product.product_product_pc1
|
||||
quantity: 1.0
|
||||
uos_id: product.product_uom_unit
|
||||
journal_id: account.expenses_journal
|
||||
partner_id: base.res_partner_asus
|
||||
reference_type: none
|
||||
type: in_invoice
|
||||
|
||||
-
|
||||
I make the supplier invoice in Open state
|
||||
-
|
||||
Performing a workflow action invoice_open on module account.invoice
|
||||
-
|
||||
!workflow {model: account.invoice, action: invoice_open, ref: account_invoice_payment}
|
||||
|
||||
-
|
||||
I create a new payment order
|
||||
-
|
||||
Creating a payment.order record
|
||||
-
|
||||
!record {model: payment.order, id: payment_order_0}:
|
||||
date_prefered: due
|
||||
mode: payment_mode_m0
|
||||
reference: !eval "'%s/006' %(datetime.now().year)"
|
||||
user_id: base.user_root
|
||||
|
||||
|
||||
-
|
||||
Creating a payment.order.create record
|
||||
-
|
||||
!record {model: payment.order.create, id: payment_order_create_0}:
|
||||
duedate: !eval time.strftime('%Y-%m-%d')
|
||||
|
||||
-
|
||||
I searched the entries using "Payment Create Order" wizard
|
||||
-
|
||||
Performing an osv_memory action search_entries on module payment.order.create
|
||||
-
|
||||
!python {model: payment.order.create}: |
|
||||
self.search_entries(cr, uid, [ref("payment_order_create_0")], {"lang": "en_US",
|
||||
"active_model": "payment.order", "active_ids": [ref("payment_order_0")],
|
||||
"tz": False, "active_id": ref("payment_order_0"), })
|
||||
-
|
||||
I check that Initially Payment order is in "draft" state
|
||||
-
|
||||
!assert {model: payment.order, id: payment_order_0}:
|
||||
- state == 'draft'
|
||||
-
|
||||
I pressed the confirm payment button to confirm the payment
|
||||
-
|
||||
Performing a workflow action open on module payment.order
|
||||
-
|
||||
!workflow {model: payment.order, action: open, ref: payment_order_0}
|
||||
-
|
||||
I check that Payment order is in "Confirmed" state
|
||||
-
|
||||
!assert {model: payment.order, id: payment_order_0}:
|
||||
- state == 'open'
|
||||
-
|
||||
I paid the payment using "Make Payments" Button
|
||||
-
|
||||
Creating a account.payment.make.payment record
|
||||
-
|
||||
!record {model: account.payment.make.payment, id: account_payment_make_payment_0}:
|
||||
{}
|
||||
|
||||
-
|
||||
Performing an osv_memory action launch_wizard on module account.payment.make.payment
|
||||
-
|
||||
!python {model: account.payment.make.payment}: |
|
||||
self.launch_wizard(cr, uid, [ref("account_payment_make_payment_0")], {"lang":
|
||||
"en_US", "active_model": "payment.order", "active_ids": [ref("payment_order_0")], "tz":
|
||||
False, "active_id": ref("payment_order_0"), })
|
||||
|
||||
-
|
||||
I check that Payment order is in "Done" state
|
||||
-
|
||||
!assert {model: payment.order, id: payment_order_0}:
|
||||
- state == 'done'
|
||||
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
-
|
||||
!record {model: payment.mode, id: payment_mode_1}:
|
||||
company_id: base.main_company
|
||||
-
|
||||
!record {model: payment.order, id: payment_order_2}:
|
||||
mode: payment_mode_1
|
||||
-
|
||||
!record {model: payment.line, id: payment_line_0}:
|
||||
name: Test
|
||||
communication: Test
|
||||
partner_id: base.res_partner_agrolait
|
||||
order_id: payment_order_2
|
||||
amount_currency: 100.00
|
|
@ -1,8 +1,8 @@
|
|||
-
|
||||
In order to test the PDF reports defined on Account Payment, Print a Payment Order
|
||||
-
|
||||
In order to test the PDF reports defined on Account Payment, I print a Payment Order report.
|
||||
-
|
||||
!python {model: payment.order}: |
|
||||
import netsvc, tools, os
|
||||
(data, format) = netsvc.LocalService('report.payment.order').create(cr, uid, [ref('account_payment.payment_order_1')], {}, {})
|
||||
(data, format) = netsvc.LocalService('report.payment.order').create(cr, uid, [ref('payment_order_1')], {}, {})
|
||||
if tools.config['test_report_directory']:
|
||||
file(os.path.join(tools.config['test_report_directory'], 'account_payment-payment_order_report.'+format), 'wb+').write(data)
|
||||
file(os.path.join(tools.config['test_report_directory'], 'account_payment-payment_order_report.'+format), 'wb+').write(data)
|
||||
|
|
|
@ -0,0 +1,30 @@
|
|||
-
|
||||
In order to test the process of cancelling the payment order,
|
||||
-
|
||||
I confirm payment order.
|
||||
-
|
||||
!workflow {model: payment.order, action: open, ref: payment_order_1}
|
||||
-
|
||||
I check that payment order is now "Confirmed".
|
||||
-
|
||||
!assert {model: payment.order, id: payment_order_1, severity: error, string: Payment Order should be 'Confirmed'.}:
|
||||
- state == 'open'
|
||||
-
|
||||
Now, I cancel the payment order.
|
||||
-
|
||||
!workflow {model: payment.order, action: cancel, ref: payment_order_1}
|
||||
-
|
||||
I check that payment order is now "Cancelled".
|
||||
-
|
||||
!assert {model: payment.order, id: payment_order_1, severity: error, string: Payment Order should be 'Cancelled'.}:
|
||||
- state == 'cancel'
|
||||
-
|
||||
I again set the payment order to draft.
|
||||
-
|
||||
!python {model: payment.order}: |
|
||||
self.set_to_draft(cr, uid, [ref("payment_order_1")])
|
||||
-
|
||||
I check that payment order is now "Draft".
|
||||
-
|
||||
!assert {model: payment.order, id: payment_order_1, severity: error, string: Payment Order should be in 'Draft' state.}:
|
||||
- state == 'draft'
|
|
@ -0,0 +1,107 @@
|
|||
-
|
||||
In order to test the process of payment order, I start with the supplier invoice.
|
||||
-
|
||||
!python {model: account.invoice}: |
|
||||
self.write(cr, uid, [ref('account.demo_invoice_0')], {'check_total': 14})
|
||||
-
|
||||
In order to test account move line of journal, I check that there is no move attached to the invoice.
|
||||
-
|
||||
!python {model: account.invoice}: |
|
||||
invoice = self.browse(cr, uid, ref("account.demo_invoice_0"))
|
||||
assert (not invoice.move_id), "Moves are wrongly created for invoice."
|
||||
-
|
||||
I open the invoice.
|
||||
-
|
||||
!workflow {model: account.invoice, action: invoice_open, ref: account.demo_invoice_0}
|
||||
-
|
||||
I check that the invoice state is now "Open".
|
||||
-
|
||||
!assert {model: account.invoice, id: account.demo_invoice_0, severity: error, string: Invoice should be in 'Open' state}:
|
||||
- state == 'open'
|
||||
-
|
||||
I confirm the payment order.
|
||||
-
|
||||
!workflow {model: payment.order, action: open, ref: payment_order_1}
|
||||
-
|
||||
I check that payment order is now "Confirmed".
|
||||
-
|
||||
!assert {model: payment.order, id: payment_order_1, severity: error, string: Payment Order should be 'Confirmed'.}:
|
||||
- state == 'open'
|
||||
-
|
||||
!record {model: payment.order.create, id: payment_order_create_0}:
|
||||
duedate: !eval time.strftime('%Y-%m-%d')
|
||||
-
|
||||
I search for the invoice entries to make the payment.
|
||||
-
|
||||
!python {model: payment.order.create}: |
|
||||
self.search_entries(cr, uid, [ref("payment_order_create_0")], {
|
||||
"active_model": "payment.order", "active_ids": [ref("payment_order_1")],
|
||||
"active_id": ref("payment_order_1"), })
|
||||
-
|
||||
I create payment lines entries.
|
||||
-
|
||||
!python {model: payment.order.create}: |
|
||||
invoice = self.pool.get('account.invoice').browse(cr, uid, ref("account.demo_invoice_0"))
|
||||
move_line = invoice.move_id.line_id[0]
|
||||
self.write(cr, uid, [ref("payment_order_create_0")], {'entries': [(6,0,[move_line.id])]})
|
||||
self.create_payment(cr, uid, [ref("payment_order_create_0")], {
|
||||
"active_model": "payment.order", "active_ids": [ref("payment_order_1")],
|
||||
"active_id": ref("payment_order_1")})
|
||||
-
|
||||
I check that payment line is created with proper data.
|
||||
-
|
||||
!python {model: payment.order}: |
|
||||
invoice = self.pool.get('account.invoice').browse(cr, uid, ref("account.demo_invoice_0"))
|
||||
payment = self.browse(cr, uid, ref("payment_order_1"))
|
||||
payment_line = payment.line_ids[0]
|
||||
|
||||
assert payment_line.move_line_id, "move line is not created in payment line."
|
||||
assert invoice.move_id.name == payment_line.ml_inv_ref.number, "invoice reference number is not same created."
|
||||
assert invoice.partner_id == payment_line.partner_id, "Partner is not correct."
|
||||
assert invoice.date_due == payment_line.ml_maturity_date, "Due date is not correct."
|
||||
assert invoice.amount_total == payment_line.amount, "Payment amount is not correct."
|
||||
-
|
||||
After making all payments, I finish the payment order.
|
||||
-
|
||||
!python {model: payment.order}: |
|
||||
self.set_done(cr, uid, [ref("payment_order_1")])
|
||||
-
|
||||
I check that payment order is now "Done".
|
||||
-
|
||||
!assert {model: payment.order, id: payment_order_1, severity: error, string: Payment Order should be in 'Done' state}:
|
||||
- state == 'done'
|
||||
-
|
||||
I check that payment order is done with proper data.
|
||||
-
|
||||
!python {model: payment.order}: |
|
||||
payment = self.browse(cr, uid, ref("payment_order_1"))
|
||||
assert payment.date_done, "Date is not created."
|
||||
-
|
||||
I create a bank statement.
|
||||
-
|
||||
!record {model: account.bank.statement, id: account_bank_statement_1}:
|
||||
balance_end_real: 0.0
|
||||
balance_start: 0.0
|
||||
date: !eval time.strftime('%Y-%m-%d')
|
||||
journal_id: account.bank_journal
|
||||
name: /
|
||||
period_id: account.period_10
|
||||
-
|
||||
I import payment order lines for the bank statement.
|
||||
-
|
||||
!python {model: account.payment.populate.statement}: |
|
||||
payment = self.pool.get('payment.order').browse(cr, uid, ref("payment_order_1"))
|
||||
payment_line = payment.line_ids[0]
|
||||
import_payment_id = self.create(cr, uid, {'lines': [(6,0,[payment_line.id])]})
|
||||
self.populate_statement(cr, uid, [import_payment_id], {"statement_id": ref("account_bank_statement_1"),
|
||||
"active_model": "account.bank.statement", "journal_type": "cash",
|
||||
"active_id": ref("account_bank_statement_1")})
|
||||
-
|
||||
I am checking whether the calculations of Owner Account and Destination Account are done correctly or not in payment line.
|
||||
-
|
||||
!python {model: payment.line}: |
|
||||
payment = self.pool.get('payment.order').browse(cr, uid, ref("payment_order_1"))
|
||||
line_id = self.browse(cr, uid,payment.line_ids[0].id,context)
|
||||
assert line_id.info_owner, "Owner Account not proper."
|
||||
assert line_id.info_partner, "Destination Account not proper."
|
||||
assert line_id.ml_inv_ref, "Invoice reference is not proper."
|
|
@ -27,7 +27,8 @@
|
|||
<field name="arch" type="xml">
|
||||
<form string="Search Payment lines">
|
||||
<group col="4" colspan="6">
|
||||
<field name="entries"/>
|
||||
<separator colspan="4" string="Entries"/>
|
||||
<field name="entries" nolabel="1"/>
|
||||
</group>
|
||||
<separator colspan="4"/>
|
||||
<group col="2" colspan="4">
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
|
||||
from osv import osv
|
||||
|
||||
#TODO:REMOVE this wizard is not used
|
||||
class account_payment_make_payment(osv.osv_memory):
|
||||
_name = "account.payment.make.payment"
|
||||
_description = "Account make payment"
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
<!-- TODO:REMOVE this wizard is not used -->
|
||||
<record id="account_payment_make_payment_view" model="ir.ui.view">
|
||||
<field name="name">account.payment.make.payment.form</field>
|
||||
<field name="model">account.payment.make.payment</field>
|
||||
|
|
|
@ -0,0 +1,213 @@
|
|||
# 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-05 14:58+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-06 04:50+0000\n"
|
||||
"X-Generator: Launchpad (build 14637)\n"
|
||||
|
||||
#. module: account_sequence
|
||||
#: view:account.sequence.installer:0
|
||||
#: model:ir.actions.act_window,name:account_sequence.action_account_seq_installer
|
||||
msgid "Account Sequence Application Configuration"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: constraint:account.move:0
|
||||
msgid ""
|
||||
"You can not create more than one move per period on centralized journal"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: help:account.move,internal_sequence_number:0
|
||||
#: help:account.move.line,internal_sequence_number:0
|
||||
msgid "Internal Sequence Number"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: help:account.sequence.installer,number_next:0
|
||||
msgid "Next number of this sequence"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: field:account.sequence.installer,number_next:0
|
||||
msgid "Next Number"
|
||||
msgstr "العدد التالي"
|
||||
|
||||
#. module: account_sequence
|
||||
#: field:account.sequence.installer,number_increment:0
|
||||
msgid "Increment Number"
|
||||
msgstr "مقدار الزيادة"
|
||||
|
||||
#. module: account_sequence
|
||||
#: help:account.sequence.installer,number_increment:0
|
||||
msgid "The next number of the sequence will be incremented by this number"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: view:account.sequence.installer:0
|
||||
msgid "Configure Your Account Sequence Application"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: view:account.sequence.installer:0
|
||||
msgid "Configure"
|
||||
msgstr "تهيئة"
|
||||
|
||||
#. module: account_sequence
|
||||
#: help:account.sequence.installer,suffix:0
|
||||
msgid "Suffix value of the record for the sequence"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: field:account.sequence.installer,company_id:0
|
||||
msgid "Company"
|
||||
msgstr "شركة"
|
||||
|
||||
#. module: account_sequence
|
||||
#: constraint:account.move.line:0
|
||||
msgid "You can not create move line on closed account."
|
||||
msgstr "لا يمكنك إنشاء حركة سطر علي حساب مغلق."
|
||||
|
||||
#. module: account_sequence
|
||||
#: help:account.journal,internal_sequence_id:0
|
||||
msgid ""
|
||||
"This sequence will be used to maintain the internal number for the journal "
|
||||
"entries related to this journal."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: field:account.sequence.installer,padding:0
|
||||
msgid "Number padding"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: model:ir.model,name:account_sequence.model_account_move_line
|
||||
msgid "Journal Items"
|
||||
msgstr "عناصر اليومية"
|
||||
|
||||
#. module: account_sequence
|
||||
#: field:account.move,internal_sequence_number:0
|
||||
#: field:account.move.line,internal_sequence_number:0
|
||||
msgid "Internal Number"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: constraint:account.move.line:0
|
||||
msgid "Company must be same for its related account and period."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: help:account.sequence.installer,padding:0
|
||||
msgid ""
|
||||
"OpenERP will automatically adds some '0' on the left of the 'Next Number' to "
|
||||
"get the required padding size."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: field:account.sequence.installer,name:0
|
||||
msgid "Name"
|
||||
msgstr "الاسم"
|
||||
|
||||
#. module: account_sequence
|
||||
#: constraint:account.move.line:0
|
||||
msgid "The date of your Journal Entry is not in the defined period!"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: constraint:account.journal:0
|
||||
msgid ""
|
||||
"Configuration error! The currency chosen should be shared by the default "
|
||||
"accounts too."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: sql_constraint:account.move.line:0
|
||||
msgid "Wrong credit or debit value in accounting entry !"
|
||||
msgstr "قيمة دائنة أو مدينة خاطئة في القيد المحاسبي !"
|
||||
|
||||
#. module: account_sequence
|
||||
#: field:account.journal,internal_sequence_id:0
|
||||
msgid "Internal Sequence"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: help:account.sequence.installer,prefix:0
|
||||
msgid "Prefix value of the record for the sequence"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: model:ir.model,name:account_sequence.model_account_move
|
||||
msgid "Account Entry"
|
||||
msgstr "قيد الحساب"
|
||||
|
||||
#. module: account_sequence
|
||||
#: field:account.sequence.installer,suffix:0
|
||||
msgid "Suffix"
|
||||
msgstr "اللاحقة"
|
||||
|
||||
#. module: account_sequence
|
||||
#: field:account.sequence.installer,config_logo:0
|
||||
msgid "Image"
|
||||
msgstr "صورة"
|
||||
|
||||
#. module: account_sequence
|
||||
#: view:account.sequence.installer:0
|
||||
msgid "title"
|
||||
msgstr "الاسم"
|
||||
|
||||
#. module: account_sequence
|
||||
#: sql_constraint:account.journal:0
|
||||
msgid "The name of the journal must be unique per company !"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: constraint:account.move.line:0
|
||||
msgid ""
|
||||
"The selected account of your Journal Entry must receive a value in its "
|
||||
"secondary currency"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: field:account.sequence.installer,prefix:0
|
||||
msgid "Prefix"
|
||||
msgstr "بادئة"
|
||||
|
||||
#. module: account_sequence
|
||||
#: sql_constraint:account.journal:0
|
||||
msgid "The code of the journal must be unique per company !"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: model:ir.model,name:account_sequence.model_account_sequence_installer
|
||||
msgid "account.sequence.installer"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: model:ir.model,name:account_sequence.model_account_journal
|
||||
msgid "Journal"
|
||||
msgstr "يومية"
|
||||
|
||||
#. module: account_sequence
|
||||
#: view:account.sequence.installer:0
|
||||
msgid "You can enhance the Account Sequence Application by installing ."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: constraint:account.move.line:0
|
||||
msgid "You can not create move line on view account."
|
||||
msgstr ""
|
||||
|
||||
#~ msgid "Configuration Progress"
|
||||
#~ msgstr "سير الإعدادات"
|
|
@ -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
|
||||
|
|
|
@ -7,14 +7,14 @@ msgstr ""
|
|||
"Project-Id-Version: OpenERP Server 5.0.4\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2011-12-22 18:44+0000\n"
|
||||
"PO-Revision-Date: 2009-02-03 06:24+0000\n"
|
||||
"Last-Translator: <>\n"
|
||||
"PO-Revision-Date: 2012-01-05 20:55+0000\n"
|
||||
"Last-Translator: kifcaliph <kifcaliph@hotmail.com>\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-23 07:07+0000\n"
|
||||
"X-Generator: Launchpad (build 14560)\n"
|
||||
"X-Launchpad-Export-Date: 2012-01-06 04:50+0000\n"
|
||||
"X-Generator: Launchpad (build 14637)\n"
|
||||
|
||||
#. module: analytic_journal_billing_rate
|
||||
#: sql_constraint:account.invoice:0
|
||||
|
@ -24,12 +24,12 @@ msgstr ""
|
|||
#. module: analytic_journal_billing_rate
|
||||
#: field:analytic_journal_rate_grid,journal_id:0
|
||||
msgid "Analytic Journal"
|
||||
msgstr ""
|
||||
msgstr "يومية تحليلية"
|
||||
|
||||
#. module: analytic_journal_billing_rate
|
||||
#: model:ir.model,name:analytic_journal_billing_rate.model_account_invoice
|
||||
msgid "Invoice"
|
||||
msgstr ""
|
||||
msgstr "فاتورة"
|
||||
|
||||
#. module: analytic_journal_billing_rate
|
||||
#: constraint:account.invoice:0
|
||||
|
@ -45,7 +45,7 @@ msgstr ""
|
|||
#: field:analytic_journal_rate_grid,account_id:0
|
||||
#: model:ir.model,name:analytic_journal_billing_rate.model_account_analytic_account
|
||||
msgid "Analytic Account"
|
||||
msgstr ""
|
||||
msgstr "حساب تحليلي"
|
||||
|
||||
#. module: analytic_journal_billing_rate
|
||||
#: model:ir.model,name:analytic_journal_billing_rate.model_analytic_journal_rate_grid
|
||||
|
@ -62,7 +62,7 @@ msgstr ""
|
|||
msgid ""
|
||||
"Error! The currency has to be the same as the currency of the selected "
|
||||
"company"
|
||||
msgstr ""
|
||||
msgstr "خطأ! العملة لابد و أن تكون مثل العملة للشركة المختارة"
|
||||
|
||||
#. module: analytic_journal_billing_rate
|
||||
#: constraint:hr.analytic.timesheet:0
|
||||
|
@ -77,7 +77,7 @@ msgstr ""
|
|||
#. module: analytic_journal_billing_rate
|
||||
#: constraint:account.analytic.account:0
|
||||
msgid "Error! You can not create recursive analytic accounts."
|
||||
msgstr ""
|
||||
msgstr "خطأ! لا يمكنك إنشاء حسابات تحليلية متكررة."
|
||||
|
||||
#. module: analytic_journal_billing_rate
|
||||
#: model:ir.model,name:analytic_journal_billing_rate.model_hr_analytic_timesheet
|
||||
|
|
|
@ -0,0 +1,213 @@
|
|||
# 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-05 20:56+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-06 04:50+0000\n"
|
||||
"X-Generator: Launchpad (build 14637)\n"
|
||||
|
||||
#. module: anonymization
|
||||
#: model:ir.model,name:anonymization.model_ir_model_fields_anonymize_wizard
|
||||
msgid "ir.model.fields.anonymize.wizard"
|
||||
msgstr ""
|
||||
|
||||
#. module: anonymization
|
||||
#: field:ir.model.fields.anonymization,field_name:0
|
||||
msgid "Field Name"
|
||||
msgstr "اسم الحقل"
|
||||
|
||||
#. module: anonymization
|
||||
#: field:ir.model.fields.anonymization,field_id:0
|
||||
msgid "Field"
|
||||
msgstr "حقل"
|
||||
|
||||
#. module: anonymization
|
||||
#: field:ir.model.fields.anonymization.history,state:0
|
||||
#: field:ir.model.fields.anonymize.wizard,state:0
|
||||
msgid "State"
|
||||
msgstr "الحالة"
|
||||
|
||||
#. module: anonymization
|
||||
#: field:ir.model.fields.anonymize.wizard,file_import:0
|
||||
msgid "Import"
|
||||
msgstr "استيراد"
|
||||
|
||||
#. module: anonymization
|
||||
#: model:ir.model,name:anonymization.model_ir_model_fields_anonymization
|
||||
msgid "ir.model.fields.anonymization"
|
||||
msgstr ""
|
||||
|
||||
#. module: anonymization
|
||||
#: field:ir.model.fields.anonymization.history,direction:0
|
||||
msgid "Direction"
|
||||
msgstr "الاتجاه"
|
||||
|
||||
#. module: anonymization
|
||||
#: model:ir.actions.act_window,name:anonymization.action_ir_model_fields_anonymization_tree
|
||||
#: view:ir.model.fields.anonymization:0
|
||||
#: model:ir.ui.menu,name:anonymization.menu_administration_anonymization_fields
|
||||
msgid "Anonymized Fields"
|
||||
msgstr ""
|
||||
|
||||
#. module: anonymization
|
||||
#: model:ir.ui.menu,name:anonymization.menu_administration_anonymization
|
||||
msgid "Database anonymization"
|
||||
msgstr ""
|
||||
|
||||
#. module: anonymization
|
||||
#: selection:ir.model.fields.anonymization.history,direction:0
|
||||
msgid "clear -> anonymized"
|
||||
msgstr ""
|
||||
|
||||
#. module: anonymization
|
||||
#: selection:ir.model.fields.anonymization,state:0
|
||||
#: selection:ir.model.fields.anonymize.wizard,state:0
|
||||
msgid "Anonymized"
|
||||
msgstr ""
|
||||
|
||||
#. module: anonymization
|
||||
#: field:ir.model.fields.anonymization,state:0
|
||||
msgid "unknown"
|
||||
msgstr "مجهول"
|
||||
|
||||
#. module: anonymization
|
||||
#: field:ir.model.fields.anonymization,model_id:0
|
||||
msgid "Object"
|
||||
msgstr "كائن"
|
||||
|
||||
#. module: anonymization
|
||||
#: field:ir.model.fields.anonymization.history,filepath:0
|
||||
msgid "File path"
|
||||
msgstr "مسار الملف"
|
||||
|
||||
#. module: anonymization
|
||||
#: field:ir.model.fields.anonymization.history,date:0
|
||||
msgid "Date"
|
||||
msgstr "التاريخ"
|
||||
|
||||
#. module: anonymization
|
||||
#: field:ir.model.fields.anonymize.wizard,file_export:0
|
||||
msgid "Export"
|
||||
msgstr "تصدير"
|
||||
|
||||
#. module: anonymization
|
||||
#: view:ir.model.fields.anonymize.wizard:0
|
||||
msgid "Reverse the Database Anonymization"
|
||||
msgstr ""
|
||||
|
||||
#. module: anonymization
|
||||
#: view:ir.model.fields.anonymize.wizard:0
|
||||
msgid "Database Anonymization"
|
||||
msgstr ""
|
||||
|
||||
#. module: anonymization
|
||||
#: model:ir.ui.menu,name:anonymization.menu_administration_anonymization_wizard
|
||||
msgid "Anonymize database"
|
||||
msgstr ""
|
||||
|
||||
#. module: anonymization
|
||||
#: view:ir.model.fields.anonymization.history:0
|
||||
#: field:ir.model.fields.anonymization.history,field_ids:0
|
||||
msgid "Fields"
|
||||
msgstr "حقول"
|
||||
|
||||
#. module: anonymization
|
||||
#: selection:ir.model.fields.anonymization,state:0
|
||||
#: selection:ir.model.fields.anonymize.wizard,state:0
|
||||
msgid "Clear"
|
||||
msgstr "مسح"
|
||||
|
||||
#. module: anonymization
|
||||
#: view:ir.model.fields.anonymize.wizard:0
|
||||
#: field:ir.model.fields.anonymize.wizard,summary:0
|
||||
msgid "Summary"
|
||||
msgstr "الملخص"
|
||||
|
||||
#. module: anonymization
|
||||
#: view:ir.model.fields.anonymization:0
|
||||
msgid "Anonymized Field"
|
||||
msgstr ""
|
||||
|
||||
#. module: anonymization
|
||||
#: selection:ir.model.fields.anonymize.wizard,state:0
|
||||
msgid "Unstable"
|
||||
msgstr ""
|
||||
|
||||
#. module: anonymization
|
||||
#: selection:ir.model.fields.anonymization.history,state:0
|
||||
msgid "Exception occured"
|
||||
msgstr ""
|
||||
|
||||
#. module: anonymization
|
||||
#: selection:ir.model.fields.anonymization,state:0
|
||||
#: selection:ir.model.fields.anonymize.wizard,state:0
|
||||
msgid "Not Existing"
|
||||
msgstr ""
|
||||
|
||||
#. module: anonymization
|
||||
#: field:ir.model.fields.anonymization,model_name:0
|
||||
msgid "Object Name"
|
||||
msgstr "اسم الكائن"
|
||||
|
||||
#. module: anonymization
|
||||
#: model:ir.actions.act_window,name:anonymization.action_ir_model_fields_anonymization_history_tree
|
||||
#: view:ir.model.fields.anonymization.history:0
|
||||
#: model:ir.ui.menu,name:anonymization.menu_administration_anonymization_history
|
||||
msgid "Anonymization History"
|
||||
msgstr ""
|
||||
|
||||
#. module: anonymization
|
||||
#: model:ir.model,name:anonymization.model_ir_model_fields_anonymization_history
|
||||
msgid "ir.model.fields.anonymization.history"
|
||||
msgstr ""
|
||||
|
||||
#. module: anonymization
|
||||
#: model:ir.actions.act_window,name:anonymization.action_ir_model_fields_anonymize_wizard
|
||||
#: view:ir.model.fields.anonymize.wizard:0
|
||||
msgid "Anonymize Database"
|
||||
msgstr ""
|
||||
|
||||
#. module: anonymization
|
||||
#: field:ir.model.fields.anonymize.wizard,name:0
|
||||
msgid "File Name"
|
||||
msgstr "اسم الملف"
|
||||
|
||||
#. module: anonymization
|
||||
#: selection:ir.model.fields.anonymization.history,direction:0
|
||||
msgid "anonymized -> clear"
|
||||
msgstr ""
|
||||
|
||||
#. module: anonymization
|
||||
#: selection:ir.model.fields.anonymization.history,state:0
|
||||
msgid "Started"
|
||||
msgstr "بدئت"
|
||||
|
||||
#. module: anonymization
|
||||
#: selection:ir.model.fields.anonymization.history,state:0
|
||||
msgid "Done"
|
||||
msgstr "تم"
|
||||
|
||||
#. module: anonymization
|
||||
#: view:ir.model.fields.anonymization.history:0
|
||||
#: field:ir.model.fields.anonymization.history,msg:0
|
||||
#: field:ir.model.fields.anonymize.wizard,msg:0
|
||||
msgid "Message"
|
||||
msgstr "رسالة"
|
||||
|
||||
#. module: anonymization
|
||||
#: code:addons/anonymization/anonymization.py:55
|
||||
#: sql_constraint:ir.model.fields.anonymization:0
|
||||
#, python-format
|
||||
msgid "You cannot have two fields with the same name on the same object!"
|
||||
msgstr ""
|
|
@ -0,0 +1,496 @@
|
|||
# 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-05 21:23+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-06 04:50+0000\n"
|
||||
"X-Generator: Launchpad (build 14637)\n"
|
||||
|
||||
#. module: base_action_rule
|
||||
#: help:base.action.rule,act_mail_to_user:0
|
||||
msgid ""
|
||||
"Check this if you want the rule to send an email to the responsible person."
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: field:base.action.rule,act_remind_partner:0
|
||||
msgid "Remind Partner"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: field:base.action.rule,trg_partner_categ_id:0
|
||||
msgid "Partner Category"
|
||||
msgstr "فئة الشريك"
|
||||
|
||||
#. module: base_action_rule
|
||||
#: field:base.action.rule,act_mail_to_watchers:0
|
||||
msgid "Mail to Watchers (CC)"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: field:base.action.rule,trg_state_to:0
|
||||
msgid "Button Pressed"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: field:base.action.rule,model_id:0
|
||||
msgid "Object"
|
||||
msgstr "كائن"
|
||||
|
||||
#. module: base_action_rule
|
||||
#: field:base.action.rule,act_mail_to_email:0
|
||||
msgid "Mail to these Emails"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: field:base.action.rule,act_state:0
|
||||
msgid "Set State to"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: field:base.action.rule,act_email_from:0
|
||||
msgid "Email From"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: view:base.action.rule:0
|
||||
msgid "Email Body"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: selection:base.action.rule,trg_date_range_type:0
|
||||
msgid "Days"
|
||||
msgstr "أيام"
|
||||
|
||||
#. module: base_action_rule
|
||||
#: field:base.action.rule,last_run:0
|
||||
msgid "Last Run"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: code:addons/base_action_rule/base_action_rule.py:322
|
||||
#, python-format
|
||||
msgid "Error!"
|
||||
msgstr "خطأ!"
|
||||
|
||||
#. module: base_action_rule
|
||||
#: field:base.action.rule,act_reply_to:0
|
||||
msgid "Reply-To"
|
||||
msgstr "رد على"
|
||||
|
||||
#. module: base_action_rule
|
||||
#: help:base.action.rule,act_email_cc:0
|
||||
msgid ""
|
||||
"These people will receive a copy of the future communication between partner "
|
||||
"and users by email"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: selection:base.action.rule,trg_date_range_type:0
|
||||
msgid "Minutes"
|
||||
msgstr "دقائق"
|
||||
|
||||
#. module: base_action_rule
|
||||
#: field:base.action.rule,name:0
|
||||
msgid "Rule Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: help:base.action.rule,act_remind_partner:0
|
||||
msgid ""
|
||||
"Check this if you want the rule to send a reminder by email to the partner."
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: view:base.action.rule:0
|
||||
msgid "Conditions on Model Partner"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: selection:base.action.rule,trg_date_type:0
|
||||
msgid "Deadline"
|
||||
msgstr "الموعد النهائي"
|
||||
|
||||
#. module: base_action_rule
|
||||
#: field:base.action.rule,trg_partner_id:0
|
||||
msgid "Partner"
|
||||
msgstr "شريك"
|
||||
|
||||
#. module: base_action_rule
|
||||
#: view:base.action.rule:0
|
||||
msgid "%(object_subject)s = Object subject"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: view:base.action.rule:0
|
||||
msgid "Email Reminders"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: view:base.action.rule:0
|
||||
msgid "Special Keywords to Be Used in The Body"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: field:base.action.rule,trg_state_from:0
|
||||
msgid "State"
|
||||
msgstr "الحالة"
|
||||
|
||||
#. module: base_action_rule
|
||||
#: model:ir.actions.act_window,help:base_action_rule.base_action_rule_act
|
||||
msgid ""
|
||||
"Use automated actions to automatically trigger actions for various screens. "
|
||||
"Example: a lead created by a specific user may be automatically set to a "
|
||||
"specific sales team, or an opportunity which still has status pending after "
|
||||
"14 days might trigger an automatic reminder email."
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: help:base.action.rule,act_mail_to_email:0
|
||||
msgid "Email-id of the persons whom mail is to be sent"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: view:base.action.rule:0
|
||||
msgid "Action Rule"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: view:base.action.rule:0
|
||||
msgid "Fields to Change"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: selection:base.action.rule,trg_date_type:0
|
||||
msgid "Creation Date"
|
||||
msgstr "تاريخ الإنشاء"
|
||||
|
||||
#. module: base_action_rule
|
||||
#: selection:base.action.rule,trg_date_type:0
|
||||
msgid "Last Action Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: selection:base.action.rule,trg_date_range_type:0
|
||||
msgid "Hours"
|
||||
msgstr "ساعات"
|
||||
|
||||
#. module: base_action_rule
|
||||
#: view:base.action.rule:0
|
||||
msgid "%(object_id)s = Object ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: view:base.action.rule:0
|
||||
msgid "Delay After Trigger Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: field:base.action.rule,act_remind_attach:0
|
||||
msgid "Remind with Attachment"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: constraint:ir.cron:0
|
||||
msgid "Invalid arguments"
|
||||
msgstr "معطيات غير سليمة"
|
||||
|
||||
#. module: base_action_rule
|
||||
#: field:base.action.rule,act_user_id:0
|
||||
msgid "Set Responsible to"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: selection:base.action.rule,trg_date_type:0
|
||||
msgid "None"
|
||||
msgstr "لا شئ"
|
||||
|
||||
#. module: base_action_rule
|
||||
#: help:base.action.rule,act_email_to:0
|
||||
msgid ""
|
||||
"Use a python expression to specify the right field on which one than we will "
|
||||
"use for the 'To' field of the header"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: view:base.action.rule:0
|
||||
msgid "%(object_user_phone)s = Responsible phone"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: view:base.action.rule:0
|
||||
msgid ""
|
||||
"The rule uses the AND operator. The model must match all non-empty fields so "
|
||||
"that the rule executes the action described in the 'Actions' tab."
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: field:base.action.rule,trg_date_range_type:0
|
||||
msgid "Delay type"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: help:base.action.rule,regex_name:0
|
||||
msgid ""
|
||||
"Regular expression for matching name of the resource\n"
|
||||
"e.g.: 'urgent.*' will search for records having name starting with the "
|
||||
"string 'urgent'\n"
|
||||
"Note: This is case sensitive search."
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: field:base.action.rule,act_method:0
|
||||
msgid "Call Object Method"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: field:base.action.rule,act_email_to:0
|
||||
msgid "Email To"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: help:base.action.rule,act_mail_to_watchers:0
|
||||
msgid ""
|
||||
"Check this if you want the rule to mark CC(mail to any other person defined "
|
||||
"in actions)."
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: view:base.action.rule:0
|
||||
msgid "%(partner)s = Partner name"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: view:base.action.rule:0
|
||||
msgid "Note"
|
||||
msgstr "ملاحظة"
|
||||
|
||||
#. module: base_action_rule
|
||||
#: help:base.action.rule,act_email_from:0
|
||||
msgid ""
|
||||
"Use a python expression to specify the right field on which one than we will "
|
||||
"use for the 'From' field of the header"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: field:base.action.rule,trg_date_range:0
|
||||
msgid "Delay after trigger date"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: view:base.action.rule:0
|
||||
msgid "Conditions"
|
||||
msgstr "الشروط"
|
||||
|
||||
#. module: base_action_rule
|
||||
#: help:base.action.rule,trg_date_range:0
|
||||
msgid ""
|
||||
"Delay After Trigger Date,specifies you can put a negative number. If you "
|
||||
"need a delay before the trigger date, like sending a reminder 15 minutes "
|
||||
"before a meeting."
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: field:base.action.rule,active:0
|
||||
msgid "Active"
|
||||
msgstr "نشط"
|
||||
|
||||
#. module: base_action_rule
|
||||
#: code:addons/base_action_rule/base_action_rule.py:323
|
||||
#, python-format
|
||||
msgid "No E-Mail ID Found for your Company address!"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: field:base.action.rule,act_remind_user:0
|
||||
msgid "Remind Responsible"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: help:base.action.rule,sequence:0
|
||||
msgid "Gives the sequence order when displaying a list of rules."
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: selection:base.action.rule,trg_date_range_type:0
|
||||
msgid "Months"
|
||||
msgstr "شهور"
|
||||
|
||||
#. module: base_action_rule
|
||||
#: field:base.action.rule,filter_id:0
|
||||
msgid "Filter"
|
||||
msgstr "مُرشِّح"
|
||||
|
||||
#. module: base_action_rule
|
||||
#: selection:base.action.rule,trg_date_type:0
|
||||
msgid "Date"
|
||||
msgstr "تاريخ"
|
||||
|
||||
#. module: base_action_rule
|
||||
#: help:base.action.rule,server_action_id:0
|
||||
msgid ""
|
||||
"Describes the action name.\n"
|
||||
"eg:on which object which action to be taken on basis of which condition"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: model:ir.model,name:base_action_rule.model_ir_cron
|
||||
msgid "ir.cron"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: view:base.action.rule:0
|
||||
msgid "%(object_description)s = Object description"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: constraint:base.action.rule:0
|
||||
msgid "Error: The mail is not well formated"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: view:base.action.rule:0
|
||||
msgid "Email Actions"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: view:base.action.rule:0
|
||||
msgid "Email Information"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: model:ir.model,name:base_action_rule.model_base_action_rule
|
||||
msgid "Action Rules"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: help:base.action.rule,act_mail_body:0
|
||||
msgid "Content of mail"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: field:base.action.rule,trg_user_id:0
|
||||
msgid "Responsible"
|
||||
msgstr "مسئول"
|
||||
|
||||
#. module: base_action_rule
|
||||
#: view:base.action.rule:0
|
||||
msgid "%(partner_email)s = Partner Email"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: view:base.action.rule:0
|
||||
msgid "%(object_date)s = Creation date"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: view:base.action.rule:0
|
||||
msgid "%(object_user_email)s = Responsible Email"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: field:base.action.rule,act_mail_body:0
|
||||
msgid "Mail body"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: help:base.action.rule,act_remind_user:0
|
||||
msgid ""
|
||||
"Check this if you want the rule to send a reminder by email to the user."
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: view:base.action.rule:0
|
||||
msgid "Server Action to be Triggered"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: field:base.action.rule,act_mail_to_user:0
|
||||
msgid "Mail to Responsible"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: field:base.action.rule,act_email_cc:0
|
||||
msgid "Add Watchers (Cc)"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: view:base.action.rule:0
|
||||
msgid "Conditions on Model Fields"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: model:ir.actions.act_window,name:base_action_rule.base_action_rule_act
|
||||
#: model:ir.ui.menu,name:base_action_rule.menu_base_action_rule_form
|
||||
msgid "Automated Actions"
|
||||
msgstr "الإجراءات التلقائية"
|
||||
|
||||
#. module: base_action_rule
|
||||
#: field:base.action.rule,server_action_id:0
|
||||
msgid "Server Action"
|
||||
msgstr "إجراء الخادم"
|
||||
|
||||
#. module: base_action_rule
|
||||
#: field:base.action.rule,regex_name:0
|
||||
msgid "Regex on Resource Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: help:base.action.rule,act_remind_attach:0
|
||||
msgid ""
|
||||
"Check this if you want that all documents attached to the object be attached "
|
||||
"to the reminder email sent."
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: view:base.action.rule:0
|
||||
msgid "Conditions on Timing"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: field:base.action.rule,sequence:0
|
||||
msgid "Sequence"
|
||||
msgstr "مسلسل"
|
||||
|
||||
#. module: base_action_rule
|
||||
#: view:base.action.rule:0
|
||||
msgid "Actions"
|
||||
msgstr "الإجراءات"
|
||||
|
||||
#. module: base_action_rule
|
||||
#: help:base.action.rule,active:0
|
||||
msgid ""
|
||||
"If the active field is set to False, it will allow you to hide the rule "
|
||||
"without removing it."
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: view:base.action.rule:0
|
||||
msgid "%(object_user)s = Responsible name"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: field:base.action.rule,create_date:0
|
||||
msgid "Create Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: view:base.action.rule:0
|
||||
msgid "Conditions on States"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: field:base.action.rule,trg_date_type:0
|
||||
msgid "Trigger Date"
|
||||
msgstr ""
|
|
@ -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"
|
||||
" "
|
|
@ -233,6 +233,7 @@
|
|||
<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" />
|
||||
|
|
|
@ -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>
|
||||
|
||||
|
|
|
@ -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."
|
|
@ -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]
|
||||
|
|
|
@ -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"
|
|
@ -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"
|
|
@ -15,7 +15,7 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-01-03 04:48+0000\n"
|
||||
"X-Launchpad-Export-Date: 2012-01-04 04:48+0000\n"
|
||||
"X-Generator: Launchpad (build 14616)\n"
|
||||
|
||||
#. module: hr
|
||||
|
|
|
@ -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'
|
||||
|
||||
|
|
|
@ -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 ""
|
File diff suppressed because it is too large
Load Diff
|
@ -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
|
||||
|
||||
|
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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
|
@ -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
|
@ -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>
|
||||
|
|
|
@ -26,7 +26,7 @@
|
|||
'description': """The module adds google contact in partner address and add google calendar events details in Meeting""",
|
||||
'author': 'OpenERP SA',
|
||||
'website': 'http://www.openerp.com',
|
||||
'depends': ['base', 'google_base_account','crm'],
|
||||
'depends': ['base', 'import_base', 'google_base_account','crm'],
|
||||
'init_xml': [],
|
||||
'update_xml': ['security/ir.model.access.csv',
|
||||
'sync_google_calendar_view.xml',
|
||||
|
|
|
@ -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.")
|
||||
}
|
||||
|
|
|
@ -18,7 +18,8 @@
|
|||
<record model="workflow.activity" id="act_paid">
|
||||
<field name="wkf_id" ref="wkf_pos"/>
|
||||
<field name="name">paid</field>
|
||||
<field name="kind">dummy</field>
|
||||
<field name="action">write({'state':'paid'})</field>
|
||||
<field name="kind">function</field>
|
||||
</record>
|
||||
|
||||
<record model="workflow.activity" id="act_done">
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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': [
|
||||
'product_pricelist_demo.yml',
|
||||
'test/product_uom.yml',
|
||||
'test/product_pricelist.yml',
|
||||
],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
'certificate': '0068861431437',
|
||||
|
|
|
@ -271,7 +271,7 @@ class product_pricelist(osv.osv):
|
|||
if price is not False:
|
||||
price_limit = price
|
||||
price = price * (1.0+(res['price_discount'] or 0.0))
|
||||
price = rounding(price, res['price_round'])
|
||||
price = rounding(price, res['price_round']) #TOFIX: rounding with tools.float_rouding
|
||||
price += (res['price_surcharge'] or 0.0)
|
||||
if res['price_min_margin']:
|
||||
price = max(price, price_limit+res['price_min_margin'])
|
||||
|
|
|
@ -218,6 +218,8 @@ class product_category(osv.osv):
|
|||
'child_id': fields.one2many('product.category', 'parent_id', string='Child Categories'),
|
||||
'sequence': fields.integer('Sequence', select=True, help="Gives the sequence order when displaying a list of product categories."),
|
||||
'type': fields.selection([('view','View'), ('normal','Normal')], 'Category Type'),
|
||||
'parent_left': fields.integer('Left Parent', select=1),
|
||||
'parent_right': fields.integer('Right Parent', select=1),
|
||||
}
|
||||
|
||||
|
||||
|
@ -225,7 +227,11 @@ class product_category(osv.osv):
|
|||
'type' : lambda *a : 'normal',
|
||||
}
|
||||
|
||||
_order = "sequence, name"
|
||||
_parent_name = "parent_id"
|
||||
_parent_store = True
|
||||
_parent_order = 'sequence, name'
|
||||
_order = 'parent_left'
|
||||
|
||||
def _check_recursion(self, cr, uid, ids, context=None):
|
||||
level = 100
|
||||
while len(ids):
|
||||
|
@ -406,10 +412,11 @@ class product_product(osv.osv):
|
|||
context = {}
|
||||
quantity = context.get('quantity') or 1.0
|
||||
pricelist = context.get('pricelist', False)
|
||||
partner = context.get('partner', False)
|
||||
if pricelist:
|
||||
for id in ids:
|
||||
try:
|
||||
price = self.pool.get('product.pricelist').price_get(cr,uid,[pricelist], id, quantity, context=context)[pricelist]
|
||||
price = self.pool.get('product.pricelist').price_get(cr,uid,[pricelist], id, quantity, partner=partner, context=context)[pricelist]
|
||||
except:
|
||||
price = 0.0
|
||||
res[id] = price
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -0,0 +1,62 @@
|
|||
-
|
||||
!record {model: product.product, id: product_product_pc2}:
|
||||
uom_id: product_uom_unit
|
||||
categ_id: product_category_pc
|
||||
-
|
||||
!record {model: product.pricelist, id: customer_pricelist}:
|
||||
name: Customer Pricelist
|
||||
type: sale
|
||||
version_id:
|
||||
- name: v1.0
|
||||
date_start: 2012-01-01
|
||||
items_id:
|
||||
- name: Default pricelist
|
||||
base: -1
|
||||
base_pricelist_id: list0
|
||||
- name: 10% Discount on PC2
|
||||
sequence: 1
|
||||
product_id: product_product_pc2
|
||||
base: !eval (ref('product.list_price'))
|
||||
price_discount: -0.10
|
||||
- name: 1 surchange on PC3
|
||||
sequence: 1
|
||||
product_id: product_product_pc3
|
||||
base: !eval (ref('product.list_price'))
|
||||
price_surcharge: 1
|
||||
- name: 5% Discount on all IT components
|
||||
sequence: 1
|
||||
min_quantity: 2
|
||||
base: !eval (ref('product.list_price'))
|
||||
categ_id: product_category_10
|
||||
price_discount: -0.05
|
||||
- name: v2.0 (Special Discount on all products during last 5 days in current year)
|
||||
date_start: 2011-12-27
|
||||
date_end: 2011-12-31
|
||||
items_id:
|
||||
- name: 30% Discount on all products
|
||||
price_discount: -0.30
|
||||
sequence: 1
|
||||
base: !eval (ref('product.list_price'))
|
||||
-
|
||||
!record {model: product.pricelist, id: supplier_pricelist}:
|
||||
name: Supplier Pricelist
|
||||
type: sale
|
||||
version_id:
|
||||
- name: v1.0
|
||||
items_id:
|
||||
- name: 20% Discount given by my supplier
|
||||
sequence: 1
|
||||
price_min_margin: 2
|
||||
price_max_margin: -5
|
||||
product_id: product_product_pc2
|
||||
base: -2
|
||||
-
|
||||
!record {model: pricelist.partnerinfo, id: supplier_pricelist0_product_pc2}:
|
||||
suppinfo_id: supplierinfo6
|
||||
min_quantity: 3
|
||||
price: 405
|
||||
-
|
||||
!record {model: pricelist.partnerinfo, id: supplier_pricelist1_product_pc2}:
|
||||
suppinfo_id: supplierinfo6
|
||||
min_quantity: 1
|
||||
price: 455
|
|
@ -0,0 +1,75 @@
|
|||
-
|
||||
In order to check the calculation of price of the products according to pricelist,
|
||||
-
|
||||
I check sale price of PC2.
|
||||
-
|
||||
!python {model: product.product}: |
|
||||
context.update({'pricelist': ref("customer_pricelist"), 'quantity':1})
|
||||
product = self.browse(cr, uid, ref("product_product_pc2"), context=context)
|
||||
assert product.price == product.lst_price-product.lst_price*(0.10), "Sell price is not correspond."
|
||||
-
|
||||
I check sale price of PC3.
|
||||
-
|
||||
!python {model: product.product}: |
|
||||
product = self.browse(cr, uid, ref("product_product_pc3"), context=context)
|
||||
assert product.price == product.lst_price + 1, "Sell price is not correspond."
|
||||
-
|
||||
I check sale price of IT componet.
|
||||
-
|
||||
!python {model: product.product}: |
|
||||
product = self.browse(cr, uid, ref("product_product_mb1"), context=context)
|
||||
assert product.price == product.lst_price, "Sell price is not correspond."
|
||||
|
||||
-
|
||||
I check sale price of IT componet if more than 3 PCE.
|
||||
-
|
||||
!python {model: product.product}: |
|
||||
context.update({'quantity':5})
|
||||
product = self.browse(cr, uid, ref("product_product_mb1"), context=context)
|
||||
assert product.price == product.lst_price-product.lst_price*(0.05), "Sell price is not correspond."
|
||||
-
|
||||
I check sale price of PC4.
|
||||
-
|
||||
!python {model: product.product}: |
|
||||
context.update({'quantity':1})
|
||||
product = self.browse(cr, uid, ref("product_product_pc4"), context=context)
|
||||
assert product.price == product.lst_price, "Sell price is not correspond."
|
||||
|
||||
-
|
||||
I check sale price of PC4 on end of year.
|
||||
-
|
||||
!python {model: product.product}: |
|
||||
context.update({'quantity':1, 'date': '2011-12-31'})
|
||||
product = self.browse(cr, uid, ref("product_product_pc4"), context=context)
|
||||
assert product.price == product.lst_price-product.lst_price*(0.30), "Sell price is not correspond."
|
||||
|
||||
-
|
||||
I check cost price of PC2.
|
||||
-
|
||||
!python {model: product.product}: |
|
||||
context.update({'quantity':1, 'date': False, 'partner': ref('base.res_partner_4'), 'pricelist': ref("supplier_pricelist")})
|
||||
product = self.browse(cr, uid, ref("product_product_pc2"), context=context)
|
||||
assert product.price == 450, "cost price is not correspond."
|
||||
-
|
||||
I check cost price of PC2 if more than 3 PCE.
|
||||
-
|
||||
!python {model: product.product}: |
|
||||
context.update({'quantity':3})
|
||||
product = self.browse(cr, uid, ref("product_product_pc2"), context=context)
|
||||
assert product.price == 400, "cost price is not correspond."
|
||||
|
||||
-
|
||||
I print the sale prices report.
|
||||
-
|
||||
!python {model: product.product}: |
|
||||
ctx = {'model': 'product.product', 'date': '2011-12-30', 'active_ids': [ref('product.product_product_pc1'), ref('product.product_product_pc2'), ref('product.product_product_pc3'), ref('product.product_product_pc4')]}
|
||||
data_dict = {
|
||||
'qty1': 1,
|
||||
'qty2': 5,
|
||||
'qty3': 10,
|
||||
'qty4': 15,
|
||||
'qty5': 30,
|
||||
'price_list':ref('customer_pricelist'),
|
||||
}
|
||||
from tools import test_reports
|
||||
test_reports.try_report_action(cr, uid, 'action_product_price_list',wiz_data=data_dict, context=ctx, our_module='product')
|
|
@ -1,16 +0,0 @@
|
|||
-
|
||||
Print the Products Pricelists Report through the wizard
|
||||
-
|
||||
!python {model: product.product}: |
|
||||
ctx={}
|
||||
ctx.update({'model': 'product.product','active_ids': [ref('product.product_product_pc1'), ref('product.product_product_pc3')]})
|
||||
data_dict = {'qty1': 1,
|
||||
'qty2': 5,
|
||||
'qty3': 10,
|
||||
'qty4': 0,
|
||||
'qty5': 0,
|
||||
'price_list':ref('product.list0')}
|
||||
from tools import test_reports
|
||||
test_reports.try_report_action(cr, uid, 'action_product_price_list',wiz_data=data_dict, context=ctx, our_module='product')
|
||||
|
||||
|
|
@ -1,33 +0,0 @@
|
|||
-
|
||||
In order to test product,I start by creating a 20KG UOM for 'Sugar'
|
||||
-
|
||||
!record {model: product.uom, id: product_20k_uom_sugar}:
|
||||
name: 20KG
|
||||
uom_type: bigger
|
||||
category_id: product.product_uom_categ_kgm
|
||||
factor_inv: 20
|
||||
-
|
||||
I create a 10KG UOM for 'Sugar'
|
||||
-
|
||||
!record {model: product.uom, id: product_10k_uom_sugar}:
|
||||
name: 10KG
|
||||
uom_type: bigger
|
||||
category_id: product.product_uom_categ_kgm
|
||||
factor_inv: 10
|
||||
-
|
||||
I create a new product 'Sugar' in 20KG UOM.
|
||||
-
|
||||
!record {model: product.product, id: product_sugar_id1}:
|
||||
categ_id: 'product.product_category_rawmaterial0'
|
||||
name: Sugar 20KG
|
||||
procure_method: make_to_order
|
||||
standard_price: 400.0
|
||||
uom_id: product.product_20k_uom_sugar
|
||||
uom_po_id: product.product_20k_uom_sugar
|
||||
-
|
||||
I test onchanged on UOM, Create Duplicate Product and Delete original Product.
|
||||
-
|
||||
!python {model: product.product}: |
|
||||
self.onchange_uom(cr ,uid, [ref("product_sugar_id1")], ref("product.product_20k_uom_sugar"), ref("product.product_10k_uom_sugar"))
|
||||
self.copy(cr, uid, ref("product_sugar_id1"))
|
||||
self.unlink(cr, uid, [ref("product_sugar_id1")])
|
|
@ -0,0 +1,15 @@
|
|||
-
|
||||
In order to test conversation of UOM,
|
||||
-
|
||||
I convert Grams into TON with price.
|
||||
-
|
||||
!python {model: product.uom}: |
|
||||
from_uom_id = ref("product_uom_gram")
|
||||
to_uom_id = ref("product_uom_ton")
|
||||
price = 2
|
||||
qty = 1020000
|
||||
price = self._compute_price(cr, uid, from_uom_id, price, to_uom_id)
|
||||
qty = self._compute_qty(cr, uid, from_uom_id, qty, to_uom_id)
|
||||
assert qty == 1.02, "Qty is not correspond."
|
||||
assert price == 2000000.0, "Price is not correspond."
|
||||
|
|
@ -17,3 +17,4 @@ access_account_analytic_line_project,account.analytic.line project,analytic.mode
|
|||
access_project_task_history,project.task.history project,project.model_project_task_history,project.group_project_user,1,1,1,0
|
||||
access_project_task_history_cumulative,project.task.history project,project.model_project_task_history_cumulative,project.group_project_manager,1,0,0,0
|
||||
access_resource_calendar,project.resource_calendar manager,resource.model_resource_calendar,project.group_project_manager,1,0,0,0
|
||||
access_mail_message_project_user,project.mail.message.user,mail.model_mail_message,project.group_project_user,1,1,1,0
|
||||
|
|
|
|
@ -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',
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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
|
||||
"""
|
||||
|
|
|
@ -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
|
||||
-->
|
||||
|
|
|
@ -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
|
|
@ -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
|
|
@ -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" />
|
||||
|
|
|
@ -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."
|
|
@ -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,)
|
||||
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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)
|
|
@ -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)
|
||||
|
||||
|
|
@ -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]
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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>
|
||||
|
||||
|
|
Loading…
Reference in New Issue