Merge lp:~openerp-dev/openobject-addons/trunk-review-charfield-size-jar into lp:openobject-addons

Proposed by Jaydeep Barot(OpenERP)
Status: Needs review
Proposed branch: lp:~openerp-dev/openobject-addons/trunk-review-charfield-size-jar
Merge into: lp:openobject-addons
Diff against target: 6355 lines (+771/-756)
206 files modified
account/account.py (+50/-51)
account/account_analytic_line.py (+1/-1)
account/account_bank_statement.py (+4/-4)
account/account_financial_report.py (+5/-5)
account/account_invoice.py (+9/-9)
account/account_move_line.py (+3/-3)
account/company.py (+1/-1)
account/installer.py (+2/-2)
account/partner.py (+1/-1)
account/project/project.py (+2/-2)
account/report/account_entries_report.py (+5/-5)
account/report/account_invoice_report.py (+2/-2)
account/report/account_report.py (+12/-12)
account/res_config.py (+1/-1)
account/wizard/account_automatic_reconcile.py (+1/-1)
account/wizard/account_chart.py (+1/-1)
account/wizard/account_financial_report.py (+2/-2)
account/wizard/account_fiscalyear_close.py (+1/-1)
account/wizard/account_invoice_refund.py (+2/-2)
account/wizard/account_reconcile.py (+1/-1)
account/wizard/account_report_aged_partner_balance.py (+1/-1)
account/wizard/account_report_common.py (+2/-2)
account/wizard/account_report_common_account.py (+1/-1)
account/wizard/account_report_common_partner.py (+1/-1)
account/wizard/account_report_general_ledger.py (+1/-1)
account/wizard/account_report_partner_balance.py (+1/-1)
account/wizard/account_report_partner_ledger.py (+1/-1)
account/wizard/account_report_print_journal.py (+1/-1)
account/wizard/account_tax_chart.py (+1/-1)
account/wizard/account_vat.py (+1/-1)
account/wizard/pos_box.py (+2/-2)
account_analytic_analysis/account_analytic_analysis.py (+1/-1)
account_analytic_plans/account_analytic_plans.py (+3/-3)
account_asset/account_asset.py (+10/-10)
account_asset/report/account_asset_report.py (+2/-2)
account_asset/wizard/account_asset_change_duration.py (+1/-1)
account_bank_statement_extensions/account_bank_statement.py (+3/-3)
account_budget/account_budget.py (+3/-3)
account_check_writing/account.py (+1/-1)
account_check_writing/account_voucher.py (+2/-2)
account_followup/account_followup.py (+1/-1)
account_payment/account_payment.py (+8/-8)
account_sequence/account_sequence.py (+1/-1)
account_sequence/account_sequence_installer.py (+3/-3)
account_test/account_test.py (+1/-1)
account_voucher/account_voucher.py (+10/-10)
account_voucher/report/account_voucher_sales_receipt.py (+4/-4)
analytic/analytic.py (+4/-4)
anonymization/anonymization.py (+8/-8)
auth_ldap/users_ldap.py (+5/-5)
base_action_rule/base_action_rule.py (+3/-3)
base_action_rule/test_models.py (+2/-2)
base_gengo/ir_translation.py (+2/-2)
base_gengo/wizard/base_gengo_translations.py (+1/-1)
base_import/models.py (+3/-3)
base_import/test_models.py (+7/-7)
base_report_designer/installer.py (+2/-2)
base_setup/base_setup.py (+1/-1)
board/board.py (+1/-1)
crm/base_partner_merge.py (+1/-1)
crm/crm.py (+8/-8)
crm/crm_lead.py (+13/-13)
crm/crm_phonecall.py (+5/-5)
crm/crm_segmentation.py (+6/-6)
crm/report/crm_lead_report.py (+2/-2)
crm/report/crm_phonecall_report.py (+2/-2)
crm/wizard/crm_lead_to_opportunity.py (+2/-2)
crm/wizard/crm_partner_binding.py (+1/-1)
crm/wizard/crm_phonecall_to_phonecall.py (+4/-4)
crm_claim/crm_claim.py (+7/-7)
crm_claim/report/crm_claim_report.py (+4/-4)
crm_helpdesk/crm_helpdesk.py (+3/-3)
crm_helpdesk/report/crm_helpdesk_report.py (+4/-4)
crm_partner_assign/crm_partner_assign.py (+2/-2)
crm_partner_assign/report/crm_lead_report.py (+3/-3)
crm_partner_assign/wizard/crm_forward_to_partner.py (+1/-1)
crm_profiling/crm_profiling.py (+3/-3)
decimal_precision/decimal_precision.py (+1/-1)
delivery/delivery.py (+10/-10)
delivery/stock.py (+1/-1)
document/document.py (+8/-8)
document/report/document_report.py (+1/-1)
email_template/email_template.py (+1/-1)
event/event.py (+8/-8)
event_sale/event_sale.py (+1/-1)
fetchmail/fetchmail.py (+7/-7)
fleet/fleet.py (+13/-13)
gamification/models/badge.py (+1/-0)
gamification/models/challenge.py (+4/-3)
gamification/models/goal.py (+4/-1)
google_drive/google_drive.py (+3/-3)
hr/hr.py (+14/-14)
hr_attendance/hr_attendance.py (+3/-3)
hr_contract/hr_contract.py (+6/-6)
hr_evaluation/hr_evaluation.py (+1/-1)
hr_evaluation/report/hr_evaluation_report.py (+3/-3)
hr_expense/hr_expense.py (+4/-4)
hr_expense/report/hr_expense_report.py (+2/-2)
hr_holidays/report/hr_holidays_report.py (+2/-2)
hr_holidays/wizard/hr_holidays_summary_department.py (+1/-1)
hr_holidays/wizard/hr_holidays_summary_employees.py (+1/-1)
hr_payroll/hr_payroll.py (+18/-18)
hr_recruitment/hr_recruitment.py (+10/-10)
hr_recruitment/report/hr_recruitment_report.py (+1/-1)
hr_timesheet/wizard/hr_timesheet_sign_in_out.py (+3/-3)
hr_timesheet_invoice/hr_timesheet_invoice.py (+2/-2)
hr_timesheet_invoice/report/hr_timesheet_invoice_report.py (+8/-8)
hr_timesheet_invoice/report/report_analytic.py (+3/-3)
hr_timesheet_sheet/hr_timesheet_sheet.py (+3/-3)
hr_timesheet_sheet/report/hr_timesheet_report.py (+1/-1)
hr_timesheet_sheet/report/timesheet_report.py (+4/-4)
hr_timesheet_sheet/res_config.py (+1/-1)
im_livechat/im_livechat.py (+4/-4)
l10n_be/wizard/l10n_be_account_vat_declaration.py (+2/-2)
l10n_be/wizard/l10n_be_partner_vat_listing.py (+3/-3)
l10n_be/wizard/l10n_be_vat_intra.py (+5/-5)
l10n_be_coda/wizard/account_coda_import.py (+1/-1)
l10n_be_hr_payroll/l10n_be_hr_payroll.py (+1/-1)
l10n_be_invoice_bba/invoice.py (+2/-2)
l10n_be_invoice_bba/partner.py (+2/-2)
l10n_br/account.py (+2/-2)
l10n_fr/l10n_fr.py (+5/-5)
l10n_fr_hr_payroll/l10n_fr_hr_payroll.py (+6/-6)
l10n_fr_rib/bank.py (+1/-1)
l10n_in_hr_payroll/l10n_in_hr_payroll.py (+4/-4)
l10n_in_hr_payroll/report/payment_advice_report.py (+6/-6)
l10n_in_hr_payroll/report/payslip_report.py (+4/-4)
l10n_ma/l10n_ma.py (+3/-3)
l10n_multilang/account.py (+12/-12)
l10n_ro/res_partner.py (+1/-1)
lunch/lunch.py (+5/-5)
lunch/report/report_lunch_order.py (+2/-2)
mail/mail_alias.py (+2/-2)
mail/mail_followers.py (+1/-1)
mail/mail_group.py (+2/-2)
mail/mail_mail.py (+1/-1)
mail/mail_message.py (+1/-1)
mail/res_partner.py (+1/-1)
mail/wizard/invite.py (+1/-1)
marketing_campaign/marketing_campaign.py (+12/-12)
marketing_campaign/report/campaign_analysis.py (+2/-2)
mass_mailing/models/mass_mailing.py (+2/-2)
membership/report/report_membership.py (+2/-2)
mrp/mrp.py (+13/-13)
mrp/report/mrp_report.py (+2/-2)
mrp/wizard/mrp_product_produce.py (+1/-1)
mrp/wizard/mrp_workcenter_load.py (+2/-2)
mrp_byproduct/mrp_byproduct.py (+1/-1)
mrp_operations/mrp_operations.py (+4/-3)
mrp_operations/report/mrp_workorder_analysis.py (+1/-1)
mrp_repair/mrp_repair.py (+7/-7)
payment/models/payment_acquirer.py (+4/-3)
payment_ogone/models/ogone.py (+2/-2)
plugin_outlook/plugin_outlook.py (+2/-2)
plugin_thunderbird/plugin_thunderbird.py (+2/-2)
point_of_sale/point_of_sale.py (+10/-10)
point_of_sale/report/pos_order_report.py (+1/-1)
point_of_sale/wizard/pos_payment.py (+1/-1)
point_of_sale/wizard/pos_session_opening.py (+1/-1)
portal/wizard/portal_wizard.py (+1/-1)
procurement/procurement.py (+4/-4)
product/pricelist.py (+7/-7)
product/product.py (+6/-6)
product_manufacturer/product_manufacturer.py (+4/-4)
product_margin/wizard/product_margin.py (+1/-1)
project/project.py (+9/-8)
project/report/project_report.py (+3/-3)
project/wizard/project_task_delegate.py (+3/-3)
project_issue/project_issue.py (+4/-4)
project_issue/report/project_issue_report.py (+1/-1)
project_timesheet/report/task_report.py (+3/-3)
purchase/purchase.py (+6/-6)
purchase/report/purchase_report.py (+1/-1)
purchase/res_config.py (+1/-1)
purchase_analytic_plans/purchase_analytic_plans_view.xml (+1/-1)
purchase_requisition/purchase_requisition.py (+4/-4)
report_intrastat/report_intrastat.py (+6/-6)
report_webkit/header.py (+5/-5)
resource/resource.py (+6/-6)
sale/report/sale_report.py (+1/-1)
sale/sale.py (+6/-6)
sale/wizard/sale_make_invoice_advance.py (+1/-1)
sale_journal/sale_journal.py (+2/-2)
sale_stock/report/sale_report.py (+1/-1)
sale_stock/res_config.py (+1/-1)
sale_stock/sale_stock.py (+2/-2)
share/wizard/share_wizard.py (+8/-8)
stock/procurement.py (+1/-1)
stock/product.py (+5/-5)
stock/stock.py (+36/-28)
stock_account/stock.py (+5/-5)
stock_account/wizard/stock_invoice_onshipping.py (+1/-1)
stock_landed_costs/product.py (+1/-1)
stock_landed_costs/stock_landed_costs.py (+5/-5)
stock_picking_wave/stock_picking_wave.py (+1/-1)
subscription/subscription.py (+3/-3)
survey/survey.py (+6/-6)
survey/wizard/survey_email_compose_message.py (+1/-1)
warning/warning.py (+6/-6)
web_linkedin/web_linkedin.py (+4/-4)
website/models/website.py (+1/-1)
website_blog/models/website_blog.py (+1/-1)
website_event_track/models/event.py (+1/-1)
website_forum/models/forum.py (+3/-3)
website_forum/models/gamification.py (+1/-1)
website_quote/models/order.py (+2/-2)
To merge this branch: bzr merge lp:~openerp-dev/openobject-addons/trunk-review-charfield-size-jar
Reviewer Review Type Date Requested Status
OpenERP Core Team Pending
Review via email: mp+217873@code.launchpad.net

Description of the change

Hello,

Task: Review Size on char fields

Addons :

 * In lot of char fields, there is a useless size attribute.
 * remove useless size attribute in lot of char fields.
 * add max size on selection field.

Thank You.

To post a comment you must log in.
9401. By Fabien (Open ERP)

[IMP] website images: allow no max_width (default), faster loading if no resize

9402. By Antony Lesuisse (OpenERP)

[MERGE] saas-4 up to 9398 <email address hidden>

9403. By Antony Lesuisse (OpenERP)

[MERGE] saas-4 report_webkit missing dependency on report

9404. By Fabien (Open ERP)

[IMP] Lossless PNG compression. Reduced size by 3 with pngquant

9405. By Antony Lesuisse (OpenERP)

[FIX] website controller, correctly resolve last merge about images
fix fp commit to use debian compatible werkzeug api data instead of set_data

9406. By Antony Lesuisse (OpenERP)

[FIX] website_event missing javascript asset

9407. By Fabien Meghazi (OpenERP)

[FIX] edi, calendar webclient bootstrap

9408. By Géry Debongnie

[MERGE] converts buttons in form views into 'stat buttons'

This branch converts pretty much every buttons in 'stat buttons',
which means buttons that can display any kind of information. Right
now, it is mostly used to display a numerical information (such as a
number, for example 9 Calls). Also, look at the invoices button in
Customers form view for an example of a functional field, displaying
the total amount invoiced.

The stat buttons also supports sub widgets, for example a mini pie chart
or a mini bar chart. Examples of such sub widgets can be found in
marketing/mass mailings form views (not ready yet)

9409. By Fabien (Open ERP)

[IMP] Certification Template

9410. By Raphael Collet (OpenERP)

[FIX] event: move definition of fields track_ids and count_tracks to the right module

9411. By Fabien Meghazi (OpenERP)

[IMP] website: load website.xml templates only in editable mode

9412. By Fabien Meghazi (OpenERP)

[ADD] base_import_module test module, static asset in backend bundle

9413. By jke-openerp

[MERGE] Merge with trunk-cal-V8-jke. - Change field datetime into date or datetime according to that event type is in all day or not...

9414. By Fabien Meghazi (OpenERP)

[REM] preprocess_request from website

The method is still there with only a pass statement
Will completetly remove once chm merges his branch

9415. By Launchpad Translations on behalf of openerp

Launchpad automatic translations update.

9416. By Fabien Meghazi (OpenERP)

[FIX] jQuery.ui - boostrap conflict

9417. By Fabien Meghazi (OpenERP)

[REM] Removed addons.web#html_template usage

9418. By Launchpad Translations on behalf of openerp

Launchpad automatic translations update.

9419. By Xavier (Open ERP)

[IMP] mail: type fixes

* _get_tracked_fields should return a dict even when there's no tracked field
  (return an empty dict)

* in write, only call _get_tracked_fields once, initialize to None instead of
  a list (especially since it should be a dict in the first place)

9420. By Géry Debongnie

Large cleanups in addons

The code I merged in my branch stat buttons was sadly not up to our
standing... This branch improves the situation by removing harmful
try/excpet/pass statements, by using search_count when appropriate, by
removing unused one2many fields and by correcting some bugs

9421. By Antony Lesuisse (OpenERP)

[MERGE] trunk-websit-al-refactor by chm
- allow fiscal position change on sale orders
- public user on website
- simplify website_sale sale.order and shopping cart code
- remove preprocess_request

9422. By Fabien Meghazi (OpenERP)

[REM] QWeb does not self close empty divs anymore

See web Rev#4011

9423. By Christophe Simonis (OpenERP)

[MERGE] forward port of branch saas-4 up to revid 9410 <email address hidden>

9424. By Fabien Meghazi (OpenERP)

[REM] completetly removed website#preprocess_request()

9425. By Quentin (OpenERP) <email address hidden>

[REV] partial revert of revision 9408 <email address hidden> where we wrongly beleive than stock depends on crm_claim... :( That code will probably be back _in the right module_

9426. By Launchpad Translations on behalf of openerp

Launchpad automatic translations update.

9427. By Géry Debongnie

[MERGE] merge trunk-claimcount-fix-ged

Add the claim_count_out field to its correct place (in addon claim_from_delivery). The field was removed because it was incorrectly added to stock.py instead of the addon claim_from_delivery. (note: it was renamed from claim_count to claim_count_out)

9428. By Quentin (OpenERP) <email address hidden>

[MERGE] trunk-wms branch which include a lot of freaking features. Check the diff by yourself :-)

9429. By Mahendra Barad(OpenERP)

[MERGE] [IMP] crm, hr_recruitment, project, project_issue: use the newly-introduced widgets for the kanban state and the priority management.

This branch comes with a web branch holding those new widgets for form and kanban views.

9430. By Launchpad Translations on behalf of openerp

Launchpad automatic translations update.

9431. By Martin Trigaux (OpenERP)

[FIX] product: get_history_price recieves ids instead of a browse record for product template

9432. By Cedric Snauwaert (OpenERP)

[FIX]purchase_requisition: put js file in a bundle

9433. By Quentin (OpenERP) <email address hidden>

[FIX] claim_from_delivery: fixed error in delivery view

9434. By Jitendra Prajapati(OpenERP)

[MERGE] [IMP] mail, report_webkit: view improvements + better name_get for mail and aliases.

9435. By Fabien Meghazi (OpenERP)

[FIX] is_multilang_url by checking against werkzeug's routing map using query string too

9436. By Fabien Meghazi (OpenERP)

[ADD] alternate hreflang links in head for search engines

cf: https://support.google.com/webmasters/answer/189077?hl=en

9437. By Fabien (Open ERP)

[IMP] removing static style

9438. By Fabien (Open ERP)

[IMP] clean sitemap, enumerate pages + fixes

9439. By Fabien (Open ERP)

[IMP] Sitemap

9440. By Fabien (Open ERP)

[IMP] sitemap cleaning: events

9441. By Fabien (Open ERP)

[FIX] better handling of '/'. / is the first menu and not the first menu is /. Allows to move the first menu in another position

9442. By Fabien (Open ERP)

[FIX] css edit menu alignment and fix of / handling

9443. By Martin Trigaux (OpenERP)

Forward-port of latest saas-4, up to revision 9416 (rev-id <email address hidden>)

9444. By Xavier (Open ERP)

[IMP] mail docs

* fill-paragraph
* remove sections referring to removed methods with no obvious replacement

9445. By Martin Trigaux (OpenERP)

[IMP] gamification: improve the name of some m2m relations

9446. By Xavier (Open ERP)

[IMP] mail, base_import: context key disabling history tracking

* added a ``tracking_disable`` context key used by mail to completely disable
  subscriptions setup and events generation during create and write operations
* added import option to optionally set up that context key and speed up
  imports at the cost of not setting up subscriptions and not sending
  create/update events

9447. By Olivier Dony (Odoo)

[FIX] mass_mailing,website*,survey: leftover calls to website.get_public_user()

This method was (partially) removed at rev.9421
rev-id <email address hidden>

9448. By Fabien Meghazi (OpenERP)

[ADD] website.menu editable list in website config

9449. By Cedric Snauwaert (OpenERP)

[FIX]sale_report: change type of field date from date to datetime to match field date on sale_order

9450. By Fabien Meghazi (OpenERP)

[FIX] Do not display language choice if multilang=False

9451. By Jaydeep Barot(OpenERP)

[IMP] resize of selection field and remove size in char field

Unmerged revisions

9451. By Jaydeep Barot(OpenERP)

[IMP] resize of selection field and remove size in char field

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'account/account.py'
--- account/account.py 2014-04-24 13:45:33 +0000
+++ account/account.py 2014-05-12 18:39:30 +0000
@@ -59,7 +59,7 @@
59 _name = "account.payment.term"59 _name = "account.payment.term"
60 _description = "Payment Term"60 _description = "Payment Term"
61 _columns = {61 _columns = {
62 'name': fields.char('Payment Term', size=64, translate=True, required=True),62 'name': fields.char('Payment Term', translate=True, required=True),
63 'active': fields.boolean('Active', help="If the active field is set to False, it will allow you to hide the payment term without removing it."),63 'active': fields.boolean('Active', help="If the active field is set to False, it will allow you to hide the payment term without removing it."),
64 'note': fields.text('Description', translate=True),64 'note': fields.text('Description', translate=True),
65 'line_ids': fields.one2many('account.payment.term.line', 'payment_id', 'Terms'),65 'line_ids': fields.one2many('account.payment.term.line', 'payment_id', 'Terms'),
@@ -106,7 +106,7 @@
106 _columns = {106 _columns = {
107 'value': fields.selection([('procent', 'Percent'),107 'value': fields.selection([('procent', 'Percent'),
108 ('balance', 'Balance'),108 ('balance', 'Balance'),
109 ('fixed', 'Fixed Amount')], 'Computation',109 ('fixed', 'Fixed Amount')], 'Computation', size=7,
110 required=True, help="""Select here the kind of valuation related to this payment term line. Note that you should have your last line with the type 'Balance' to ensure that the whole amount will be treated."""),110 required=True, help="""Select here the kind of valuation related to this payment term line. Note that you should have your last line with the type 'Balance' to ensure that the whole amount will be treated."""),
111111
112 'value_amount': fields.float('Amount To Pay', digits_compute=dp.get_precision('Payment Term'), help="For percent enter a ratio between 0-1."),112 'value_amount': fields.float('Amount To Pay', digits_compute=dp.get_precision('Payment Term'), help="For percent enter a ratio between 0-1."),
@@ -180,9 +180,9 @@
180 return obj_financial_report.write(cr, uid, [financial_report_ref[field_value].id], {'account_type_ids': [(4, account_type_id)]})180 return obj_financial_report.write(cr, uid, [financial_report_ref[field_value].id], {'account_type_ids': [(4, account_type_id)]})
181181
182 _columns = {182 _columns = {
183 'name': fields.char('Account Type', size=64, required=True, translate=True),183 'name': fields.char('Account Type', required=True, translate=True),
184 'code': fields.char('Code', size=32, required=True, select=True),184 'code': fields.char('Code', size=32, required=True, select=True),
185 'close_method': fields.selection([('none', 'None'), ('balance', 'Balance'), ('detail', 'Detail'), ('unreconciled', 'Unreconciled')], 'Deferral Method', required=True, help="""Set here the method that will be used to generate the end of year journal entries for all the accounts of this type.185 'close_method': fields.selection([('none', 'None'), ('balance', 'Balance'), ('detail', 'Detail'), ('unreconciled', 'Unreconciled')], 'Deferral Method', size=12, required=True, help="""Set here the method that will be used to generate the end of year journal entries for all the accounts of this type.
186186
187 'None' means that nothing will be done.187 'None' means that nothing will be done.
188 'Balance' will generally be used for cash accounts.188 'Balance' will generally be used for cash accounts.
@@ -193,7 +193,7 @@
193 ('income', _('Profit & Loss (Income account)')),193 ('income', _('Profit & Loss (Income account)')),
194 ('expense', _('Profit & Loss (Expense account)')),194 ('expense', _('Profit & Loss (Expense account)')),
195 ('asset', _('Balance Sheet (Asset account)')),195 ('asset', _('Balance Sheet (Asset account)')),
196 ('liability', _('Balance Sheet (Liability account)'))], help="This field is used to generate legal reports: profit and loss, balance sheet.", required=True),196 ('liability', _('Balance Sheet (Liability account)'))], size=9, help="This field is used to generate legal reports: profit and loss, balance sheet.", required=True),
197 'note': fields.text('Description'),197 'note': fields.text('Description'),
198 }198 }
199 _defaults = {199 _defaults = {
@@ -444,7 +444,7 @@
444 return True444 return True
445445
446 _columns = {446 _columns = {
447 'name': fields.char('Name', size=256, required=True, select=True),447 'name': fields.char('Name', required=True, select=True),
448 'currency_id': fields.many2one('res.currency', 'Secondary Currency', help="Forces all moves for this account to have this secondary currency."),448 'currency_id': fields.many2one('res.currency', 'Secondary Currency', help="Forces all moves for this account to have this secondary currency."),
449 'code': fields.char('Code', size=64, required=True, select=1),449 'code': fields.char('Code', size=64, required=True, select=1),
450 'type': fields.selection([450 'type': fields.selection([
@@ -455,7 +455,7 @@
455 ('liquidity','Liquidity'),455 ('liquidity','Liquidity'),
456 ('consolidation', 'Consolidation'),456 ('consolidation', 'Consolidation'),
457 ('closed', 'Closed'),457 ('closed', 'Closed'),
458 ], 'Internal Type', required=True, help="The 'Internal Type' is used for features available on "\458 ], 'Internal Type', size=13, required=True, help="The 'Internal Type' is used for features available on "\
459 "different types of accounts: view can not have journal items, consolidation are accounts that "\459 "different types of accounts: view can not have journal items, consolidation are accounts that "\
460 "can have children accounts for multi-company consolidations, payable/receivable are for "\460 "can have children accounts for multi-company consolidations, payable/receivable are for "\
461 "partners accounts (for debit/credit computations), closed for depreciated accounts."),461 "partners accounts (for debit/credit computations), closed for depreciated accounts."),
@@ -478,7 +478,7 @@
478 help="Value of Loss or Gain due to changes in exchange rate when doing multi-currency transactions."),478 help="Value of Loss or Gain due to changes in exchange rate when doing multi-currency transactions."),
479 'reconcile': fields.boolean('Allow Reconciliation', help="Check this box if this account allows reconciliation of journal items."),479 'reconcile': fields.boolean('Allow Reconciliation', help="Check this box if this account allows reconciliation of journal items."),
480 'exchange_rate': fields.related('currency_id', 'rate', type='float', string='Exchange Rate', digits=(12,6)),480 'exchange_rate': fields.related('currency_id', 'rate', type='float', string='Exchange Rate', digits=(12,6)),
481 'shortcut': fields.char('Shortcut', size=12),481 'shortcut': fields.char('Shortcut'),
482 'tax_ids': fields.many2many('account.tax', 'account_account_tax_default_rel',482 'tax_ids': fields.many2many('account.tax', 'account_account_tax_default_rel',
483 'account_id', 'tax_id', 'Default Taxes'),483 'account_id', 'tax_id', 'Default Taxes'),
484 'note': fields.text('Internal Notes'),484 'note': fields.text('Internal Notes'),
@@ -488,7 +488,7 @@
488488
489 'parent_left': fields.integer('Parent Left', select=1),489 'parent_left': fields.integer('Parent Left', select=1),
490 'parent_right': fields.integer('Parent Right', select=1),490 'parent_right': fields.integer('Parent Right', select=1),
491 'currency_mode': fields.selection([('current', 'At Date'), ('average', 'Average Rate')], 'Outgoing Currencies Rate',491 'currency_mode': fields.selection([('current', 'At Date'), ('average', 'Average Rate')], 'Outgoing Currencies Rate', size=7,
492 help=492 help=
493 'This will select how the current currency rate for outgoing transactions is computed. '\493 'This will select how the current currency rate for outgoing transactions is computed. '\
494 'In most countries the legal method is "average" but only a few software systems are able to '\494 'In most countries the legal method is "average" but only a few software systems are able to '\
@@ -708,9 +708,9 @@
708 _description = "Journal"708 _description = "Journal"
709 _columns = {709 _columns = {
710 'with_last_closing_balance' : fields.boolean('Opening With Last Closing Balance'),710 'with_last_closing_balance' : fields.boolean('Opening With Last Closing Balance'),
711 'name': fields.char('Journal Name', size=64, required=True),711 'name': fields.char('Journal Name', required=True),
712 'code': fields.char('Code', size=5, required=True, help="The code will be displayed on reports."),712 'code': fields.char('Code', size=5, required=True, help="The code will be displayed on reports."),
713 'type': fields.selection([('sale', 'Sale'),('sale_refund','Sale Refund'), ('purchase', 'Purchase'), ('purchase_refund','Purchase Refund'), ('cash', 'Cash'), ('bank', 'Bank and Checks'), ('general', 'General'), ('situation', 'Opening/Closing Situation')], 'Type', size=32, required=True,713 'type': fields.selection([('sale', 'Sale'),('sale_refund','Sale Refund'), ('purchase', 'Purchase'), ('purchase_refund','Purchase Refund'), ('cash', 'Cash'), ('bank', 'Bank and Checks'), ('general', 'General'), ('situation', 'Opening/Closing Situation')], 'Type', size=15, required=True,
714 help="Select 'Sale' for customer invoices journals."\714 help="Select 'Sale' for customer invoices journals."\
715 " Select 'Purchase' for supplier invoices journals."\715 " Select 'Purchase' for supplier invoices journals."\
716 " Select 'Cash' or 'Bank' for journals that are used in customer or supplier payments."\716 " Select 'Cash' or 'Bank' for journals that are used in customer or supplier payments."\
@@ -852,13 +852,13 @@
852 _name = "account.fiscalyear"852 _name = "account.fiscalyear"
853 _description = "Fiscal Year"853 _description = "Fiscal Year"
854 _columns = {854 _columns = {
855 'name': fields.char('Fiscal Year', size=64, required=True),855 'name': fields.char('Fiscal Year', required=True),
856 'code': fields.char('Code', size=6, required=True),856 'code': fields.char('Code', size=6, required=True),
857 'company_id': fields.many2one('res.company', 'Company', required=True),857 'company_id': fields.many2one('res.company', 'Company', required=True),
858 'date_start': fields.date('Start Date', required=True),858 'date_start': fields.date('Start Date', required=True),
859 'date_stop': fields.date('End Date', required=True),859 'date_stop': fields.date('End Date', required=True),
860 'period_ids': fields.one2many('account.period', 'fiscalyear_id', 'Periods'),860 'period_ids': fields.one2many('account.period', 'fiscalyear_id', 'Periods'),
861 'state': fields.selection([('draft','Open'), ('done','Closed')], 'Status', readonly=True),861 'state': fields.selection([('draft','Open'), ('done','Closed')], 'Status', size=5, readonly=True),
862 }862 }
863 _defaults = {863 _defaults = {
864 'state': 'draft',864 'state': 'draft',
@@ -945,14 +945,13 @@
945 _name = "account.period"945 _name = "account.period"
946 _description = "Account period"946 _description = "Account period"
947 _columns = {947 _columns = {
948 'name': fields.char('Period Name', size=64, required=True),948 'name': fields.char('Period Name', required=True),
949 'code': fields.char('Code', size=12),949 'code': fields.char('Code', size=12),
950 'special': fields.boolean('Opening/Closing Period', size=12,950 'special': fields.boolean('Opening/Closing Period',help="These periods can overlap."),
951 help="These periods can overlap."),
952 'date_start': fields.date('Start of Period', required=True, states={'done':[('readonly',True)]}),951 'date_start': fields.date('Start of Period', required=True, states={'done':[('readonly',True)]}),
953 'date_stop': fields.date('End of Period', required=True, states={'done':[('readonly',True)]}),952 'date_stop': fields.date('End of Period', required=True, states={'done':[('readonly',True)]}),
954 'fiscalyear_id': fields.many2one('account.fiscalyear', 'Fiscal Year', required=True, states={'done':[('readonly',True)]}, select=True),953 'fiscalyear_id': fields.many2one('account.fiscalyear', 'Fiscal Year', required=True, states={'done':[('readonly',True)]}, select=True),
955 'state': fields.selection([('draft','Open'), ('done','Closed')], 'Status', readonly=True,954 'state': fields.selection([('draft','Open'), ('done','Closed')], 'Status', size=5, readonly=True,
956 help='When monthly periods are created. The status is \'Draft\'. At the end of monthly period it is in \'Done\' status.'),955 help='When monthly periods are created. The status is \'Draft\'. At the end of monthly period it is in \'Done\' status.'),
957 'company_id': fields.related('fiscalyear_id', 'company_id', type='many2one', relation='res.company', string='Company', store=True, readonly=True)956 'company_id': fields.related('fiscalyear_id', 'company_id', type='many2one', relation='res.company', string='Company', store=True, readonly=True)
958 }957 }
@@ -1085,12 +1084,12 @@
1085 return result1084 return result
10861085
1087 _columns = {1086 _columns = {
1088 'name': fields.char('Journal-Period Name', size=64, required=True),1087 'name': fields.char('Journal-Period Name', required=True),
1089 'journal_id': fields.many2one('account.journal', 'Journal', required=True, ondelete="cascade"),1088 'journal_id': fields.many2one('account.journal', 'Journal', required=True, ondelete="cascade"),
1090 'period_id': fields.many2one('account.period', 'Period', required=True, ondelete="cascade"),1089 'period_id': fields.many2one('account.period', 'Period', required=True, ondelete="cascade"),
1091 'icon': fields.function(_icon_get, string='Icon', type='char', size=32),1090 'icon': fields.function(_icon_get, string='Icon', type='char'),
1092 'active': fields.boolean('Active', help="If the active field is set to False, it will allow you to hide the journal period without removing it."),1091 'active': fields.boolean('Active', help="If the active field is set to False, it will allow you to hide the journal period without removing it."),
1093 'state': fields.selection([('draft','Draft'), ('printed','Printed'), ('done','Done')], 'Status', required=True, readonly=True,1092 'state': fields.selection([('draft','Draft'), ('printed','Printed'), ('done','Done')], 'Status', size=7, required=True, readonly=True,
1094 help='When journal period is created. The status is \'Draft\'. If a report is printed it comes to \'Printed\' status. When all transactions are done, it comes in \'Done\' status.'),1093 help='When journal period is created. The status is \'Draft\'. If a report is printed it comes to \'Printed\' status. When all transactions are done, it comes in \'Done\' status.'),
1095 'fiscalyear_id': fields.related('period_id', 'fiscalyear_id', string='Fiscal Year', type='many2one', relation='account.fiscalyear'),1094 'fiscalyear_id': fields.related('period_id', 'fiscalyear_id', string='Fiscal Year', type='many2one', relation='account.fiscalyear'),
1096 'company_id': fields.related('journal_id', 'company_id', type='many2one', relation='res.company', string='Company', store=True, readonly=True)1095 'company_id': fields.related('journal_id', 'company_id', type='many2one', relation='res.company', string='Company', store=True, readonly=True)
@@ -1228,11 +1227,11 @@
1228 return [line.move_id.id for line in line_obj.browse(cr, uid, ids, context=context)]1227 return [line.move_id.id for line in line_obj.browse(cr, uid, ids, context=context)]
12291228
1230 _columns = {1229 _columns = {
1231 'name': fields.char('Number', size=64, required=True),1230 'name': fields.char('Number', required=True),
1232 'ref': fields.char('Reference', size=64),1231 'ref': fields.char('Reference'),
1233 'period_id': fields.many2one('account.period', 'Period', required=True, states={'posted':[('readonly',True)]}),1232 'period_id': fields.many2one('account.period', 'Period', required=True, states={'posted':[('readonly',True)]}),
1234 'journal_id': fields.many2one('account.journal', 'Journal', required=True, states={'posted':[('readonly',True)]}),1233 'journal_id': fields.many2one('account.journal', 'Journal', required=True, states={'posted':[('readonly',True)]}),
1235 'state': fields.selection([('draft','Unposted'), ('posted','Posted')], 'Status', required=True, readonly=True,1234 'state': fields.selection([('draft','Unposted'), ('posted','Posted')], 'Status', size=6, required=True, readonly=True,
1236 help='All manually created new journal entries are usually in the status \'Unposted\', but you can set the option to skip that status on the related journal. In that case, they will behave as journal entries automatically created by the system on document validation (invoices, bank statements...) and will be created in \'Posted\' status.'),1235 help='All manually created new journal entries are usually in the status \'Unposted\', but you can set the option to skip that status on the related journal. In that case, they will behave as journal entries automatically created by the system on document validation (invoices, bank statements...) and will be created in \'Posted\' status.'),
1237 'line_id': fields.one2many('account.move.line', 'move_id', 'Entries', states={'posted':[('readonly',True)]}),1236 'line_id': fields.one2many('account.move.line', 'move_id', 'Entries', states={'posted':[('readonly',True)]}),
1238 'to_check': fields.boolean('To Review', help='Check this box if you are unsure of that journal entry and if you want to note it as \'to be reviewed\' by an accounting expert.'),1237 'to_check': fields.boolean('To Review', help='Check this box if you are unsure of that journal entry and if you want to note it as \'to be reviewed\' by an accounting expert.'),
@@ -1622,8 +1621,8 @@
1622 _name = "account.move.reconcile"1621 _name = "account.move.reconcile"
1623 _description = "Account Reconciliation"1622 _description = "Account Reconciliation"
1624 _columns = {1623 _columns = {
1625 'name': fields.char('Name', size=64, required=True),1624 'name': fields.char('Name', required=True),
1626 'type': fields.char('Type', size=16, required=True),1625 'type': fields.char('Type', required=True),
1627 'line_id': fields.one2many('account.move.line', 'reconcile_id', 'Entry Lines'),1626 'line_id': fields.one2many('account.move.line', 'reconcile_id', 'Entry Lines'),
1628 'line_partial_ids': fields.one2many('account.move.line', 'reconcile_partial_id', 'Partial Entry lines'),1627 'line_partial_ids': fields.one2many('account.move.line', 'reconcile_partial_id', 'Partial Entry lines'),
1629 'create_date': fields.date('Creation date', readonly=True),1628 'create_date': fields.date('Creation date', readonly=True),
@@ -1780,7 +1779,7 @@
1780 _description = 'Tax Code'1779 _description = 'Tax Code'
1781 _rec_name = 'code'1780 _rec_name = 'code'
1782 _columns = {1781 _columns = {
1783 'name': fields.char('Tax Case Name', size=64, required=True, translate=True),1782 'name': fields.char('Tax Case Name', required=True, translate=True),
1784 'code': fields.char('Case Code', size=64),1783 'code': fields.char('Case Code', size=64),
1785 'info': fields.text('Description'),1784 'info': fields.text('Description'),
1786 'sum': fields.function(_sum_year, string="Year Sum"),1785 'sum': fields.function(_sum_year, string="Year Sum"),
@@ -1869,15 +1868,15 @@
1869 _name = 'account.tax'1868 _name = 'account.tax'
1870 _description = 'Tax'1869 _description = 'Tax'
1871 _columns = {1870 _columns = {
1872 'name': fields.char('Tax Name', size=64, required=True, translate=True, help="This name will be displayed on reports"),1871 'name': fields.char('Tax Name', required=True, translate=True, help="This name will be displayed on reports"),
1873 'sequence': fields.integer('Sequence', required=True, help="The sequence field is used to order the tax lines from the lowest sequences to the higher ones. The order is important if you have a tax with several tax children. In this case, the evaluation order is important."),1872 'sequence': fields.integer('Sequence', required=True, help="The sequence field is used to order the tax lines from the lowest sequences to the higher ones. The order is important if you have a tax with several tax children. In this case, the evaluation order is important."),
1874 'amount': fields.float('Amount', required=True, digits_compute=get_precision_tax(), help="For taxes of type percentage, enter % ratio between 0-1."),1873 'amount': fields.float('Amount', required=True, digits_compute=get_precision_tax(), help="For taxes of type percentage, enter % ratio between 0-1."),
1875 'active': fields.boolean('Active', help="If the active field is set to False, it will allow you to hide the tax without removing it."),1874 'active': fields.boolean('Active', help="If the active field is set to False, it will allow you to hide the tax without removing it."),
1876 'type': fields.selection( [('percent','Percentage'), ('fixed','Fixed Amount'), ('none','None'), ('code','Python Code'), ('balance','Balance')], 'Tax Type', required=True,1875 'type': fields.selection( [('percent','Percentage'), ('fixed','Fixed Amount'), ('none','None'), ('code','Python Code'), ('balance','Balance')], 'Tax Type', size=7, required=True,
1877 help="The computation method for the tax amount."),1876 help="The computation method for the tax amount."),
1878 'applicable_type': fields.selection( [('true','Always'), ('code','Given by Python Code')], 'Applicability', required=True,1877 'applicable_type': fields.selection( [('true','Always'), ('code','Given by Python Code')], 'Applicability', size=4, required=True,
1879 help="If not applicable (computed through a Python code), the tax won't appear on the invoice."),1878 help="If not applicable (computed through a Python code), the tax won't appear on the invoice."),
1880 'domain':fields.char('Domain', size=32, help="This field is only used if you develop your own module allowing developers to create specific taxes in a custom domain."),1879 'domain':fields.char('Domain', help="This field is only used if you develop your own module allowing developers to create specific taxes in a custom domain."),
1881 'account_collected_id':fields.many2one('account.account', 'Invoice Tax Account', help="Set the account that will be set by default on invoice tax lines for invoices. Leave empty to use the expense account."),1880 'account_collected_id':fields.many2one('account.account', 'Invoice Tax Account', help="Set the account that will be set by default on invoice tax lines for invoices. Leave empty to use the expense account."),
1882 'account_paid_id':fields.many2one('account.account', 'Refund Tax Account', help="Set the account that will be set by default on invoice tax lines for refunds. Leave empty to use the expense account."),1881 'account_paid_id':fields.many2one('account.account', 'Refund Tax Account', help="Set the account that will be set by default on invoice tax lines for refunds. Leave empty to use the expense account."),
1883 'account_analytic_collected_id':fields.many2one('account.analytic.account', 'Invoice Tax Analytic Account', help="Set the analytic account that will be used by default on the invoice tax lines for invoices. Leave empty if you don't want to use an analytic account on the invoice tax lines by default."),1882 'account_analytic_collected_id':fields.many2one('account.analytic.account', 'Invoice Tax Analytic Account', help="Set the analytic account that will be used by default on the invoice tax lines for invoices. Leave empty if you don't want to use an analytic account on the invoice tax lines by default."),
@@ -1907,7 +1906,7 @@
1907 'company_id': fields.many2one('res.company', 'Company', required=True),1906 'company_id': fields.many2one('res.company', 'Company', required=True),
1908 'description': fields.char('Tax Code'),1907 'description': fields.char('Tax Code'),
1909 'price_include': fields.boolean('Tax Included in Price', help="Check this if the price you use on the product and invoices includes this tax."),1908 'price_include': fields.boolean('Tax Included in Price', help="Check this if the price you use on the product and invoices includes this tax."),
1910 'type_tax_use': fields.selection([('sale','Sale'),('purchase','Purchase'),('all','All')], 'Tax Application', required=True)1909 'type_tax_use': fields.selection([('sale','Sale'),('purchase','Purchase'),('all','All')], 'Tax Application', size=8, required=True)
19111910
1912 }1911 }
1913 _sql_constraints = [1912 _sql_constraints = [
@@ -2253,7 +2252,7 @@
2253 _name = "account.model"2252 _name = "account.model"
2254 _description = "Account Model"2253 _description = "Account Model"
2255 _columns = {2254 _columns = {
2256 'name': fields.char('Model Name', size=64, required=True, help="This is a model for recurring accounting entries"),2255 'name': fields.char('Model Name', required=True, help="This is a model for recurring accounting entries"),
2257 'journal_id': fields.many2one('account.journal', 'Journal', required=True),2256 'journal_id': fields.many2one('account.journal', 'Journal', required=True),
2258 'company_id': fields.related('journal_id', 'company_id', type='many2one', relation='res.company', string='Company', store=True, readonly=True),2257 'company_id': fields.related('journal_id', 'company_id', type='many2one', relation='res.company', string='Company', store=True, readonly=True),
2259 'lines_id': fields.one2many('account.model.line', 'model_id', 'Model Entries'),2258 'lines_id': fields.one2many('account.model.line', 'model_id', 'Model Entries'),
@@ -2360,7 +2359,7 @@
2360 _name = "account.model.line"2359 _name = "account.model.line"
2361 _description = "Account Model Entries"2360 _description = "Account Model Entries"
2362 _columns = {2361 _columns = {
2363 'name': fields.char('Name', size=64, required=True),2362 'name': fields.char('Name', required=True),
2364 'sequence': fields.integer('Sequence', required=True, help="The sequence field is used to order the resources from lower sequences to higher ones."),2363 'sequence': fields.integer('Sequence', required=True, help="The sequence field is used to order the resources from lower sequences to higher ones."),
2365 'quantity': fields.float('Quantity', digits_compute=dp.get_precision('Account'), help="The optional quantity on entries."),2364 'quantity': fields.float('Quantity', digits_compute=dp.get_precision('Account'), help="The optional quantity on entries."),
2366 'debit': fields.float('Debit', digits_compute=dp.get_precision('Account')),2365 'debit': fields.float('Debit', digits_compute=dp.get_precision('Account')),
@@ -2371,7 +2370,7 @@
2371 'amount_currency': fields.float('Amount Currency', help="The amount expressed in an optional other currency."),2370 'amount_currency': fields.float('Amount Currency', help="The amount expressed in an optional other currency."),
2372 'currency_id': fields.many2one('res.currency', 'Currency'),2371 'currency_id': fields.many2one('res.currency', 'Currency'),
2373 'partner_id': fields.many2one('res.partner', 'Partner'),2372 'partner_id': fields.many2one('res.partner', 'Partner'),
2374 'date_maturity': fields.selection([('today','Date of the day'), ('partner','Partner Payment Term')], 'Maturity Date', help="The maturity date of the generated entries for this model. You can choose between the creation date or the creation date of the entries plus the partner payment terms."),2373 'date_maturity': fields.selection([('today','Date of the day'), ('partner','Partner Payment Term')], 'Maturity Date', size=7, help="The maturity date of the generated entries for this model. You can choose between the creation date or the creation date of the entries plus the partner payment terms."),
2375 }2374 }
2376 _order = 'sequence'2375 _order = 'sequence'
2377 _sql_constraints = [2376 _sql_constraints = [
@@ -2388,14 +2387,14 @@
2388 _name = "account.subscription"2387 _name = "account.subscription"
2389 _description = "Account Subscription"2388 _description = "Account Subscription"
2390 _columns = {2389 _columns = {
2391 'name': fields.char('Name', size=64, required=True),2390 'name': fields.char('Name', required=True),
2392 'ref': fields.char('Reference', size=16),2391 'ref': fields.char('Reference'),
2393 'model_id': fields.many2one('account.model', 'Model', required=True),2392 'model_id': fields.many2one('account.model', 'Model', required=True),
2394 'date_start': fields.date('Start Date', required=True),2393 'date_start': fields.date('Start Date', required=True),
2395 'period_total': fields.integer('Number of Periods', required=True),2394 'period_total': fields.integer('Number of Periods', required=True),
2396 'period_nbr': fields.integer('Period', required=True),2395 'period_nbr': fields.integer('Period', required=True),
2397 'period_type': fields.selection([('day','days'),('month','month'),('year','year')], 'Period Type', required=True),2396 'period_type': fields.selection([('day','days'),('month','month'),('year','year')], 'Period Type', size=5, required=True),
2398 'state': fields.selection([('draft','Draft'),('running','Running'),('done','Done')], 'Status', required=True, readonly=True),2397 'state': fields.selection([('draft','Draft'),('running','Running'),('done','Done')], 'Status', size=7, required=True, readonly=True),
2399 'lines_id': fields.one2many('account.subscription.line', 'subscription_id', 'Subscription Lines')2398 'lines_id': fields.one2many('account.subscription.line', 'subscription_id', 'Subscription Lines')
2400 }2399 }
2401 _defaults = {2400 _defaults = {
@@ -2493,7 +2492,7 @@
2493 _description ='Templates for Accounts'2492 _description ='Templates for Accounts'
24942493
2495 _columns = {2494 _columns = {
2496 'name': fields.char('Name', size=256, required=True, select=True),2495 'name': fields.char('Name', required=True, select=True),
2497 'currency_id': fields.many2one('res.currency', 'Secondary Currency', help="Forces all moves for this account to have this secondary currency."),2496 'currency_id': fields.many2one('res.currency', 'Secondary Currency', help="Forces all moves for this account to have this secondary currency."),
2498 'code': fields.char('Code', size=64, required=True, select=1),2497 'code': fields.char('Code', size=64, required=True, select=1),
2499 'type': fields.selection([2498 'type': fields.selection([
@@ -2504,7 +2503,7 @@
2504 ('liquidity','Liquidity'),2503 ('liquidity','Liquidity'),
2505 ('other','Regular'),2504 ('other','Regular'),
2506 ('closed','Closed'),2505 ('closed','Closed'),
2507 ], 'Internal Type', required=True,help="This type is used to differentiate types with "\2506 ], 'Internal Type', size=13, required=True,help="This type is used to differentiate types with "\
2508 "special effects in OpenERP: view can not have entries, consolidation are accounts that "\2507 "special effects in OpenERP: view can not have entries, consolidation are accounts that "\
2509 "can have children accounts for multi-company consolidations, payable/receivable are for "\2508 "can have children accounts for multi-company consolidations, payable/receivable are for "\
2510 "partners accounts (for debit/credit computations), closed for depreciated accounts."),2509 "partners accounts (for debit/credit computations), closed for depreciated accounts."),
@@ -2513,7 +2512,7 @@
2513 "about the account and its specificities."),2512 "about the account and its specificities."),
2514 'financial_report_ids': fields.many2many('account.financial.report', 'account_template_financial_report', 'account_template_id', 'report_line_id', 'Financial Reports'),2513 'financial_report_ids': fields.many2many('account.financial.report', 'account_template_financial_report', 'account_template_id', 'report_line_id', 'Financial Reports'),
2515 'reconcile': fields.boolean('Allow Reconciliation', help="Check this option if you want the user to reconcile entries in this account."),2514 'reconcile': fields.boolean('Allow Reconciliation', help="Check this option if you want the user to reconcile entries in this account."),
2516 'shortcut': fields.char('Shortcut', size=12),2515 'shortcut': fields.char('Shortcut'),
2517 'note': fields.text('Note'),2516 'note': fields.text('Note'),
2518 'parent_id': fields.many2one('account.account.template', 'Parent Account Template', ondelete='cascade', domain=[('type','=','view')]),2517 'parent_id': fields.many2one('account.account.template', 'Parent Account Template', ondelete='cascade', domain=[('type','=','view')]),
2519 'child_parent_ids':fields.one2many('account.account.template', 'parent_id', 'Children'),2518 'child_parent_ids':fields.one2many('account.account.template', 'parent_id', 'Children'),
@@ -2674,7 +2673,7 @@
2674 _order = 'code'2673 _order = 'code'
2675 _rec_name = 'code'2674 _rec_name = 'code'
2676 _columns = {2675 _columns = {
2677 'name': fields.char('Tax Case Name', size=64, required=True),2676 'name': fields.char('Tax Case Name', required=True),
2678 'code': fields.char('Case Code', size=64),2677 'code': fields.char('Case Code', size=64),
2679 'info': fields.text('Description'),2678 'info': fields.text('Description'),
2680 'parent_id': fields.many2one('account.tax.code.template', 'Parent Code', select=True),2679 'parent_id': fields.many2one('account.tax.code.template', 'Parent Code', select=True),
@@ -2744,7 +2743,7 @@
2744 _description= "Templates for Account Chart"2743 _description= "Templates for Account Chart"
27452744
2746 _columns={2745 _columns={
2747 'name': fields.char('Name', size=64, required=True),2746 'name': fields.char('Name', required=True),
2748 'parent_id': fields.many2one('account.chart.template', 'Parent Chart Template'),2747 'parent_id': fields.many2one('account.chart.template', 'Parent Chart Template'),
2749 'code_digits': fields.integer('# of Digits', required=True, help="No. of Digits to use for account code"),2748 'code_digits': fields.integer('# of Digits', required=True, help="No. of Digits to use for account code"),
2750 'visible': fields.boolean('Can be Visible?', help="Set this to False if you don't want this template to be used actively in the wizard that generate Chart of Accounts from templates, this is useful when you want to generate accounts of this template only when loading its child template."),2749 'visible': fields.boolean('Can be Visible?', help="Set this to False if you don't want this template to be used actively in the wizard that generate Chart of Accounts from templates, this is useful when you want to generate accounts of this template only when loading its child template."),
@@ -2778,12 +2777,12 @@
27782777
2779 _columns = {2778 _columns = {
2780 'chart_template_id': fields.many2one('account.chart.template', 'Chart Template', required=True),2779 'chart_template_id': fields.many2one('account.chart.template', 'Chart Template', required=True),
2781 'name': fields.char('Tax Name', size=64, required=True),2780 'name': fields.char('Tax Name', required=True),
2782 'sequence': fields.integer('Sequence', required=True, help="The sequence field is used to order the taxes lines from lower sequences to higher ones. The order is important if you have a tax that has several tax children. In this case, the evaluation order is important."),2781 'sequence': fields.integer('Sequence', required=True, help="The sequence field is used to order the taxes lines from lower sequences to higher ones. The order is important if you have a tax that has several tax children. In this case, the evaluation order is important."),
2783 'amount': fields.float('Amount', required=True, digits_compute=get_precision_tax(), help="For Tax Type percent enter % ratio between 0-1."),2782 'amount': fields.float('Amount', required=True, digits_compute=get_precision_tax(), help="For Tax Type percent enter % ratio between 0-1."),
2784 'type': fields.selection( [('percent','Percent'), ('fixed','Fixed'), ('none','None'), ('code','Python Code'), ('balance','Balance')], 'Tax Type', required=True),2783 'type': fields.selection( [('percent','Percent'), ('fixed','Fixed'), ('none','None'), ('code','Python Code'), ('balance','Balance')], 'Tax Type', size=7, required=True),
2785 'applicable_type': fields.selection( [('true','True'), ('code','Python Code')], 'Applicable Type', required=True, help="If not applicable (computed through a Python code), the tax won't appear on the invoice."),2784 'applicable_type': fields.selection( [('true','True'), ('code','Python Code')], 'Applicable Type', size=4, required=True, help="If not applicable (computed through a Python code), the tax won't appear on the invoice."),
2786 'domain':fields.char('Domain', size=32, help="This field is only used if you develop your own module allowing developers to create specific taxes in a custom domain."),2785 'domain':fields.char('Domain', help="This field is only used if you develop your own module allowing developers to create specific taxes in a custom domain."),
2787 'account_collected_id':fields.many2one('account.account.template', 'Invoice Tax Account'),2786 'account_collected_id':fields.many2one('account.account.template', 'Invoice Tax Account'),
2788 'account_paid_id':fields.many2one('account.account.template', 'Refund Tax Account'),2787 'account_paid_id':fields.many2one('account.account.template', 'Refund Tax Account'),
2789 'parent_id':fields.many2one('account.tax.template', 'Parent Tax Account', select=True),2788 'parent_id':fields.many2one('account.tax.template', 'Parent Tax Account', select=True),
@@ -2808,7 +2807,7 @@
2808 'ref_tax_sign': fields.float('Refund Tax Code Sign', help="Usually 1 or -1."),2807 'ref_tax_sign': fields.float('Refund Tax Code Sign', help="Usually 1 or -1."),
2809 'include_base_amount': fields.boolean('Include in Base Amount', help="Set if the amount of tax must be included in the base amount before computing the next taxes."),2808 'include_base_amount': fields.boolean('Include in Base Amount', help="Set if the amount of tax must be included in the base amount before computing the next taxes."),
2810 'description': fields.char('Internal Name'),2809 'description': fields.char('Internal Name'),
2811 'type_tax_use': fields.selection([('sale','Sale'),('purchase','Purchase'),('all','All')], 'Tax Use In', required=True,),2810 'type_tax_use': fields.selection([('sale','Sale'),('purchase','Purchase'),('all','All')], 'Tax Use In', size=8, required=True,),
2812 'price_include': fields.boolean('Tax Included in Price', help="Check this if the price you use on the product and invoices includes this tax."),2811 'price_include': fields.boolean('Tax Included in Price', help="Check this if the price you use on the product and invoices includes this tax."),
2813 }2812 }
28142813
@@ -2907,7 +2906,7 @@
2907 _description = 'Template for Fiscal Position'2906 _description = 'Template for Fiscal Position'
29082907
2909 _columns = {2908 _columns = {
2910 'name': fields.char('Fiscal Position Template', size=64, required=True),2909 'name': fields.char('Fiscal Position Template', required=True),
2911 'chart_template_id': fields.many2one('account.chart.template', 'Chart Template', required=True),2910 'chart_template_id': fields.many2one('account.chart.template', 'Chart Template', required=True),
2912 'account_ids': fields.one2many('account.fiscal.position.account.template', 'position_id', 'Account Mapping'),2911 'account_ids': fields.one2many('account.fiscal.position.account.template', 'position_id', 'Account Mapping'),
2913 'tax_ids': fields.one2many('account.fiscal.position.tax.template', 'position_id', 'Tax Mapping'),2912 'tax_ids': fields.one2many('account.fiscal.position.tax.template', 'position_id', 'Tax Mapping'),
@@ -3539,10 +3538,10 @@
3539 _name='account.bank.accounts.wizard'3538 _name='account.bank.accounts.wizard'
35403539
3541 _columns = {3540 _columns = {
3542 'acc_name': fields.char('Account Name.', size=64, required=True),3541 'acc_name': fields.char('Account Name.', required=True),
3543 'bank_account_id': fields.many2one('wizard.multi.charts.accounts', 'Bank Account', required=True, ondelete='cascade'),3542 'bank_account_id': fields.many2one('wizard.multi.charts.accounts', 'Bank Account', required=True, ondelete='cascade'),
3544 'currency_id': fields.many2one('res.currency', 'Secondary Currency', help="Forces all moves for this account to have this secondary currency."),3543 'currency_id': fields.many2one('res.currency', 'Secondary Currency', help="Forces all moves for this account to have this secondary currency."),
3545 'account_type': fields.selection([('cash','Cash'), ('check','Check'), ('bank','Bank')], 'Account Type', size=32),3544 'account_type': fields.selection([('cash','Cash'), ('check','Check'), ('bank','Bank')], 'Account Type', size=5),
3546 }3545 }
35473546
35483547
35493548
=== modified file 'account/account_analytic_line.py'
--- account/account_analytic_line.py 2013-10-27 12:31:04 +0000
+++ account/account_analytic_line.py 2014-05-12 18:39:30 +0000
@@ -33,7 +33,7 @@
33 'move_id': fields.many2one('account.move.line', 'Move Line', ondelete='cascade', select=True),33 'move_id': fields.many2one('account.move.line', 'Move Line', ondelete='cascade', select=True),
34 'journal_id': fields.many2one('account.analytic.journal', 'Analytic Journal', required=True, ondelete='restrict', select=True),34 'journal_id': fields.many2one('account.analytic.journal', 'Analytic Journal', required=True, ondelete='restrict', select=True),
35 'code': fields.char('Code', size=8),35 'code': fields.char('Code', size=8),
36 'ref': fields.char('Ref.', size=64),36 'ref': fields.char('Ref.'),
37 'currency_id': fields.related('move_id', 'currency_id', type='many2one', relation='res.currency', string='Account Currency', store=True, help="The related account currency if not equal to the company one.", readonly=True),37 'currency_id': fields.related('move_id', 'currency_id', type='many2one', relation='res.currency', string='Account Currency', store=True, help="The related account currency if not equal to the company one.", readonly=True),
38 'amount_currency': fields.related('move_id', 'amount_currency', type='float', string='Amount Currency', store=True, help="The amount expressed in the related account currency if not equal to the company one.", readonly=True),38 'amount_currency': fields.related('move_id', 'amount_currency', type='float', string='Amount Currency', store=True, help="The amount expressed in the related account currency if not equal to the company one.", readonly=True),
39 }39 }
4040
=== modified file 'account/account_bank_statement.py'
--- account/account_bank_statement.py 2014-02-10 06:46:42 +0000
+++ account/account_bank_statement.py 2014-05-12 18:39:30 +0000
@@ -97,7 +97,7 @@
97 _description = "Bank Statement"97 _description = "Bank Statement"
98 _inherit = ['mail.thread']98 _inherit = ['mail.thread']
99 _columns = {99 _columns = {
100 'name': fields.char('Reference', size=64, required=True, states={'draft': [('readonly', False)]}, readonly=True, help='if you give the Name other then /, its created Accounting Entries Move will be with same name as statement name. This allows the statement entries to have the same references than the statement itself'), # readonly for account_cash_statement100 'name': fields.char('Reference', required=True, states={'draft': [('readonly', False)]}, readonly=True, help='if you give the Name other then /, its created Accounting Entries Move will be with same name as statement name. This allows the statement entries to have the same references than the statement itself'), # readonly for account_cash_statement
101 'date': fields.date('Date', required=True, states={'confirm': [('readonly', True)]}, select=True),101 'date': fields.date('Date', required=True, states={'confirm': [('readonly', True)]}, select=True),
102 'journal_id': fields.many2one('account.journal', 'Journal', required=True,102 'journal_id': fields.many2one('account.journal', 'Journal', required=True,
103 readonly=True, states={'draft':[('readonly',False)]}),103 readonly=True, states={'draft':[('readonly',False)]}),
@@ -122,7 +122,7 @@
122 'state': fields.selection([('draft', 'New'),122 'state': fields.selection([('draft', 'New'),
123 ('open','Open'), # used by cash statements123 ('open','Open'), # used by cash statements
124 ('confirm', 'Closed')],124 ('confirm', 'Closed')],
125 'Status', required=True, readonly="1",125 'Status', required=True, readonly="1", size=7,
126 help='When new statement is created the status will be \'Draft\'.\n'126 help='When new statement is created the status will be \'Draft\'.\n'
127 'And after getting confirmation from the bank it will be in \'Confirmed\' status.'),127 'And after getting confirmation from the bank it will be in \'Confirmed\' status.'),
128 'currency': fields.function(_currency, string='Currency',128 'currency': fields.function(_currency, string='Currency',
@@ -558,7 +558,7 @@
558 ('supplier','Supplier'),558 ('supplier','Supplier'),
559 ('customer','Customer'),559 ('customer','Customer'),
560 ('general','General')560 ('general','General')
561 ], 'Type', required=True),561 ], 'Type', size=8, required=True),
562 'partner_id': fields.many2one('res.partner', 'Partner'),562 'partner_id': fields.many2one('res.partner', 'Partner'),
563 'account_id': fields.many2one('account.account','Account',563 'account_id': fields.many2one('account.account','Account',
564 required=True),564 required=True),
@@ -569,7 +569,7 @@
569 'move_ids': fields.many2many('account.move',569 'move_ids': fields.many2many('account.move',
570 'account_bank_statement_line_move_rel', 'statement_line_id','move_id',570 'account_bank_statement_line_move_rel', 'statement_line_id','move_id',
571 'Moves'),571 'Moves'),
572 'ref': fields.char('Reference', size=32),572 'ref': fields.char('Reference'),
573 'note': fields.text('Notes'),573 'note': fields.text('Notes'),
574 'sequence': fields.integer('Sequence', select=True, help="Gives the sequence order when displaying a list of bank statement lines."),574 'sequence': fields.integer('Sequence', select=True, help="Gives the sequence order when displaying a list of bank statement lines."),
575 'company_id': fields.related('statement_id', 'company_id', type='many2one', relation='res.company', string='Company', store=True, readonly=True),575 'company_id': fields.related('statement_id', 'company_id', type='many2one', relation='res.company', string='Company', store=True, readonly=True),
576576
=== modified file 'account/account_financial_report.py'
--- account/account_financial_report.py 2013-10-27 12:31:04 +0000
+++ account/account_financial_report.py 2014-05-12 18:39:30 +0000
@@ -97,7 +97,7 @@
97 return res97 return res
9898
99 _columns = {99 _columns = {
100 'name': fields.char('Report Name', size=128, required=True, translate=True),100 'name': fields.char('Report Name', required=True, translate=True),
101 'parent_id': fields.many2one('account.financial.report', 'Parent'),101 'parent_id': fields.many2one('account.financial.report', 'Parent'),
102 'children_ids': fields.one2many('account.financial.report', 'parent_id', 'Account Report'),102 'children_ids': fields.one2many('account.financial.report', 'parent_id', 'Account Report'),
103 'sequence': fields.integer('Sequence'),103 'sequence': fields.integer('Sequence'),
@@ -110,16 +110,16 @@
110 ('accounts','Accounts'),110 ('accounts','Accounts'),
111 ('account_type','Account Type'),111 ('account_type','Account Type'),
112 ('account_report','Report Value'),112 ('account_report','Report Value'),
113 ],'Type'),113 ],'Type', size=14),
114 'account_ids': fields.many2many('account.account', 'account_account_financial_report', 'report_line_id', 'account_id', 'Accounts'),114 'account_ids': fields.many2many('account.account', 'account_account_financial_report', 'report_line_id', 'account_id', 'Accounts'),
115 'account_report_id': fields.many2one('account.financial.report', 'Report Value'),115 'account_report_id': fields.many2one('account.financial.report', 'Report Value'),
116 'account_type_ids': fields.many2many('account.account.type', 'account_account_financial_report_type', 'report_id', 'account_type_id', 'Account Types'),116 'account_type_ids': fields.many2many('account.account.type', 'account_account_financial_report_type', 'report_id', 'account_type_id', 'Account Types'),
117 'sign': fields.selection([(-1, 'Reverse balance sign'), (1, 'Preserve balance sign')], 'Sign on Reports', required=True, help='For accounts that are typically more debited than credited and that you would like to print as negative amounts in your reports, you should reverse the sign of the balance; e.g.: Expense account. The same applies for accounts that are typically more credited than debited and that you would like to print as positive amounts in your reports; e.g.: Income account.'),117 'sign': fields.selection([(-1, 'Reverse balance sign'), (1, 'Preserve balance sign')], 'Sign on Reports', size=1, required=True, help='For accounts that are typically more debited than credited and that you would like to print as negative amounts in your reports, you should reverse the sign of the balance; e.g.: Expense account. The same applies for accounts that are typically more credited than debited and that you would like to print as positive amounts in your reports; e.g.: Income account.'),
118 'display_detail': fields.selection([118 'display_detail': fields.selection([
119 ('no_detail','No detail'),119 ('no_detail','No detail'),
120 ('detail_flat','Display children flat'),120 ('detail_flat','Display children flat'),
121 ('detail_with_hierarchy','Display children with hierarchy')121 ('detail_with_hierarchy','Display children with hierarchy')
122 ], 'Display details'),122 ], 'Display details', size=21),
123 'style_overwrite': fields.selection([123 'style_overwrite': fields.selection([
124 (0, 'Automatic formatting'),124 (0, 'Automatic formatting'),
125 (1,'Main Title 1 (bold, underlined)'),125 (1,'Main Title 1 (bold, underlined)'),
@@ -128,7 +128,7 @@
128 (4,'Normal Text'),128 (4,'Normal Text'),
129 (5,'Italic Text (smaller)'),129 (5,'Italic Text (smaller)'),
130 (6,'Smallest Text'),130 (6,'Smallest Text'),
131 ],'Financial Report Style', help="You can set up here the format you want this record to be displayed. If you leave the automatic formatting, it will be computed based on the financial reports hierarchy (auto-computed field 'level')."),131 ],'Financial Report Style', size=1, help="You can set up here the format you want this record to be displayed. If you leave the automatic formatting, it will be computed based on the financial reports hierarchy (auto-computed field 'level')."),
132 }132 }
133133
134 _defaults = {134 _defaults = {
135135
=== modified file 'account/account_invoice.py'
--- account/account_invoice.py 2014-05-07 17:01:12 +0000
+++ account/account_invoice.py 2014-05-12 18:39:30 +0000
@@ -226,8 +226,8 @@
226 },226 },
227 }227 }
228 _columns = {228 _columns = {
229 'name': fields.char('Reference/Description', size=64, select=True, readonly=True, states={'draft':[('readonly',False)]}),229 'name': fields.char('Reference/Description', select=True, readonly=True, states={'draft':[('readonly',False)]}),
230 'origin': fields.char('Source Document', size=64, help="Reference of the document that produced this invoice.", readonly=True, states={'draft':[('readonly',False)]}),230 'origin': fields.char('Source Document', help="Reference of the document that produced this invoice.", readonly=True, states={'draft':[('readonly',False)]}),
231 'supplier_invoice_number': fields.char('Supplier Invoice Number', size=64, help="The reference of this invoice as provided by the supplier.", readonly=True, states={'draft':[('readonly',False)]}),231 'supplier_invoice_number': fields.char('Supplier Invoice Number', size=64, help="The reference of this invoice as provided by the supplier.", readonly=True, states={'draft':[('readonly',False)]}),
232 'type': fields.selection([232 'type': fields.selection([
233 ('out_invoice','Customer Invoice'),233 ('out_invoice','Customer Invoice'),
@@ -237,10 +237,10 @@
237 ],'Type', readonly=True, select=True, change_default=True, track_visibility='always'),237 ],'Type', readonly=True, select=True, change_default=True, track_visibility='always'),
238238
239 'number': fields.related('move_id','name', type='char', readonly=True, size=64, relation='account.move', store=True, string='Number'),239 'number': fields.related('move_id','name', type='char', readonly=True, size=64, relation='account.move', store=True, string='Number'),
240 'internal_number': fields.char('Invoice Number', size=32, readonly=True, help="Unique number of the invoice, computed automatically when the invoice is created."),240 'internal_number': fields.char('Invoice Number', readonly=True, help="Unique number of the invoice, computed automatically when the invoice is created."),
241 'reference': fields.char('Invoice Reference', size=64, help="The partner reference of this invoice."),241 'reference': fields.char('Invoice Reference', help="The partner reference of this invoice."),
242 'reference_type': fields.selection(_get_reference_type, 'Payment Reference',242 'reference_type': fields.selection(_get_reference_type, 'Payment Reference',
243 required=True, readonly=True, states={'draft':[('readonly',False)]}),243 size=4, required=True, readonly=True, states={'draft':[('readonly',False)]}),
244 'comment': fields.text('Additional Information'),244 'comment': fields.text('Additional Information'),
245245
246 'state': fields.selection([246 'state': fields.selection([
@@ -250,7 +250,7 @@
250 ('open','Open'),250 ('open','Open'),
251 ('paid','Paid'),251 ('paid','Paid'),
252 ('cancel','Cancelled'),252 ('cancel','Cancelled'),
253 ],'Status', select=True, readonly=True, track_visibility='onchange',253 ],'Status', select=True, size=9, readonly=True, track_visibility='onchange',
254 help=' * The \'Draft\' status is used when a user is encoding a new and unconfirmed Invoice. \254 help=' * The \'Draft\' status is used when a user is encoding a new and unconfirmed Invoice. \
255 \n* The \'Pro-forma\' when invoice is in Pro-forma status,invoice does not have an invoice number. \255 \n* The \'Pro-forma\' when invoice is in Pro-forma status,invoice does not have an invoice number. \
256 \n* The \'Open\' status is used when user create invoice,a invoice number is generated.Its in open status till user does not pay invoice. \256 \n* The \'Open\' status is used when user create invoice,a invoice number is generated.Its in open status till user does not pay invoice. \
@@ -317,7 +317,7 @@
317 },317 },
318 help="Remaining amount due."),318 help="Remaining amount due."),
319 'payment_ids': fields.function(_compute_lines, relation='account.move.line', type="many2many", string='Payments'),319 'payment_ids': fields.function(_compute_lines, relation='account.move.line', type="many2many", string='Payments'),
320 'move_name': fields.char('Journal Entry', size=64, readonly=True, states={'draft':[('readonly',False)]}),320 'move_name': fields.char('Journal Entry', readonly=True, states={'draft':[('readonly',False)]}),
321 'user_id': fields.many2one('res.users', 'Salesperson', readonly=True, track_visibility='onchange', states={'draft':[('readonly',False)]}),321 'user_id': fields.many2one('res.users', 'Salesperson', readonly=True, track_visibility='onchange', states={'draft':[('readonly',False)]}),
322 'fiscal_position': fields.many2one('account.fiscal.position', 'Fiscal Position', readonly=True, states={'draft':[('readonly',False)]}),322 'fiscal_position': fields.many2one('account.fiscal.position', 'Fiscal Position', readonly=True, states={'draft':[('readonly',False)]}),
323 'commercial_partner_id': fields.related('partner_id', 'commercial_partner_id', string='Commercial Entity', type='many2one',323 'commercial_partner_id': fields.related('partner_id', 'commercial_partner_id', string='Commercial Entity', type='many2one',
@@ -1413,7 +1413,7 @@
1413 _order = "invoice_id,sequence,id"1413 _order = "invoice_id,sequence,id"
1414 _columns = {1414 _columns = {
1415 'name': fields.text('Description', required=True),1415 'name': fields.text('Description', required=True),
1416 'origin': fields.char('Source Document', size=256, help="Reference of the document that produced this invoice."),1416 'origin': fields.char('Source Document', help="Reference of the document that produced this invoice."),
1417 'sequence': fields.integer('Sequence', help="Gives the sequence of this line when displaying the invoice."),1417 'sequence': fields.integer('Sequence', help="Gives the sequence of this line when displaying the invoice."),
1418 'invoice_id': fields.many2one('account.invoice', 'Invoice Reference', ondelete='cascade', select=True),1418 'invoice_id': fields.many2one('account.invoice', 'Invoice Reference', ondelete='cascade', select=True),
1419 'uos_id': fields.many2one('product.uom', 'Unit of Measure', ondelete='set null', select=True),1419 'uos_id': fields.many2one('product.uom', 'Unit of Measure', ondelete='set null', select=True),
@@ -1658,7 +1658,7 @@
16581658
1659 _columns = {1659 _columns = {
1660 'invoice_id': fields.many2one('account.invoice', 'Invoice Line', ondelete='cascade', select=True),1660 'invoice_id': fields.many2one('account.invoice', 'Invoice Line', ondelete='cascade', select=True),
1661 'name': fields.char('Tax Description', size=64, required=True),1661 'name': fields.char('Tax Description', required=True),
1662 'account_id': fields.many2one('account.account', 'Tax Account', required=True, domain=[('type','<>','view'),('type','<>','income'), ('type', '<>', 'closed')]),1662 'account_id': fields.many2one('account.account', 'Tax Account', required=True, domain=[('type','<>','view'),('type','<>','income'), ('type', '<>', 'closed')]),
1663 'account_analytic_id': fields.many2one('account.analytic.account', 'Analytic account'),1663 'account_analytic_id': fields.many2one('account.analytic.account', 'Analytic account'),
1664 'base': fields.float('Base', digits_compute=dp.get_precision('Account')),1664 'base': fields.float('Base', digits_compute=dp.get_precision('Account')),
16651665
=== modified file 'account/account_move_line.py'
--- account/account_move_line.py 2014-05-07 17:01:12 +0000
+++ account/account_move_line.py 2014-05-12 18:39:30 +0000
@@ -445,7 +445,7 @@
445445
446446
447 _columns = {447 _columns = {
448 'name': fields.char('Name', size=64, required=True),448 'name': fields.char('Name', required=True),
449 'quantity': fields.float('Quantity', digits=(16,2), help="The optional quantity expressed by this line, eg: number of product sold. The quantity is not a legal requirement but is very useful for some reports."),449 'quantity': fields.float('Quantity', digits=(16,2), help="The optional quantity expressed by this line, eg: number of product sold. The quantity is not a legal requirement but is very useful for some reports."),
450 'product_uom_id': fields.many2one('product.uom', 'Unit of Measure'),450 'product_uom_id': fields.many2one('product.uom', 'Unit of Measure'),
451 'product_id': fields.many2one('product.product', 'Product'),451 'product_id': fields.many2one('product.product', 'Product'),
@@ -454,7 +454,7 @@
454 'account_id': fields.many2one('account.account', 'Account', required=True, ondelete="cascade", domain=[('type','<>','view'), ('type', '<>', 'closed')], select=2),454 'account_id': fields.many2one('account.account', 'Account', required=True, ondelete="cascade", domain=[('type','<>','view'), ('type', '<>', 'closed')], select=2),
455 'move_id': fields.many2one('account.move', 'Journal Entry', ondelete="cascade", help="The move of this entry line.", select=2, required=True),455 'move_id': fields.many2one('account.move', 'Journal Entry', ondelete="cascade", help="The move of this entry line.", select=2, required=True),
456 'narration': fields.related('move_id','narration', type='text', relation='account.move', string='Internal Note'),456 'narration': fields.related('move_id','narration', type='text', relation='account.move', string='Internal Note'),
457 'ref': fields.related('move_id', 'ref', string='Reference', type='char', size=64, store=True),457 'ref': fields.related('move_id', 'ref', string='Reference', type='char', store=True),
458 'statement_id': fields.many2one('account.bank.statement', 'Statement', help="The bank statement used for bank reconciliation", select=1),458 'statement_id': fields.many2one('account.bank.statement', 'Statement', help="The bank statement used for bank reconciliation", select=1),
459 'reconcile_id': fields.many2one('account.move.reconcile', 'Reconcile', readonly=True, ondelete='set null', select=2),459 'reconcile_id': fields.many2one('account.move.reconcile', 'Reconcile', readonly=True, ondelete='set null', select=2),
460 'reconcile_partial_id': fields.many2one('account.move.reconcile', 'Partial Reconcile', readonly=True, ondelete='set null', select=2),460 'reconcile_partial_id': fields.many2one('account.move.reconcile', 'Partial Reconcile', readonly=True, ondelete='set null', select=2),
@@ -483,7 +483,7 @@
483 'analytic_lines': fields.one2many('account.analytic.line', 'move_id', 'Analytic lines'),483 'analytic_lines': fields.one2many('account.analytic.line', 'move_id', 'Analytic lines'),
484 'centralisation': fields.selection([('normal','Normal'),('credit','Credit Centralisation'),('debit','Debit Centralisation'),('currency','Currency Adjustment')], 'Centralisation', size=8),484 'centralisation': fields.selection([('normal','Normal'),('credit','Credit Centralisation'),('debit','Debit Centralisation'),('currency','Currency Adjustment')], 'Centralisation', size=8),
485 'balance': fields.function(_balance, fnct_search=_balance_search, string='Balance'),485 'balance': fields.function(_balance, fnct_search=_balance_search, string='Balance'),
486 'state': fields.selection([('draft','Unbalanced'), ('valid','Balanced')], 'Status', readonly=True),486 'state': fields.selection([('draft','Unbalanced'), ('valid','Balanced')], 'Status', size=5, readonly=True),
487 'tax_code_id': fields.many2one('account.tax.code', 'Tax Account', help="The Account can either be a base tax code or a tax code account."),487 'tax_code_id': fields.many2one('account.tax.code', 'Tax Account', help="The Account can either be a base tax code or a tax code account."),
488 'tax_amount': fields.float('Tax/Base Amount', digits_compute=dp.get_precision('Account'), select=True, help="If the Tax account is a tax code account, this field will contain the taxed amount.If the tax account is base tax code, "\488 'tax_amount': fields.float('Tax/Base Amount', digits_compute=dp.get_precision('Account'), select=True, help="If the Tax account is a tax code account, this field will contain the taxed amount.If the tax account is base tax code, "\
489 "this field will contain the basic amount(without tax)."),489 "this field will contain the basic amount(without tax)."),
490490
=== modified file 'account/company.py'
--- account/company.py 2013-10-27 12:31:04 +0000
+++ account/company.py 2014-05-12 18:39:30 +0000
@@ -28,7 +28,7 @@
28 'tax_calculation_rounding_method': fields.selection([28 'tax_calculation_rounding_method': fields.selection([
29 ('round_per_line', 'Round per Line'),29 ('round_per_line', 'Round per Line'),
30 ('round_globally', 'Round Globally'),30 ('round_globally', 'Round Globally'),
31 ], 'Tax Calculation Rounding Method',31 ], 'Tax Calculation Rounding Method', size=14,
32 help="If you select 'Round per Line' : for each tax, the tax amount will first be computed and rounded for each PO/SO/invoice line and then these rounded amounts will be summed, leading to the total amount for that tax. If you select 'Round Globally': for each tax, the tax amount will be computed for each PO/SO/invoice line, then these amounts will be summed and eventually this total tax amount will be rounded. If you sell with tax included, you should choose 'Round per line' because you certainly want the sum of your tax-included line subtotals to be equal to the total amount with taxes."),32 help="If you select 'Round per Line' : for each tax, the tax amount will first be computed and rounded for each PO/SO/invoice line and then these rounded amounts will be summed, leading to the total amount for that tax. If you select 'Round Globally': for each tax, the tax amount will be computed for each PO/SO/invoice line, then these amounts will be summed and eventually this total tax amount will be rounded. If you sell with tax included, you should choose 'Round per line' because you certainly want the sum of your tax-included line subtotals to be equal to the total amount with taxes."),
33 'paypal_account': fields.char("Paypal Account", size=128, help="Paypal username (usually email) for receiving online payments."),33 'paypal_account': fields.char("Paypal Account", size=128, help="Paypal username (usually email) for receiving online payments."),
34 'overdue_msg': fields.text('Overdue Payments Message', translate=True),34 'overdue_msg': fields.text('Overdue Payments Message', translate=True),
3535
=== modified file 'account/installer.py'
--- account/installer.py 2014-04-10 10:36:38 +0000
+++ account/installer.py 2014-05-12 18:39:30 +0000
@@ -72,13 +72,13 @@
72 _columns = {72 _columns = {
73 # Accounting73 # Accounting
74 'charts': fields.selection(_get_charts, 'Accounting Package',74 'charts': fields.selection(_get_charts, 'Accounting Package',
75 required=True,75 required=True, size=32,
76 help="Installs localized accounting charts to match as closely as "76 help="Installs localized accounting charts to match as closely as "
77 "possible the accounting needs of your company based on your "77 "possible the accounting needs of your company based on your "
78 "country."),78 "country."),
79 'date_start': fields.date('Start Date', required=True),79 'date_start': fields.date('Start Date', required=True),
80 'date_stop': fields.date('End Date', required=True),80 'date_stop': fields.date('End Date', required=True),
81 'period': fields.selection([('month', 'Monthly'), ('3months', '3 Monthly')], 'Periods', required=True),81 'period': fields.selection([('month', 'Monthly'), ('3months', '3 Monthly')], 'Periods', size=7, required=True),
82 'company_id': fields.many2one('res.company', 'Company', required=True),82 'company_id': fields.many2one('res.company', 'Company', required=True),
83 'has_default_company': fields.boolean('Has Default Company', readonly=True),83 'has_default_company': fields.boolean('Has Default Company', readonly=True),
84 }84 }
8585
=== modified file 'account/partner.py'
--- account/partner.py 2014-05-07 18:29:17 +0000
+++ account/partner.py 2014-05-12 18:39:30 +0000
@@ -28,7 +28,7 @@
28 _name = 'account.fiscal.position'28 _name = 'account.fiscal.position'
29 _description = 'Fiscal Position'29 _description = 'Fiscal Position'
30 _columns = {30 _columns = {
31 'name': fields.char('Fiscal Position', size=64, required=True),31 'name': fields.char('Fiscal Position', required=True),
32 'active': fields.boolean('Active', help="By unchecking the active field, you may hide a fiscal position without deleting it."),32 'active': fields.boolean('Active', help="By unchecking the active field, you may hide a fiscal position without deleting it."),
33 'company_id': fields.many2one('res.company', 'Company'),33 'company_id': fields.many2one('res.company', 'Company'),
34 'account_ids': fields.one2many('account.fiscal.position.account', 'position_id', 'Account Mapping'),34 'account_ids': fields.one2many('account.fiscal.position.account', 'position_id', 'Account Mapping'),
3535
=== modified file 'account/project/project.py'
--- account/project/project.py 2013-10-27 12:31:04 +0000
+++ account/project/project.py 2014-05-12 18:39:30 +0000
@@ -25,10 +25,10 @@
25 _name = 'account.analytic.journal'25 _name = 'account.analytic.journal'
26 _description = 'Analytic Journal'26 _description = 'Analytic Journal'
27 _columns = {27 _columns = {
28 'name': fields.char('Journal Name', size=64, required=True),28 'name': fields.char('Journal Name', required=True),
29 'code': fields.char('Journal Code', size=8),29 'code': fields.char('Journal Code', size=8),
30 'active': fields.boolean('Active', help="If the active field is set to False, it will allow you to hide the analytic journal without removing it."),30 'active': fields.boolean('Active', help="If the active field is set to False, it will allow you to hide the analytic journal without removing it."),
31 'type': fields.selection([('sale','Sale'), ('purchase','Purchase'), ('cash','Cash'), ('general','General'), ('situation','Situation')], 'Type', size=32, required=True, help="Gives the type of the analytic journal. When it needs for a document (eg: an invoice) to create analytic entries, OpenERP will look for a matching journal of the same type."),31 'type': fields.selection([('sale','Sale'), ('purchase','Purchase'), ('cash','Cash'), ('general','General'), ('situation','Situation')], 'Type', size=9, required=True, help="Gives the type of the analytic journal. When it needs for a document (eg: an invoice) to create analytic entries, OpenERP will look for a matching journal of the same type."),
32 'line_ids': fields.one2many('account.analytic.line', 'journal_id', 'Lines'),32 'line_ids': fields.one2many('account.analytic.line', 'journal_id', 'Lines'),
33 'company_id': fields.many2one('res.company', 'Company', required=True),33 'company_id': fields.many2one('res.company', 'Company', required=True),
34 }34 }
3535
=== modified file 'account/report/account_entries_report.py'
--- account/report/account_entries_report.py 2014-04-09 10:30:45 +0000
+++ account/report/account_entries_report.py 2014-05-12 18:39:30 +0000
@@ -32,7 +32,7 @@
32 'date': fields.date('Effective Date', readonly=True),32 'date': fields.date('Effective Date', readonly=True),
33 'date_created': fields.date('Date Created', readonly=True),33 'date_created': fields.date('Date Created', readonly=True),
34 'date_maturity': fields.date('Date Maturity', readonly=True),34 'date_maturity': fields.date('Date Maturity', readonly=True),
35 'ref': fields.char('Reference', size=64, readonly=True),35 'ref': fields.char('Reference', readonly=True),
36 'nbr': fields.integer('# of Items', readonly=True),36 'nbr': fields.integer('# of Items', readonly=True),
37 'debit': fields.float('Debit', readonly=True),37 'debit': fields.float('Debit', readonly=True),
38 'credit': fields.float('Credit', readonly=True),38 'credit': fields.float('Credit', readonly=True),
@@ -44,15 +44,15 @@
44 'amount_currency': fields.float('Amount Currency', digits_compute=dp.get_precision('Account'), readonly=True),44 'amount_currency': fields.float('Amount Currency', digits_compute=dp.get_precision('Account'), readonly=True),
45 'month':fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'),45 'month':fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'),
46 ('05','May'), ('06','June'), ('07','July'), ('08','August'), ('09','September'),46 ('05','May'), ('06','June'), ('07','July'), ('08','August'), ('09','September'),
47 ('10','October'), ('11','November'), ('12','December')], 'Month', readonly=True),47 ('10','October'), ('11','November'), ('12','December')], 'Month', size=2, readonly=True),
48 'period_id': fields.many2one('account.period', 'Period', readonly=True),48 'period_id': fields.many2one('account.period', 'Period', readonly=True),
49 'account_id': fields.many2one('account.account', 'Account', readonly=True),49 'account_id': fields.many2one('account.account', 'Account', readonly=True),
50 'journal_id': fields.many2one('account.journal', 'Journal', readonly=True),50 'journal_id': fields.many2one('account.journal', 'Journal', readonly=True),
51 'fiscalyear_id': fields.many2one('account.fiscalyear', 'Fiscal Year', readonly=True),51 'fiscalyear_id': fields.many2one('account.fiscalyear', 'Fiscal Year', readonly=True),
52 'product_id': fields.many2one('product.product', 'Product', readonly=True),52 'product_id': fields.many2one('product.product', 'Product', readonly=True),
53 'product_uom_id': fields.many2one('product.uom', 'Product Unit of Measure', readonly=True),53 'product_uom_id': fields.many2one('product.uom', 'Product Unit of Measure', readonly=True),
54 'move_state': fields.selection([('draft','Unposted'), ('posted','Posted')], 'Status', readonly=True),54 'move_state': fields.selection([('draft','Unposted'), ('posted','Posted')], 'Status', size=6, readonly=True),
55 'move_line_state': fields.selection([('draft','Unbalanced'), ('valid','Valid')], 'State of Move Line', readonly=True),55 'move_line_state': fields.selection([('draft','Unbalanced'), ('valid','Valid')], 'State of Move Line', size=5, readonly=True),
56 'reconcile_id': fields.many2one('account.move.reconcile', readonly=True),56 'reconcile_id': fields.many2one('account.move.reconcile', readonly=True),
57 'partner_id': fields.many2one('res.partner','Partner', readonly=True),57 'partner_id': fields.many2one('res.partner','Partner', readonly=True),
58 'analytic_account_id': fields.many2one('account.analytic.account', 'Analytic Account', readonly=True),58 'analytic_account_id': fields.many2one('account.analytic.account', 'Analytic Account', readonly=True),
@@ -66,7 +66,7 @@
66 ('consolidation', 'Consolidation'),66 ('consolidation', 'Consolidation'),
67 ('other', 'Regular'),67 ('other', 'Regular'),
68 ('closed', 'Closed'),68 ('closed', 'Closed'),
69 ], 'Internal Type', readonly=True, help="This type is used to differentiate types with "\69 ], 'Internal Type', readonly=True, size=13, help="This type is used to differentiate types with "\
70 "special effects in OpenERP: view can not have entries, consolidation are accounts that "\70 "special effects in OpenERP: view can not have entries, consolidation are accounts that "\
71 "can have children accounts for multi-company consolidations, payable/receivable are for "\71 "can have children accounts for multi-company consolidations, payable/receivable are for "\
72 "partners accounts (for debit/credit computations), closed for depreciated accounts."),72 "partners accounts (for debit/credit computations), closed for depreciated accounts."),
7373
=== modified file 'account/report/account_invoice_report.py'
--- account/report/account_invoice_report.py 2014-01-29 16:03:48 +0000
+++ account/report/account_invoice_report.py 2014-05-12 18:39:30 +0000
@@ -79,7 +79,7 @@
79 ('in_invoice','Supplier Invoice'),79 ('in_invoice','Supplier Invoice'),
80 ('out_refund','Customer Refund'),80 ('out_refund','Customer Refund'),
81 ('in_refund','Supplier Refund'),81 ('in_refund','Supplier Refund'),
82 ],'Type', readonly=True),82 ],'Type', readonly=True, size=11),
83 'state': fields.selection([83 'state': fields.selection([
84 ('draft','Draft'),84 ('draft','Draft'),
85 ('proforma','Pro-forma'),85 ('proforma','Pro-forma'),
@@ -87,7 +87,7 @@
87 ('open','Open'),87 ('open','Open'),
88 ('paid','Done'),88 ('paid','Done'),
89 ('cancel','Cancelled')89 ('cancel','Cancelled')
90 ], 'Invoice Status', readonly=True),90 ], 'Invoice Status', size=9, readonly=True),
91 'date_due': fields.date('Due Date', readonly=True),91 'date_due': fields.date('Due Date', readonly=True),
92 'account_id': fields.many2one('account.account', 'Account',readonly=True),92 'account_id': fields.many2one('account.account', 'Account',readonly=True),
93 'account_line_id': fields.many2one('account.account', 'Account Line',readonly=True),93 'account_line_id': fields.many2one('account.account', 'Account Line',readonly=True),
9494
=== modified file 'account/report/account_report.py'
--- account/report/account_report.py 2013-10-27 12:31:04 +0000
+++ account/report/account_report.py 2014-05-12 18:39:30 +0000
@@ -39,7 +39,7 @@
39 _auto = False39 _auto = False
40 _columns = {40 _columns = {
41 'name': fields.char('Week of Year', size=7, readonly=True),41 'name': fields.char('Week of Year', size=7, readonly=True),
42 'type': fields.selection(_code_get, 'Account Type', required=True),42 'type': fields.selection(_code_get, 'Account Type', size=32, required=True),
43 'balance':fields.float('Balance', readonly=True),43 'balance':fields.float('Balance', readonly=True),
44 'debit':fields.float('Debit', readonly=True),44 'debit':fields.float('Debit', readonly=True),
45 'credit':fields.float('Credit', readonly=True),45 'credit':fields.float('Credit', readonly=True),
@@ -73,7 +73,7 @@
73 _description = 'A Temporary table used for Dashboard view'73 _description = 'A Temporary table used for Dashboard view'
7474
75 _columns = {75 _columns = {
76 'name': fields.char('Range',size=64)76 'name': fields.char('Range')
77 }77 }
7878
7979
@@ -112,7 +112,7 @@
112 return res112 return res
113113
114 _columns = {114 _columns = {
115 'name': fields.char('Month Range', size=7, readonly=True),115 'name': fields.char('Month Range', size=24, readonly=True),
116 'balance': fields.function(_calc_bal, string='Balance', readonly=True),116 'balance': fields.function(_calc_bal, string='Balance', readonly=True),
117 }117 }
118118
@@ -151,14 +151,14 @@
151 _description = "Report of Invoices Created within Last 15 days"151 _description = "Report of Invoices Created within Last 15 days"
152 _auto = False152 _auto = False
153 _columns = {153 _columns = {
154 'name': fields.char('Description', size=64, readonly=True),154 'name': fields.char('Description', readonly=True),
155 'type': fields.selection([155 'type': fields.selection([
156 ('out_invoice','Customer Invoice'),156 ('out_invoice','Customer Invoice'),
157 ('in_invoice','Supplier Invoice'),157 ('in_invoice','Supplier Invoice'),
158 ('out_refund','Customer Refund'),158 ('out_refund','Customer Refund'),
159 ('in_refund','Supplier Refund'),159 ('in_refund','Supplier Refund'),
160 ],'Type', readonly=True),160 ],'Type', readonly=True, size=11),
161 'number': fields.char('Invoice Number', size=32, readonly=True),161 'number': fields.char('Invoice Number', readonly=True),
162 'partner_id': fields.many2one('res.partner', 'Partner', readonly=True),162 'partner_id': fields.many2one('res.partner', 'Partner', readonly=True),
163 'amount_untaxed': fields.float('Untaxed', readonly=True),163 'amount_untaxed': fields.float('Untaxed', readonly=True),
164 'amount_total': fields.float('Total', readonly=True),164 'amount_total': fields.float('Total', readonly=True),
@@ -173,8 +173,8 @@
173 ('open','Open'),173 ('open','Open'),
174 ('paid','Done'),174 ('paid','Done'),
175 ('cancel','Cancelled')175 ('cancel','Cancelled')
176 ],'Status', readonly=True),176 ],'Status', size=9, readonly=True),
177 'origin': fields.char('Source Document', size=64, readonly=True, help="Reference of the document that generated this invoice report."),177 'origin': fields.char('Source Document', readonly=True, help="Reference of the document that generated this invoice report."),
178 'create_date': fields.datetime('Create Date', readonly=True)178 'create_date': fields.datetime('Create Date', readonly=True)
179 }179 }
180 _order = 'create_date'180 _order = 'create_date'
@@ -203,7 +203,7 @@
203 _description = "Report of the Sales by Account Type"203 _description = "Report of the Sales by Account Type"
204 _auto = False204 _auto = False
205 _columns = {205 _columns = {
206 'name': fields.char('Year', size=64, required=False, readonly=True),206 'name': fields.char('Year', required=False, readonly=True),
207 'period_id': fields.many2one('account.period', 'Force Period', readonly=True),207 'period_id': fields.many2one('account.period', 'Force Period', readonly=True),
208 'product_id': fields.many2one('product.product', 'Product', readonly=True),208 'product_id': fields.many2one('product.product', 'Product', readonly=True),
209 'quantity': fields.float('Quantity', readonly=True),209 'quantity': fields.float('Quantity', readonly=True),
@@ -211,7 +211,7 @@
211 'amount_total': fields.float('Total', readonly=True),211 'amount_total': fields.float('Total', readonly=True),
212 'currency_id': fields.many2one('res.currency', 'Currency', readonly=True),212 'currency_id': fields.many2one('res.currency', 'Currency', readonly=True),
213 'month':fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'), ('05','May'), ('06','June'),213 'month':fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'), ('05','May'), ('06','June'),
214 ('07','July'), ('08','August'), ('09','September'), ('10','October'), ('11','November'), ('12','December')], 'Month', readonly=True),214 ('07','July'), ('08','August'), ('09','September'), ('10','October'), ('11','November'), ('12','December')], 'Month', size=2, readonly=True),
215 }215 }
216 _order = 'name desc,amount_total desc'216 _order = 'name desc,amount_total desc'
217217
@@ -244,7 +244,7 @@
244 _description = "Report of the Sales by Account"244 _description = "Report of the Sales by Account"
245 _auto = False245 _auto = False
246 _columns = {246 _columns = {
247 'name': fields.char('Year', size=64, required=False, readonly=True, select=True),247 'name': fields.char('Year', required=False, readonly=True, select=True),
248 'period_id': fields.many2one('account.period', 'Force Period', readonly=True),248 'period_id': fields.many2one('account.period', 'Force Period', readonly=True),
249 'product_id': fields.many2one('product.product', 'Product', readonly=True),249 'product_id': fields.many2one('product.product', 'Product', readonly=True),
250 'quantity': fields.float('Quantity', readonly=True),250 'quantity': fields.float('Quantity', readonly=True),
@@ -252,7 +252,7 @@
252 'amount_total': fields.float('Total', readonly=True),252 'amount_total': fields.float('Total', readonly=True),
253 'currency_id': fields.many2one('res.currency', 'Currency', readonly=True),253 'currency_id': fields.many2one('res.currency', 'Currency', readonly=True),
254 'month':fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'), ('05','May'), ('06','June'),254 'month':fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'), ('05','May'), ('06','June'),
255 ('07','July'), ('08','August'), ('09','September'), ('10','October'), ('11','November'), ('12','December')], 'Month', readonly=True),255 ('07','July'), ('08','August'), ('09','September'), ('10','October'), ('11','November'), ('12','December')], 'Month', size=2, readonly=True),
256 }256 }
257 _order = 'name desc'257 _order = 'name desc'
258258
259259
=== modified file 'account/res_config.py'
--- account/res_config.py 2014-04-23 11:40:53 +0000
+++ account/res_config.py 2014-05-12 18:39:30 +0000
@@ -64,7 +64,7 @@
64 'has_fiscal_year': fields.boolean('Company has a fiscal year'),64 'has_fiscal_year': fields.boolean('Company has a fiscal year'),
65 'date_start': fields.date('Start date', required=True),65 'date_start': fields.date('Start date', required=True),
66 'date_stop': fields.date('End date', required=True),66 'date_stop': fields.date('End date', required=True),
67 'period': fields.selection([('month', 'Monthly'), ('3months','3 Monthly')], 'Periods', required=True),67 'period': fields.selection([('month', 'Monthly'), ('3months','3 Monthly')], 'Periods', size=7, required=True),
6868
69 'sale_journal_id': fields.many2one('account.journal', 'Sale journal'),69 'sale_journal_id': fields.many2one('account.journal', 'Sale journal'),
70 'sale_sequence_prefix': fields.related('sale_journal_id', 'sequence_id', 'prefix', type='char', string='Invoice sequence'),70 'sale_sequence_prefix': fields.related('sale_journal_id', 'sequence_id', 'prefix', type='char', string='Invoice sequence'),
7171
=== modified file 'account/wizard/account_automatic_reconcile.py'
--- account/wizard/account_automatic_reconcile.py 2013-10-27 12:31:04 +0000
+++ account/wizard/account_automatic_reconcile.py 2014-05-12 18:39:30 +0000
@@ -34,7 +34,7 @@
34 'journal_id': fields.many2one('account.journal', 'Journal'),34 'journal_id': fields.many2one('account.journal', 'Journal'),
35 'period_id': fields.many2one('account.period', 'Period'),35 'period_id': fields.many2one('account.period', 'Period'),
36 'max_amount': fields.float('Maximum write-off amount'),36 'max_amount': fields.float('Maximum write-off amount'),
37 'power': fields.selection([(p, str(p)) for p in range(2, 5)], 'Power', required=True, help='Number of partial amounts that can be combined to find a balance point can be chosen as the power of the automatic reconciliation'),37 'power': fields.selection([(p, str(p)) for p in range(2, 5)], 'Power', size=1, required=True, help='Number of partial amounts that can be combined to find a balance point can be chosen as the power of the automatic reconciliation'),
38 'reconciled': fields.integer('Reconciled transactions', readonly=True),38 'reconciled': fields.integer('Reconciled transactions', readonly=True),
39 'unreconciled': fields.integer('Not reconciled transactions', readonly=True),39 'unreconciled': fields.integer('Not reconciled transactions', readonly=True),
40 'allow_write_off': fields.boolean('Allow write off')40 'allow_write_off': fields.boolean('Allow write off')
4141
=== modified file 'account/wizard/account_chart.py'
--- account/wizard/account_chart.py 2013-10-27 12:31:04 +0000
+++ account/wizard/account_chart.py 2014-05-12 18:39:30 +0000
@@ -35,7 +35,7 @@
35 'period_to': fields.many2one('account.period', 'End period'),35 'period_to': fields.many2one('account.period', 'End period'),
36 'target_move': fields.selection([('posted', 'All Posted Entries'),36 'target_move': fields.selection([('posted', 'All Posted Entries'),
37 ('all', 'All Entries'),37 ('all', 'All Entries'),
38 ], 'Target Moves', required=True),38 ], 'Target Moves', size=6, required=True),
39 }39 }
4040
41 def _get_fiscalyear(self, cr, uid, context=None):41 def _get_fiscalyear(self, cr, uid, context=None):
4242
=== modified file 'account/wizard/account_financial_report.py'
--- account/wizard/account_financial_report.py 2014-05-02 13:03:10 +0000
+++ account/wizard/account_financial_report.py 2014-05-12 18:39:30 +0000
@@ -30,9 +30,9 @@
30 _columns = {30 _columns = {
31 'enable_filter': fields.boolean('Enable Comparison'),31 'enable_filter': fields.boolean('Enable Comparison'),
32 'account_report_id': fields.many2one('account.financial.report', 'Account Reports', required=True),32 'account_report_id': fields.many2one('account.financial.report', 'Account Reports', required=True),
33 'label_filter': fields.char('Column Label', size=32, help="This label will be displayed on report to show the balance computed for the given comparison filter."),33 'label_filter': fields.char('Column Label', help="This label will be displayed on report to show the balance computed for the given comparison filter."),
34 'fiscalyear_id_cmp': fields.many2one('account.fiscalyear', 'Fiscal Year', help='Keep empty for all open fiscal year'),34 'fiscalyear_id_cmp': fields.many2one('account.fiscalyear', 'Fiscal Year', help='Keep empty for all open fiscal year'),
35 'filter_cmp': fields.selection([('filter_no', 'No Filters'), ('filter_date', 'Date'), ('filter_period', 'Periods')], "Filter by", required=True),35 'filter_cmp': fields.selection([('filter_no', 'No Filters'), ('filter_date', 'Date'), ('filter_period', 'Periods')], "Filter by", size=13, required=True),
36 'period_from_cmp': fields.many2one('account.period', 'Start Period'),36 'period_from_cmp': fields.many2one('account.period', 'Start Period'),
37 'period_to_cmp': fields.many2one('account.period', 'End Period'),37 'period_to_cmp': fields.many2one('account.period', 'End Period'),
38 'date_from_cmp': fields.date("Start Date"),38 'date_from_cmp': fields.date("Start Date"),
3939
=== modified file 'account/wizard/account_fiscalyear_close.py'
--- account/wizard/account_fiscalyear_close.py 2014-01-15 21:44:54 +0000
+++ account/wizard/account_fiscalyear_close.py 2014-05-12 18:39:30 +0000
@@ -35,7 +35,7 @@
35 'New Fiscal Year', required=True),35 'New Fiscal Year', required=True),
36 'journal_id': fields.many2one('account.journal', 'Opening Entries Journal', domain="[('type','=','situation')]", required=True, help='The best practice here is to use a journal dedicated to contain the opening entries of all fiscal years. Note that you should define it with default debit/credit accounts, of type \'situation\' and with a centralized counterpart.'),36 'journal_id': fields.many2one('account.journal', 'Opening Entries Journal', domain="[('type','=','situation')]", required=True, help='The best practice here is to use a journal dedicated to contain the opening entries of all fiscal years. Note that you should define it with default debit/credit accounts, of type \'situation\' and with a centralized counterpart.'),
37 'period_id': fields.many2one('account.period', 'Opening Entries Period', required=True),37 'period_id': fields.many2one('account.period', 'Opening Entries Period', required=True),
38 'report_name': fields.char('Name of new entries',size=64, required=True, help="Give name of the new entries"),38 'report_name': fields.char('Name of new entries', required=True, help="Give name of the new entries"),
39 }39 }
40 _defaults = {40 _defaults = {
41 'report_name': lambda self, cr, uid, context: _('End of Fiscal Year Entry'),41 'report_name': lambda self, cr, uid, context: _('End of Fiscal Year Entry'),
4242
=== modified file 'account/wizard/account_invoice_refund.py'
--- account/wizard/account_invoice_refund.py 2014-04-15 10:14:27 +0000
+++ account/wizard/account_invoice_refund.py 2014-05-12 18:39:30 +0000
@@ -34,8 +34,8 @@
34 'date': fields.date('Date', help='This date will be used as the invoice date for credit note and period will be chosen accordingly!'),34 'date': fields.date('Date', help='This date will be used as the invoice date for credit note and period will be chosen accordingly!'),
35 'period': fields.many2one('account.period', 'Force period'),35 'period': fields.many2one('account.period', 'Force period'),
36 'journal_id': fields.many2one('account.journal', 'Refund Journal', help='You can select here the journal to use for the credit note that will be created. If you leave that field empty, it will use the same journal as the current invoice.'),36 'journal_id': fields.many2one('account.journal', 'Refund Journal', help='You can select here the journal to use for the credit note that will be created. If you leave that field empty, it will use the same journal as the current invoice.'),
37 'description': fields.char('Reason', size=128, required=True),37 'description': fields.char('Reason', required=True),
38 'filter_refund': fields.selection([('refund', 'Create a draft refund'), ('cancel', 'Cancel: create refund and reconcile'),('modify', 'Modify: create refund, reconcile and create a new draft invoice')], "Refund Method", required=True, help='Refund base on this type. You can not Modify and Cancel if the invoice is already reconciled'),38 'filter_refund': fields.selection([('refund', 'Create a draft refund'), ('cancel', 'Cancel: create refund and reconcile'),('modify', 'Modify: create refund, reconcile and create a new draft invoice')], "Refund Method", size=6, required=True, help='Refund base on this type. You can not Modify and Cancel if the invoice is already reconciled'),
39 }39 }
4040
41 def _get_journal(self, cr, uid, context=None):41 def _get_journal(self, cr, uid, context=None):
4242
=== modified file 'account/wizard/account_reconcile.py'
--- account/wizard/account_reconcile.py 2014-01-29 18:47:03 +0000
+++ account/wizard/account_reconcile.py 2014-05-12 18:39:30 +0000
@@ -107,7 +107,7 @@
107 'journal_id': fields.many2one('account.journal','Write-Off Journal', required=True),107 'journal_id': fields.many2one('account.journal','Write-Off Journal', required=True),
108 'writeoff_acc_id': fields.many2one('account.account','Write-Off account', required=True),108 'writeoff_acc_id': fields.many2one('account.account','Write-Off account', required=True),
109 'date_p': fields.date('Date'),109 'date_p': fields.date('Date'),
110 'comment': fields.char('Comment', size= 64, required=True),110 'comment': fields.char('Comment', required=True),
111 'analytic_id': fields.many2one('account.analytic.account', 'Analytic Account', domain=[('parent_id', '!=', False)]),111 'analytic_id': fields.many2one('account.analytic.account', 'Analytic Account', domain=[('parent_id', '!=', False)]),
112 }112 }
113 _defaults = {113 _defaults = {
114114
=== modified file 'account/wizard/account_report_aged_partner_balance.py'
--- account/wizard/account_report_aged_partner_balance.py 2014-05-02 13:03:10 +0000
+++ account/wizard/account_report_aged_partner_balance.py 2014-05-12 18:39:30 +0000
@@ -35,7 +35,7 @@
35 'period_length':fields.integer('Period Length (days)', required=True),35 'period_length':fields.integer('Period Length (days)', required=True),
36 'direction_selection': fields.selection([('past','Past'),36 'direction_selection': fields.selection([('past','Past'),
37 ('future','Future')],37 ('future','Future')],
38 'Analysis Direction', required=True),38 'Analysis Direction', size=6, required=True),
39 'journal_ids': fields.many2many('account.journal', 'account_aged_trial_balance_journal_rel', 'account_id', 'journal_id', 'Journals', required=True),39 'journal_ids': fields.many2many('account.journal', 'account_aged_trial_balance_journal_rel', 'account_id', 'journal_id', 'Journals', required=True),
40 }40 }
41 _defaults = {41 _defaults = {
4242
=== modified file 'account/wizard/account_report_common.py'
--- account/wizard/account_report_common.py 2013-10-27 12:31:04 +0000
+++ account/wizard/account_report_common.py 2014-05-12 18:39:30 +0000
@@ -44,7 +44,7 @@
44 'chart_account_id': fields.many2one('account.account', 'Chart of Account', help='Select Charts of Accounts', required=True, domain = [('parent_id','=',False)]),44 'chart_account_id': fields.many2one('account.account', 'Chart of Account', help='Select Charts of Accounts', required=True, domain = [('parent_id','=',False)]),
45 'company_id': fields.related('chart_account_id', 'company_id', type='many2one', relation='res.company', string='Company', readonly=True),45 'company_id': fields.related('chart_account_id', 'company_id', type='many2one', relation='res.company', string='Company', readonly=True),
46 'fiscalyear_id': fields.many2one('account.fiscalyear', 'Fiscal Year', help='Keep empty for all open fiscal year'),46 'fiscalyear_id': fields.many2one('account.fiscalyear', 'Fiscal Year', help='Keep empty for all open fiscal year'),
47 'filter': fields.selection([('filter_no', 'No Filters'), ('filter_date', 'Date'), ('filter_period', 'Periods')], "Filter by", required=True),47 'filter': fields.selection([('filter_no', 'No Filters'), ('filter_date', 'Date'), ('filter_period', 'Periods')], "Filter by", size=13, required=True),
48 'period_from': fields.many2one('account.period', 'Start Period'),48 'period_from': fields.many2one('account.period', 'Start Period'),
49 'period_to': fields.many2one('account.period', 'End Period'),49 'period_to': fields.many2one('account.period', 'End Period'),
50 'journal_ids': fields.many2many('account.journal', string='Journals', required=True),50 'journal_ids': fields.many2many('account.journal', string='Journals', required=True),
@@ -52,7 +52,7 @@
52 'date_to': fields.date("End Date"),52 'date_to': fields.date("End Date"),
53 'target_move': fields.selection([('posted', 'All Posted Entries'),53 'target_move': fields.selection([('posted', 'All Posted Entries'),
54 ('all', 'All Entries'),54 ('all', 'All Entries'),
55 ], 'Target Moves', required=True),55 ], 'Target Moves', size=6, required=True),
5656
57 }57 }
5858
5959
=== modified file 'account/wizard/account_report_common_account.py'
--- account/wizard/account_report_common_account.py 2013-10-27 12:31:04 +0000
+++ account/wizard/account_report_common_account.py 2014-05-12 18:39:30 +0000
@@ -28,7 +28,7 @@
28 _columns = {28 _columns = {
29 'display_account': fields.selection([('all','All'), ('movement','With movements'),29 'display_account': fields.selection([('all','All'), ('movement','With movements'),
30 ('not_zero','With balance is not equal to 0'),30 ('not_zero','With balance is not equal to 0'),
31 ],'Display Accounts', required=True),31 ],'Display Accounts', size=8, required=True),
3232
33 }33 }
34 _defaults = {34 _defaults = {
3535
=== modified file 'account/wizard/account_report_common_partner.py'
--- account/wizard/account_report_common_partner.py 2013-10-27 12:31:04 +0000
+++ account/wizard/account_report_common_partner.py 2014-05-12 18:39:30 +0000
@@ -29,7 +29,7 @@
29 'result_selection': fields.selection([('customer','Receivable Accounts'),29 'result_selection': fields.selection([('customer','Receivable Accounts'),
30 ('supplier','Payable Accounts'),30 ('supplier','Payable Accounts'),
31 ('customer_supplier','Receivable and Payable Accounts')],31 ('customer_supplier','Receivable and Payable Accounts')],
32 "Partner's", required=True),32 "Partner's", size=17, required=True),
33 }33 }
3434
35 _defaults = {35 _defaults = {
3636
=== modified file 'account/wizard/account_report_general_ledger.py'
--- account/wizard/account_report_general_ledger.py 2014-05-02 13:03:10 +0000
+++ account/wizard/account_report_general_ledger.py 2014-05-12 18:39:30 +0000
@@ -32,7 +32,7 @@
32 'initial_balance': fields.boolean('Include Initial Balances',32 'initial_balance': fields.boolean('Include Initial Balances',
33 help='If you selected to filter by date or period, this field allow you to add a row to display the amount of debit/credit/balance that precedes the filter you\'ve set.'),33 help='If you selected to filter by date or period, this field allow you to add a row to display the amount of debit/credit/balance that precedes the filter you\'ve set.'),
34 'amount_currency': fields.boolean("With Currency", help="It adds the currency column on report if the currency differs from the company currency."),34 'amount_currency': fields.boolean("With Currency", help="It adds the currency column on report if the currency differs from the company currency."),
35 'sortby': fields.selection([('sort_date', 'Date'), ('sort_journal_partner', 'Journal & Partner')], 'Sort by', required=True),35 'sortby': fields.selection([('sort_date', 'Date'), ('sort_journal_partner', 'Journal & Partner')], 'Sort by', size=20, required=True),
36 'journal_ids': fields.many2many('account.journal', 'account_report_general_ledger_journal_rel', 'account_id', 'journal_id', 'Journals', required=True),36 'journal_ids': fields.many2many('account.journal', 'account_report_general_ledger_journal_rel', 'account_id', 'journal_id', 'Journals', required=True),
37 }37 }
38 _defaults = {38 _defaults = {
3939
=== modified file 'account/wizard/account_report_partner_balance.py'
--- account/wizard/account_report_partner_balance.py 2014-05-02 13:03:10 +0000
+++ account/wizard/account_report_partner_balance.py 2014-05-12 18:39:30 +0000
@@ -31,7 +31,7 @@
31 _description = 'Print Account Partner Balance'31 _description = 'Print Account Partner Balance'
32 _columns = {32 _columns = {
33 'display_partner': fields.selection([('non-zero_balance', 'With balance is not equal to 0'), ('all', 'All Partners')]33 'display_partner': fields.selection([('non-zero_balance', 'With balance is not equal to 0'), ('all', 'All Partners')]
34 ,'Display Partners'),34 ,'Display Partners', size=16),
35 'journal_ids': fields.many2many('account.journal', 'account_partner_balance_journal_rel', 'account_id', 'journal_id', 'Journals', required=True),35 'journal_ids': fields.many2many('account.journal', 'account_partner_balance_journal_rel', 'account_id', 'journal_id', 'Journals', required=True),
36 }36 }
3737
3838
=== modified file 'account/wizard/account_report_partner_ledger.py'
--- account/wizard/account_report_partner_ledger.py 2014-05-02 13:03:10 +0000
+++ account/wizard/account_report_partner_ledger.py 2014-05-12 18:39:30 +0000
@@ -33,7 +33,7 @@
33 _columns = {33 _columns = {
34 'initial_balance': fields.boolean('Include Initial Balances',34 'initial_balance': fields.boolean('Include Initial Balances',
35 help='If you selected to filter by date or period, this field allow you to add a row to display the amount of debit/credit/balance that precedes the filter you\'ve set.'),35 help='If you selected to filter by date or period, this field allow you to add a row to display the amount of debit/credit/balance that precedes the filter you\'ve set.'),
36 'filter': fields.selection([('filter_no', 'No Filters'), ('filter_date', 'Date'), ('filter_period', 'Periods'), ('unreconciled', 'Unreconciled Entries')], "Filter by", required=True),36 'filter': fields.selection([('filter_no', 'No Filters'), ('filter_date', 'Date'), ('filter_period', 'Periods'), ('unreconciled', 'Unreconciled Entries')], "Filter by", size=13, required=True),
37 'page_split': fields.boolean('One Partner Per Page', help='Display Ledger Report with One partner per page'),37 'page_split': fields.boolean('One Partner Per Page', help='Display Ledger Report with One partner per page'),
38 'amount_currency': fields.boolean("With Currency", help="It adds the currency column on report if the currency differs from the company currency."),38 'amount_currency': fields.boolean("With Currency", help="It adds the currency column on report if the currency differs from the company currency."),
39 'journal_ids': fields.many2many('account.journal', 'account_partner_ledger_journal_rel', 'account_id', 'journal_id', 'Journals', required=True),39 'journal_ids': fields.many2many('account.journal', 'account_partner_ledger_journal_rel', 'account_id', 'journal_id', 'Journals', required=True),
4040
=== modified file 'account/wizard/account_report_print_journal.py'
--- account/wizard/account_report_print_journal.py 2014-05-02 13:03:10 +0000
+++ account/wizard/account_report_print_journal.py 2014-05-12 18:39:30 +0000
@@ -31,7 +31,7 @@
31 _columns = {31 _columns = {
32 'sort_selection': fields.selection([('l.date', 'Date'),32 'sort_selection': fields.selection([('l.date', 'Date'),
33 ('am.name', 'Journal Entry Number'),],33 ('am.name', 'Journal Entry Number'),],
34 'Entries Sorted by', required=True),34 'Entries Sorted by', size=7, required=True),
35 'journal_ids': fields.many2many('account.journal', 'account_print_journal_journal_rel', 'account_id', 'journal_id', 'Journals', required=True),35 'journal_ids': fields.many2many('account.journal', 'account_print_journal_journal_rel', 'account_id', 'journal_id', 'Journals', required=True),
36 }36 }
3737
3838
=== modified file 'account/wizard/account_tax_chart.py'
--- account/wizard/account_tax_chart.py 2013-10-27 12:31:04 +0000
+++ account/wizard/account_tax_chart.py 2014-05-12 18:39:30 +0000
@@ -33,7 +33,7 @@
33 ),33 ),
34 'target_move': fields.selection([('posted', 'All Posted Entries'),34 'target_move': fields.selection([('posted', 'All Posted Entries'),
35 ('all', 'All Entries'),35 ('all', 'All Entries'),
36 ], 'Target Moves', required=True),36 ], 'Target Moves', size=6, required=True),
37 }37 }
3838
39 def _get_period(self, cr, uid, context=None):39 def _get_period(self, cr, uid, context=None):
4040
=== modified file 'account/wizard/account_vat.py'
--- account/wizard/account_vat.py 2014-05-02 13:03:10 +0000
+++ account/wizard/account_vat.py 2014-05-12 18:39:30 +0000
@@ -29,7 +29,7 @@
29 _columns = {29 _columns = {
30 'based_on': fields.selection([('invoices', 'Invoices'),30 'based_on': fields.selection([('invoices', 'Invoices'),
31 ('payments', 'Payments'),],31 ('payments', 'Payments'),],
32 'Based on', required=True),32 'Based on', size=8, required=True),
33 'chart_tax_id': fields.many2one('account.tax.code', 'Chart of Tax', help='Select Charts of Taxes', required=True, domain = [('parent_id','=', False)]),33 'chart_tax_id': fields.many2one('account.tax.code', 'Chart of Tax', help='Select Charts of Taxes', required=True, domain = [('parent_id','=', False)]),
34 'display_detail': fields.boolean('Display Detail'),34 'display_detail': fields.boolean('Display Detail'),
35 }35 }
3636
=== modified file 'account/wizard/pos_box.py'
--- account/wizard/pos_box.py 2013-12-27 15:35:17 +0000
+++ account/wizard/pos_box.py 2014-05-12 18:39:30 +0000
@@ -5,7 +5,7 @@
5class CashBox(osv.osv_memory):5class CashBox(osv.osv_memory):
6 _register = False6 _register = False
7 _columns = {7 _columns = {
8 'name' : fields.char('Reason', size=64, required=True),8 'name' : fields.char('Reason', required=True),
9 # Attention, we don't set a domain, because there is a journal_type key 9 # Attention, we don't set a domain, because there is a journal_type key
10 # in the context of the action10 # in the context of the action
11 'amount' : fields.float('Amount',11 'amount' : fields.float('Amount',
@@ -49,7 +49,7 @@
4949
50 _columns = CashBox._columns.copy()50 _columns = CashBox._columns.copy()
51 _columns.update({51 _columns.update({
52 'ref' : fields.char('Reference', size=32),52 'ref' : fields.char('Reference'),
53 })53 })
5454
55 def _compute_values_for_statement_line(self, cr, uid, box, record, context=None):55 def _compute_values_for_statement_line(self, cr, uid, box, record, context=None):
5656
=== modified file 'account_analytic_analysis/account_analytic_analysis.py'
--- account_analytic_analysis/account_analytic_analysis.py 2014-05-08 08:39:48 +0000
+++ account_analytic_analysis/account_analytic_analysis.py 2014-05-12 18:39:30 +0000
@@ -514,7 +514,7 @@
514 ('weekly', 'Week(s)'),514 ('weekly', 'Week(s)'),
515 ('monthly', 'Month(s)'),515 ('monthly', 'Month(s)'),
516 ('yearly', 'Year(s)'),516 ('yearly', 'Year(s)'),
517 ], 'Recurrency', help="Invoice automatically repeat at specified interval"),517 ], 'Recurrency', size=7, help="Invoice automatically repeat at specified interval"),
518 'recurring_interval': fields.integer('Repeat Every', help="Repeat every (Days/Week/Month/Year)"),518 'recurring_interval': fields.integer('Repeat Every', help="Repeat every (Days/Week/Month/Year)"),
519 'recurring_next_date': fields.date('Date of Next Invoice'),519 'recurring_next_date': fields.date('Date of Next Invoice'),
520 }520 }
521521
=== modified file 'account_analytic_plans/account_analytic_plans.py'
--- account_analytic_plans/account_analytic_plans.py 2014-04-22 16:20:28 +0000
+++ account_analytic_plans/account_analytic_plans.py 2014-05-12 18:39:30 +0000
@@ -70,7 +70,7 @@
70 _name = "account.analytic.plan"70 _name = "account.analytic.plan"
71 _description = "Analytic Plan"71 _description = "Analytic Plan"
72 _columns = {72 _columns = {
73 'name': fields.char('Analytic Plan', size=64, required=True, select=True),73 'name': fields.char('Analytic Plan', required=True, select=True),
74 'plan_ids': fields.one2many('account.analytic.plan.line', 'plan_id', 'Analytic Plans'),74 'plan_ids': fields.one2many('account.analytic.plan.line', 'plan_id', 'Analytic Plans'),
75 }75 }
7676
@@ -81,7 +81,7 @@
81 _order = "sequence, id"81 _order = "sequence, id"
82 _columns = {82 _columns = {
83 'plan_id': fields.many2one('account.analytic.plan','Analytic Plan',required=True),83 'plan_id': fields.many2one('account.analytic.plan','Analytic Plan',required=True),
84 'name': fields.char('Plan Name', size=64, required=True, select=True),84 'name': fields.char('Plan Name', required=True, select=True),
85 'sequence': fields.integer('Sequence'),85 'sequence': fields.integer('Sequence'),
86 'root_analytic_id': fields.many2one('account.analytic.account', 'Root Account', help="Root account of this plan.", required=False),86 'root_analytic_id': fields.many2one('account.analytic.account', 'Root Account', help="Root account of this plan.", required=False),
87 'min_required': fields.float('Minimum Allowed (%)'),87 'min_required': fields.float('Minimum Allowed (%)'),
@@ -97,7 +97,7 @@
97 _name = "account.analytic.plan.instance"97 _name = "account.analytic.plan.instance"
98 _description = "Analytic Plan Instance"98 _description = "Analytic Plan Instance"
99 _columns = {99 _columns = {
100 'name': fields.char('Analytic Distribution', size=64),100 'name': fields.char('Analytic Distribution'),
101 'code': fields.char('Distribution Code', size=16),101 'code': fields.char('Distribution Code', size=16),
102 'journal_id': fields.many2one('account.analytic.journal', 'Analytic Journal' ),102 'journal_id': fields.many2one('account.analytic.journal', 'Analytic Journal' ),
103 'account_ids': fields.one2many('account.analytic.plan.instance.line', 'plan_id', 'Account Id'),103 'account_ids': fields.one2many('account.analytic.plan.instance.line', 'plan_id', 'Account Id'),
104104
=== modified file 'account_asset/account_asset.py'
--- account_asset/account_asset.py 2014-05-07 13:45:44 +0000
+++ account_asset/account_asset.py 2014-05-12 18:39:30 +0000
@@ -32,7 +32,7 @@
32 _description = 'Asset category'32 _description = 'Asset category'
3333
34 _columns = {34 _columns = {
35 'name': fields.char('Name', size=64, required=True, select=1),35 'name': fields.char('Name', required=True, select=1),
36 'note': fields.text('Note'),36 'note': fields.text('Note'),
37 'account_analytic_id': fields.many2one('account.analytic.account', 'Analytic account'),37 'account_analytic_id': fields.many2one('account.analytic.account', 'Analytic account'),
38 'account_asset_id': fields.many2one('account.account', 'Asset Account', required=True, domain=[('type','=','other')]),38 'account_asset_id': fields.many2one('account.account', 'Asset Account', required=True, domain=[('type','=','other')]),
@@ -40,13 +40,13 @@
40 'account_expense_depreciation_id': fields.many2one('account.account', 'Depr. Expense Account', required=True, domain=[('type','=','other')]),40 'account_expense_depreciation_id': fields.many2one('account.account', 'Depr. Expense Account', required=True, domain=[('type','=','other')]),
41 'journal_id': fields.many2one('account.journal', 'Journal', required=True),41 'journal_id': fields.many2one('account.journal', 'Journal', required=True),
42 'company_id': fields.many2one('res.company', 'Company', required=True),42 'company_id': fields.many2one('res.company', 'Company', required=True),
43 'method': fields.selection([('linear','Linear'),('degressive','Degressive')], 'Computation Method', required=True, help="Choose the method to use to compute the amount of depreciation lines.\n"\43 'method': fields.selection([('linear','Linear'),('degressive','Degressive')], 'Computation Method', size=10, required=True, help="Choose the method to use to compute the amount of depreciation lines.\n"\
44 " * Linear: Calculated on basis of: Gross Value / Number of Depreciations\n" \44 " * Linear: Calculated on basis of: Gross Value / Number of Depreciations\n" \
45 " * Degressive: Calculated on basis of: Residual Value * Degressive Factor"),45 " * Degressive: Calculated on basis of: Residual Value * Degressive Factor"),
46 'method_number': fields.integer('Number of Depreciations', help="The number of depreciations needed to depreciate your asset"),46 'method_number': fields.integer('Number of Depreciations', help="The number of depreciations needed to depreciate your asset"),
47 'method_period': fields.integer('Period Length', help="State here the time between 2 depreciations, in months", required=True),47 'method_period': fields.integer('Period Length', help="State here the time between 2 depreciations, in months", required=True),
48 'method_progress_factor': fields.float('Degressive Factor'),48 'method_progress_factor': fields.float('Degressive Factor'),
49 'method_time': fields.selection([('number','Number of Depreciations'),('end','Ending Date')], 'Time Method', required=True,49 'method_time': fields.selection([('number','Number of Depreciations'),('end','Ending Date')], 'Time Method', size=6, required=True,
50 help="Choose the method to use to compute the dates and number of depreciation lines.\n"\50 help="Choose the method to use to compute the dates and number of depreciation lines.\n"\
51 " * Number of Depreciations: Fix the number of depreciation lines and the time between 2 depreciations.\n" \51 " * Number of Depreciations: Fix the number of depreciation lines and the time between 2 depreciations.\n" \
52 " * Ending Date: Choose the time between 2 depreciations and the date the depreciations won't go beyond."),52 " * Ending Date: Choose the time between 2 depreciations and the date the depreciations won't go beyond."),
@@ -246,7 +246,7 @@
246 _columns = {246 _columns = {
247 'account_move_line_ids': fields.one2many('account.move.line', 'asset_id', 'Entries', readonly=True, states={'draft':[('readonly',False)]}),247 'account_move_line_ids': fields.one2many('account.move.line', 'asset_id', 'Entries', readonly=True, states={'draft':[('readonly',False)]}),
248 'entry_count': fields.function(_entry_count, string='# Asset Entries', type='integer'),248 'entry_count': fields.function(_entry_count, string='# Asset Entries', type='integer'),
249 'name': fields.char('Asset Name', size=64, required=True, readonly=True, states={'draft':[('readonly',False)]}),249 'name': fields.char('Asset Name', required=True, readonly=True, states={'draft':[('readonly',False)]}),
250 'code': fields.char('Reference', size=32, readonly=True, states={'draft':[('readonly',False)]}),250 'code': fields.char('Reference', size=32, readonly=True, states={'draft':[('readonly',False)]}),
251 'purchase_value': fields.float('Gross Value', required=True, readonly=True, states={'draft':[('readonly',False)]}),251 'purchase_value': fields.float('Gross Value', required=True, readonly=True, states={'draft':[('readonly',False)]}),
252 'currency_id': fields.many2one('res.currency','Currency',required=True, readonly=True, states={'draft':[('readonly',False)]}),252 'currency_id': fields.many2one('res.currency','Currency',required=True, readonly=True, states={'draft':[('readonly',False)]}),
@@ -256,13 +256,13 @@
256 'parent_id': fields.many2one('account.asset.asset', 'Parent Asset', readonly=True, states={'draft':[('readonly',False)]}),256 'parent_id': fields.many2one('account.asset.asset', 'Parent Asset', readonly=True, states={'draft':[('readonly',False)]}),
257 'child_ids': fields.one2many('account.asset.asset', 'parent_id', 'Children Assets'),257 'child_ids': fields.one2many('account.asset.asset', 'parent_id', 'Children Assets'),
258 'purchase_date': fields.date('Purchase Date', required=True, readonly=True, states={'draft':[('readonly',False)]}),258 'purchase_date': fields.date('Purchase Date', required=True, readonly=True, states={'draft':[('readonly',False)]}),
259 'state': fields.selection([('draft','Draft'),('open','Running'),('close','Close')], 'Status', required=True,259 'state': fields.selection([('draft','Draft'),('open','Running'),('close','Close')], 'Status', required=True, size=5,
260 help="When an asset is created, the status is 'Draft'.\n" \260 help="When an asset is created, the status is 'Draft'.\n" \
261 "If the asset is confirmed, the status goes in 'Running' and the depreciation lines can be posted in the accounting.\n" \261 "If the asset is confirmed, the status goes in 'Running' and the depreciation lines can be posted in the accounting.\n" \
262 "You can manually close an asset when the depreciation is over. If the last line of depreciation is posted, the asset automatically goes in that status."),262 "You can manually close an asset when the depreciation is over. If the last line of depreciation is posted, the asset automatically goes in that status."),
263 'active': fields.boolean('Active'),263 'active': fields.boolean('Active'),
264 'partner_id': fields.many2one('res.partner', 'Partner', readonly=True, states={'draft':[('readonly',False)]}),264 'partner_id': fields.many2one('res.partner', 'Partner', readonly=True, states={'draft':[('readonly',False)]}),
265 'method': fields.selection([('linear','Linear'),('degressive','Degressive')], 'Computation Method', required=True, readonly=True, states={'draft':[('readonly',False)]}, help="Choose the method to use to compute the amount of depreciation lines.\n"\265 'method': fields.selection([('linear','Linear'),('degressive','Degressive')], 'Computation Method', size=10, required=True, readonly=True, states={'draft':[('readonly',False)]}, help="Choose the method to use to compute the amount of depreciation lines.\n"\
266 " * Linear: Calculated on basis of: Gross Value / Number of Depreciations\n" \266 " * Linear: Calculated on basis of: Gross Value / Number of Depreciations\n" \
267 " * Degressive: Calculated on basis of: Residual Value * Degressive Factor"),267 " * Degressive: Calculated on basis of: Residual Value * Degressive Factor"),
268 'method_number': fields.integer('Number of Depreciations', readonly=True, states={'draft':[('readonly',False)]}, help="The number of depreciations needed to depreciate your asset"),268 'method_number': fields.integer('Number of Depreciations', readonly=True, states={'draft':[('readonly',False)]}, help="The number of depreciations needed to depreciate your asset"),
@@ -270,7 +270,7 @@
270 'method_end': fields.date('Ending Date', readonly=True, states={'draft':[('readonly',False)]}),270 'method_end': fields.date('Ending Date', readonly=True, states={'draft':[('readonly',False)]}),
271 'method_progress_factor': fields.float('Degressive Factor', readonly=True, states={'draft':[('readonly',False)]}),271 'method_progress_factor': fields.float('Degressive Factor', readonly=True, states={'draft':[('readonly',False)]}),
272 'value_residual': fields.function(_amount_residual, method=True, digits_compute=dp.get_precision('Account'), string='Residual Value'),272 'value_residual': fields.function(_amount_residual, method=True, digits_compute=dp.get_precision('Account'), string='Residual Value'),
273 'method_time': fields.selection([('number','Number of Depreciations'),('end','Ending Date')], 'Time Method', required=True, readonly=True, states={'draft':[('readonly',False)]},273 'method_time': fields.selection([('number','Number of Depreciations'),('end','Ending Date')], 'Time Method', size=6, required=True, readonly=True, states={'draft':[('readonly',False)]},
274 help="Choose the method to use to compute the dates and number of depreciation lines.\n"\274 help="Choose the method to use to compute the dates and number of depreciation lines.\n"\
275 " * Number of Depreciations: Fix the number of depreciation lines and the time between 2 depreciations.\n" \275 " * Number of Depreciations: Fix the number of depreciation lines and the time between 2 depreciations.\n" \
276 " * Ending Date: Choose the time between 2 depreciations and the date the depreciations won't go beyond."),276 " * Ending Date: Choose the time between 2 depreciations and the date the depreciations won't go beyond."),
@@ -379,7 +379,7 @@
379 return res379 return res
380380
381 _columns = {381 _columns = {
382 'name': fields.char('Depreciation Name', size=64, required=True, select=1),382 'name': fields.char('Depreciation Name', required=True, select=1),
383 'sequence': fields.integer('Sequence', required=True),383 'sequence': fields.integer('Sequence', required=True),
384 'asset_id': fields.many2one('account.asset.asset', 'Asset', required=True, ondelete='cascade'),384 'asset_id': fields.many2one('account.asset.asset', 'Asset', required=True, ondelete='cascade'),
385 'parent_state': fields.related('asset_id', 'state', type='char', string='State of Asset'),385 'parent_state': fields.related('asset_id', 'state', type='char', string='State of Asset'),
@@ -474,11 +474,11 @@
474 _name = 'account.asset.history'474 _name = 'account.asset.history'
475 _description = 'Asset history'475 _description = 'Asset history'
476 _columns = {476 _columns = {
477 'name': fields.char('History name', size=64, select=1),477 'name': fields.char('History name', select=1),
478 'user_id': fields.many2one('res.users', 'User', required=True),478 'user_id': fields.many2one('res.users', 'User', required=True),
479 'date': fields.date('Date', required=True),479 'date': fields.date('Date', required=True),
480 'asset_id': fields.many2one('account.asset.asset', 'Asset', required=True),480 'asset_id': fields.many2one('account.asset.asset', 'Asset', required=True),
481 'method_time': fields.selection([('number','Number of Depreciations'),('end','Ending Date')], 'Time Method', required=True,481 'method_time': fields.selection([('number','Number of Depreciations'),('end','Ending Date')], 'Time Method', size=6, required=True,
482 help="The method to use to compute the dates and number of depreciation lines.\n"\482 help="The method to use to compute the dates and number of depreciation lines.\n"\
483 "Number of Depreciations: Fix the number of depreciation lines and the time between 2 depreciations.\n" \483 "Number of Depreciations: Fix the number of depreciation lines and the time between 2 depreciations.\n" \
484 "Ending Date: Choose the time between 2 depreciations and the date the depreciations won't go beyond."),484 "Ending Date: Choose the time between 2 depreciations and the date the depreciations won't go beyond."),
485485
=== modified file 'account_asset/report/account_asset_report.py'
--- account_asset/report/account_asset_report.py 2013-10-27 12:31:04 +0000
+++ account_asset/report/account_asset_report.py 2014-05-12 18:39:30 +0000
@@ -27,13 +27,13 @@
27 _description = "Assets Analysis"27 _description = "Assets Analysis"
28 _auto = False28 _auto = False
29 _columns = {29 _columns = {
30 'name': fields.char('Year', size=16, required=False, readonly=True),30 'name': fields.char('Year', required=False, readonly=True),
31 'purchase_date': fields.date('Purchase Date', readonly=True),31 'purchase_date': fields.date('Purchase Date', readonly=True),
32 'depreciation_date': fields.date('Depreciation Date', readonly=True),32 'depreciation_date': fields.date('Depreciation Date', readonly=True),
33 'asset_id': fields.many2one('account.asset.asset', string='Asset', readonly=True),33 'asset_id': fields.many2one('account.asset.asset', string='Asset', readonly=True),
34 'asset_category_id': fields.many2one('account.asset.category',string='Asset category'),34 'asset_category_id': fields.many2one('account.asset.category',string='Asset category'),
35 'partner_id': fields.many2one('res.partner', 'Partner', readonly=True),35 'partner_id': fields.many2one('res.partner', 'Partner', readonly=True),
36 'state': fields.selection([('draft','Draft'),('open','Running'),('close','Close')], 'Status', readonly=True),36 'state': fields.selection([('draft','Draft'),('open','Running'),('close','Close')], 'Status', size=5, readonly=True),
37 'depreciation_value': fields.float('Amount of Depreciation Lines', readonly=True),37 'depreciation_value': fields.float('Amount of Depreciation Lines', readonly=True),
38 'move_check': fields.boolean('Posted', readonly=True),38 'move_check': fields.boolean('Posted', readonly=True),
39 'nbr': fields.integer('# of Depreciation Lines', readonly=True),39 'nbr': fields.integer('# of Depreciation Lines', readonly=True),
4040
=== modified file 'account_asset/wizard/account_asset_change_duration.py'
--- account_asset/wizard/account_asset_change_duration.py 2013-10-27 12:31:04 +0000
+++ account_asset/wizard/account_asset_change_duration.py 2014-05-12 18:39:30 +0000
@@ -28,7 +28,7 @@
28 _description = 'Modify Asset'28 _description = 'Modify Asset'
2929
30 _columns = {30 _columns = {
31 'name': fields.char('Reason', size=64, required=True),31 'name': fields.char('Reason', required=True),
32 'method_number': fields.integer('Number of Depreciations', required=True),32 'method_number': fields.integer('Number of Depreciations', required=True),
33 'method_period': fields.integer('Period Length'),33 'method_period': fields.integer('Period Length'),
34 'method_end': fields.date('Ending date'),34 'method_end': fields.date('Ending date'),
3535
=== modified file 'account_bank_statement_extensions/account_bank_statement.py'
--- account_bank_statement_extensions/account_bank_statement.py 2013-10-27 12:31:04 +0000
+++ account_bank_statement_extensions/account_bank_statement.py 2014-05-12 18:39:30 +0000
@@ -62,7 +62,7 @@
62 _description = 'Batch Payment Info'62 _description = 'Batch Payment Info'
6363
64 _columns = {64 _columns = {
65 'name': fields.char('OBI', size=128, required=True, help="Originator to Beneficiary Information"),65 'name': fields.char('OBI', required=True, help="Originator to Beneficiary Information"),
66 'code': fields.char('Code', size=64, required=True),66 'code': fields.char('Code', size=64, required=True),
67 'parent_id': fields.many2one('account.bank.statement.line.global', 'Parent Code', ondelete='cascade'),67 'parent_id': fields.many2one('account.bank.statement.line.global', 'Parent Code', ondelete='cascade'),
68 'child_ids': fields.one2many('account.bank.statement.line.global', 'parent_id', 'Child Codes'),68 'child_ids': fields.one2many('account.bank.statement.line.global', 'parent_id', 'Child Codes'),
@@ -70,7 +70,7 @@
70 ('iso20022', 'ISO 20022'),70 ('iso20022', 'ISO 20022'),
71 ('coda', 'CODA'),71 ('coda', 'CODA'),
72 ('manual', 'Manual'),72 ('manual', 'Manual'),
73 ], 'Type', required=True),73 ], 'Type', size=8, required=True),
74 'amount': fields.float('Amount', digits_compute=dp.get_precision('Account')),74 'amount': fields.float('Amount', digits_compute=dp.get_precision('Account')),
75 'bank_statement_line_ids': fields.one2many('account.bank.statement.line', 'globalisation_id', 'Bank Statement Lines'),75 'bank_statement_line_ids': fields.one2many('account.bank.statement.line', 'globalisation_id', 'Bank Statement Lines'),
76 }76 }
@@ -110,7 +110,7 @@
110 'globalisation_amount': fields.related('globalisation_id', 'amount', type='float',110 'globalisation_amount': fields.related('globalisation_id', 'amount', type='float',
111 relation='account.bank.statement.line.global', string='Glob. Amount', readonly=True),111 relation='account.bank.statement.line.global', string='Glob. Amount', readonly=True),
112 'state': fields.selection([('draft', 'Draft'), ('confirm', 'Confirmed')],112 'state': fields.selection([('draft', 'Draft'), ('confirm', 'Confirmed')],
113 'Status', required=True, readonly=True),113 'Status', size=7, required=True, readonly=True),
114 'counterparty_name': fields.char('Counterparty Name', size=35),114 'counterparty_name': fields.char('Counterparty Name', size=35),
115 'counterparty_bic': fields.char('Counterparty BIC', size=11),115 'counterparty_bic': fields.char('Counterparty BIC', size=11),
116 'counterparty_number': fields.char('Counterparty Number', size=34),116 'counterparty_number': fields.char('Counterparty Number', size=34),
117117
=== modified file 'account_budget/account_budget.py'
--- account_budget/account_budget.py 2014-04-11 14:28:00 +0000
+++ account_budget/account_budget.py 2014-05-12 18:39:30 +0000
@@ -38,7 +38,7 @@
38 _description = "Budgetary Position"38 _description = "Budgetary Position"
39 _columns = {39 _columns = {
40 'code': fields.char('Code', size=64, required=True),40 'code': fields.char('Code', size=64, required=True),
41 'name': fields.char('Name', size=256, required=True),41 'name': fields.char('Name', required=True),
42 'account_ids': fields.many2many('account.account', 'account_budget_rel', 'budget_id', 'account_id', 'Accounts'),42 'account_ids': fields.many2many('account.account', 'account_budget_rel', 'budget_id', 'account_id', 'Accounts'),
43 'crossovered_budget_line': fields.one2many('crossovered.budget.lines', 'general_budget_id', 'Budget Lines'),43 'crossovered_budget_line': fields.one2many('crossovered.budget.lines', 'general_budget_id', 'Budget Lines'),
44 'company_id': fields.many2one('res.company', 'Company', required=True),44 'company_id': fields.many2one('res.company', 'Company', required=True),
@@ -55,13 +55,13 @@
55 _description = "Budget"55 _description = "Budget"
5656
57 _columns = {57 _columns = {
58 'name': fields.char('Name', size=64, required=True, states={'done':[('readonly',True)]}),58 'name': fields.char('Name', required=True, states={'done':[('readonly',True)]}),
59 'code': fields.char('Code', size=16, required=True, states={'done':[('readonly',True)]}),59 'code': fields.char('Code', size=16, required=True, states={'done':[('readonly',True)]}),
60 'creating_user_id': fields.many2one('res.users', 'Responsible User'),60 'creating_user_id': fields.many2one('res.users', 'Responsible User'),
61 'validating_user_id': fields.many2one('res.users', 'Validate User', readonly=True),61 'validating_user_id': fields.many2one('res.users', 'Validate User', readonly=True),
62 'date_from': fields.date('Start Date', required=True, states={'done':[('readonly',True)]}),62 'date_from': fields.date('Start Date', required=True, states={'done':[('readonly',True)]}),
63 'date_to': fields.date('End Date', required=True, states={'done':[('readonly',True)]}),63 'date_to': fields.date('End Date', required=True, states={'done':[('readonly',True)]}),
64 'state' : fields.selection([('draft','Draft'),('cancel', 'Cancelled'),('confirm','Confirmed'),('validate','Validated'),('done','Done')], 'Status', select=True, required=True, readonly=True),64 'state' : fields.selection([('draft','Draft'),('cancel', 'Cancelled'),('confirm','Confirmed'),('validate','Validated'),('done','Done')], 'Status', size=8, select=True, required=True, readonly=True),
65 'crossovered_budget_line': fields.one2many('crossovered.budget.lines', 'crossovered_budget_id', 'Budget Lines', states={'done':[('readonly',True)]}),65 'crossovered_budget_line': fields.one2many('crossovered.budget.lines', 'crossovered_budget_id', 'Budget Lines', states={'done':[('readonly',True)]}),
66 'company_id': fields.many2one('res.company', 'Company', required=True),66 'company_id': fields.many2one('res.company', 'Company', required=True),
67 }67 }
6868
=== modified file 'account_check_writing/account.py'
--- account_check_writing/account.py 2014-02-10 05:26:55 +0000
+++ account_check_writing/account.py 2014-05-12 18:39:30 +0000
@@ -37,7 +37,7 @@
37 ('top', 'Check on Top'),37 ('top', 'Check on Top'),
38 ('middle', 'Check in middle'),38 ('middle', 'Check in middle'),
39 ('bottom', 'Check on bottom'),39 ('bottom', 'Check on bottom'),
40 ],"Check Layout",40 ],"Check Layout", size=6,
41 help="Check on top is compatible with Quicken, QuickBooks and Microsoft Money. Check in middle is compatible with Peachtree, ACCPAC and DacEasy. Check on bottom is compatible with Peachtree, ACCPAC and DacEasy only" ),41 help="Check on top is compatible with Quicken, QuickBooks and Microsoft Money. Check in middle is compatible with Peachtree, ACCPAC and DacEasy. Check on bottom is compatible with Peachtree, ACCPAC and DacEasy only" ),
42 }42 }
43 43
4444
=== modified file 'account_check_writing/account_voucher.py'
--- account_check_writing/account_voucher.py 2014-05-02 13:03:10 +0000
+++ account_check_writing/account_voucher.py 2014-05-12 18:39:30 +0000
@@ -36,9 +36,9 @@
36 return journal_pool.search(cr, uid, [('type', '=', ttype)], limit=1)36 return journal_pool.search(cr, uid, [('type', '=', ttype)], limit=1)
3737
38 _columns = {38 _columns = {
39 'amount_in_word' : fields.char("Amount in Word" , size=128, readonly=True, states={'draft':[('readonly',False)]}),39 'amount_in_word' : fields.char("Amount in Word", readonly=True, states={'draft':[('readonly',False)]}),
40 'allow_check' : fields.related('journal_id', 'allow_check_writing', type='boolean', string='Allow Check Writing'),40 'allow_check' : fields.related('journal_id', 'allow_check_writing', type='boolean', string='Allow Check Writing'),
41 'number': fields.char('Number', size=32),41 'number': fields.char('Number'),
42 }42 }
4343
44 def _amount_to_text(self, cr, uid, amount, currency_id, context=None):44 def _amount_to_text(self, cr, uid, amount, currency_id, context=None):
4545
=== modified file 'account_followup/account_followup.py'
--- account_followup/account_followup.py 2014-05-07 17:01:12 +0000
+++ account_followup/account_followup.py 2014-05-12 18:39:30 +0000
@@ -49,7 +49,7 @@
49 _name = 'account_followup.followup.line'49 _name = 'account_followup.followup.line'
50 _description = 'Follow-up Criteria'50 _description = 'Follow-up Criteria'
51 _columns = {51 _columns = {
52 'name': fields.char('Follow-Up Action', size=64, required=True),52 'name': fields.char('Follow-Up Action', required=True),
53 'sequence': fields.integer('Sequence', help="Gives the sequence order when displaying a list of follow-up lines."),53 'sequence': fields.integer('Sequence', help="Gives the sequence order when displaying a list of follow-up lines."),
54 'delay': fields.integer('Due Days', help="The number of days after the due date of the invoice to wait before sending the reminder. Could be negative if you want to send a polite alert beforehand.", required=True),54 'delay': fields.integer('Due Days', help="The number of days after the due date of the invoice to wait before sending the reminder. Could be negative if you want to send a polite alert beforehand.", required=True),
55 'followup_id': fields.many2one('account_followup.followup', 'Follow Ups', required=True, ondelete="cascade"),55 'followup_id': fields.many2one('account_followup.followup', 'Follow Ups', required=True, ondelete="cascade"),
5656
=== modified file 'account_payment/account_payment.py'
--- account_payment/account_payment.py 2013-10-27 12:31:04 +0000
+++ account_payment/account_payment.py 2014-05-12 18:39:30 +0000
@@ -30,7 +30,7 @@
30 _name= 'payment.mode'30 _name= 'payment.mode'
31 _description= 'Payment Mode'31 _description= 'Payment Mode'
32 _columns = {32 _columns = {
33 'name': fields.char('Name', size=64, required=True, help='Mode of Payment'),33 'name': fields.char('Name', required=True, help='Mode of Payment'),
34 'bank_id': fields.many2one('res.partner.bank', "Bank account",34 'bank_id': fields.many2one('res.partner.bank', "Bank account",
35 required=True,help='Bank Account for the Payment Mode'),35 required=True,help='Bank Account for the Payment Mode'),
36 'journal': fields.many2one('account.journal', 'Journal', required=True,36 'journal': fields.many2one('account.journal', 'Journal', required=True,
@@ -87,13 +87,13 @@
8787
88 _columns = {88 _columns = {
89 'date_scheduled': fields.date('Scheduled Date', states={'done':[('readonly', True)]}, help='Select a date if you have chosen Preferred Date to be fixed.'),89 'date_scheduled': fields.date('Scheduled Date', states={'done':[('readonly', True)]}, help='Select a date if you have chosen Preferred Date to be fixed.'),
90 'reference': fields.char('Reference', size=128, required=1, states={'done': [('readonly', True)]}),90 'reference': fields.char('Reference', required=1, states={'done': [('readonly', True)]}),
91 'mode': fields.many2one('payment.mode', 'Payment Mode', select=True, required=1, states={'done': [('readonly', True)]}, help='Select the Payment Mode to be applied.'),91 'mode': fields.many2one('payment.mode', 'Payment Mode', select=True, required=1, states={'done': [('readonly', True)]}, help='Select the Payment Mode to be applied.'),
92 'state': fields.selection([92 'state': fields.selection([
93 ('draft', 'Draft'),93 ('draft', 'Draft'),
94 ('cancel', 'Cancelled'),94 ('cancel', 'Cancelled'),
95 ('open', 'Confirmed'),95 ('open', 'Confirmed'),
96 ('done', 'Done')], 'Status', select=True,96 ('done', 'Done')], 'Status', select=True, size=6,
97 help='When an order is placed the status is \'Draft\'.\n Once the bank is confirmed the status is set to \'Confirmed\'.\n Then the order is paid the status is \'Done\'.'),97 help='When an order is placed the status is \'Draft\'.\n Once the bank is confirmed the status is set to \'Confirmed\'.\n Then the order is paid the status is \'Done\'.'),
98 'line_ids': fields.one2many('payment.line', 'order_id', 'Payment lines', states={'done': [('readonly', True)]}),98 'line_ids': fields.one2many('payment.line', 'order_id', 'Payment lines', states={'done': [('readonly', True)]}),
99 'total': fields.function(_total, string="Total", type='float'),99 'total': fields.function(_total, string="Total", type='float'),
@@ -102,7 +102,7 @@
102 ('now', 'Directly'),102 ('now', 'Directly'),
103 ('due', 'Due date'),103 ('due', 'Due date'),
104 ('fixed', 'Fixed date')104 ('fixed', 'Fixed date')
105 ], "Preferred Date", change_default=True, required=True, states={'done': [('readonly', True)]}, help="Choose an option for the Payment Order:'Fixed' stands for a date specified by you.'Directly' stands for the direct execution.'Due date' stands for the scheduled date of execution."),105 ], "Preferred Date", size=5, change_default=True, required=True, states={'done': [('readonly', True)]}, help="Choose an option for the Payment Order:'Fixed' stands for a date specified by you.'Directly' stands for the direct execution.'Due date' stands for the scheduled date of execution."),
106 'date_created': fields.date('Creation Date', readonly=True),106 'date_created': fields.date('Creation Date', readonly=True),
107 'date_done': fields.date('Execution Date', readonly=True),107 'date_done': fields.date('Execution Date', readonly=True),
108 'company_id': fields.related('mode', 'company_id', type='many2one', relation='res.company', string='Company', store=True, readonly=True),108 'company_id': fields.related('mode', 'company_id', type='many2one', relation='res.company', string='Company', store=True, readonly=True),
@@ -303,9 +303,9 @@
303 return res303 return res
304304
305 _columns = {305 _columns = {
306 'name': fields.char('Your Reference', size=64, required=True),306 'name': fields.char('Your Reference', required=True),
307 'communication': fields.char('Communication', size=64, required=True, help="Used as the message between ordering customer and current company. Depicts 'What do you want to say to the recipient about this order ?'"),307 'communication': fields.char('Communication', required=True, help="Used as the message between ordering customer and current company. Depicts 'What do you want to say to the recipient about this order ?'"),
308 'communication2': fields.char('Communication 2', size=64, help='The successor message of Communication.'),308 'communication2': fields.char('Communication 2', help='The successor message of Communication.'),
309 'move_line_id': fields.many2one('account.move.line', 'Entry line', domain=[('reconcile_id', '=', False), ('account_id.type', '=', 'payable')], help='This Entry Line will be referred for the information of the ordering customer.'),309 'move_line_id': fields.many2one('account.move.line', 'Entry line', domain=[('reconcile_id', '=', False), ('account_id.type', '=', 'payable')], help='This Entry Line will be referred for the information of the ordering customer.'),
310 'amount_currency': fields.float('Amount in Partner Currency', digits=(16, 2),310 'amount_currency': fields.float('Amount in Partner Currency', digits=(16, 2),
311 required=True, help='Payment amount in the partner currency'),311 required=True, help='Payment amount in the partner currency'),
@@ -326,7 +326,7 @@
326 'info_partner': fields.function(info_partner, string="Destination Account", type="text", help='Address of the Ordering Customer.'),326 'info_partner': fields.function(info_partner, string="Destination Account", type="text", help='Address of the Ordering Customer.'),
327 'date': fields.date('Payment Date', help="If no payment date is specified, the bank will treat this payment line directly"),327 'date': fields.date('Payment Date', help="If no payment date is specified, the bank will treat this payment line directly"),
328 'create_date': fields.datetime('Created', readonly=True),328 'create_date': fields.datetime('Created', readonly=True),
329 'state': fields.selection([('normal','Free'), ('structured','Structured')], 'Communication Type', required=True),329 'state': fields.selection([('normal','Free'), ('structured','Structured')], 'Communication Type', size=10, required=True),
330 'bank_statement_line_id': fields.many2one('account.bank.statement.line', 'Bank statement line'),330 'bank_statement_line_id': fields.many2one('account.bank.statement.line', 'Bank statement line'),
331 'company_id': fields.related('order_id', 'company_id', type='many2one', relation='res.company', string='Company', store=True, readonly=True),331 'company_id': fields.related('order_id', 'company_id', type='many2one', relation='res.company', string='Company', store=True, readonly=True),
332 }332 }
333333
=== modified file 'account_sequence/account_sequence.py'
--- account_sequence/account_sequence.py 2013-10-27 12:31:04 +0000
+++ account_sequence/account_sequence.py 2014-05-12 18:39:30 +0000
@@ -26,7 +26,7 @@
26 _inherit = 'account.move'26 _inherit = 'account.move'
2727
28 _columns = {28 _columns = {
29 'internal_sequence_number': fields.char('Internal Number', size=64, readonly=True, help='Internal Sequence Number'),29 'internal_sequence_number': fields.char('Internal Number', readonly=True, help='Internal Sequence Number'),
30 }30 }
3131
32 def post(self, cr, uid, ids, context=None):32 def post(self, cr, uid, ids, context=None):
3333
=== modified file 'account_sequence/account_sequence_installer.py'
--- account_sequence/account_sequence_installer.py 2013-10-27 12:31:04 +0000
+++ account_sequence/account_sequence_installer.py 2014-05-12 18:39:30 +0000
@@ -26,9 +26,9 @@
26 _inherit = 'res.config.installer'26 _inherit = 'res.config.installer'
2727
28 _columns = {28 _columns = {
29 'name': fields.char('Name',size=64, required=True),29 'name': fields.char('Name', required=True),
30 'prefix': fields.char('Prefix',size=64, help="Prefix value of the record for the sequence"),30 'prefix': fields.char('Prefix', size=64, help="Prefix value of the record for the sequence"),
31 'suffix': fields.char('Suffix',size=64, help="Suffix value of the record for the sequence"),31 'suffix': fields.char('Suffix', size=64, help="Suffix value of the record for the sequence"),
32 'number_next': fields.integer('Next Number', required=True, help="Next number of this sequence"),32 'number_next': fields.integer('Next Number', required=True, help="Next number of this sequence"),
33 'number_increment': fields.integer('Increment Number', required=True, help="The next number of the sequence will be incremented by this number"),33 'number_increment': fields.integer('Increment Number', required=True, help="The next number of the sequence will be incremented by this number"),
34 'padding' : fields.integer('Number padding', required=True, help="OpenERP will automatically adds some '0' on the left of the 'Next Number' to get the required padding size."),34 'padding' : fields.integer('Number padding', required=True, help="OpenERP will automatically adds some '0' on the left of the 'Next Number' to get the required padding size."),
3535
=== modified file 'account_test/account_test.py'
--- account_test/account_test.py 2013-10-27 12:31:04 +0000
+++ account_test/account_test.py 2014-05-12 18:39:30 +0000
@@ -43,7 +43,7 @@
43 _order = "sequence"43 _order = "sequence"
4444
45 _columns = {45 _columns = {
46 'name': fields.char('Test Name', size=256, required=True, select=True, translate=True),46 'name': fields.char('Test Name', required=True, select=True, translate=True),
47 'desc': fields.text('Test Description', select=True, translate=True),47 'desc': fields.text('Test Description', select=True, translate=True),
48 'code_exec': fields.text('Python code', required=True),48 'code_exec': fields.text('Python code', required=True),
49 'active': fields.boolean('Active'),49 'active': fields.boolean('Active'),
5050
=== modified file 'account_voucher/account_voucher.py'
--- account_voucher/account_voucher.py 2014-05-02 13:03:52 +0000
+++ account_voucher/account_voucher.py 2014-05-12 18:39:30 +0000
@@ -333,8 +333,8 @@
333 ('purchase','Purchase'),333 ('purchase','Purchase'),
334 ('payment','Payment'),334 ('payment','Payment'),
335 ('receipt','Receipt'),335 ('receipt','Receipt'),
336 ],'Default Type', readonly=True, states={'draft':[('readonly',False)]}),336 ],'Default Type', size=8, readonly=True, states={'draft':[('readonly',False)]}),
337 'name':fields.char('Memo', size=256, readonly=True, states={'draft':[('readonly',False)]}),337 'name':fields.char('Memo', readonly=True, states={'draft':[('readonly',False)]}),
338 'date':fields.date('Date', readonly=True, select=True, states={'draft':[('readonly',False)]}, help="Effective date for accounting entries"),338 'date':fields.date('Date', readonly=True, select=True, states={'draft':[('readonly',False)]}, help="Effective date for accounting entries"),
339 'journal_id':fields.many2one('account.journal', 'Journal', required=True, readonly=True, states={'draft':[('readonly',False)]}),339 'journal_id':fields.many2one('account.journal', 'Journal', required=True, readonly=True, states={'draft':[('readonly',False)]}),
340 'account_id':fields.many2one('account.account', 'Account', required=True, readonly=True, states={'draft':[('readonly',False)]}),340 'account_id':fields.many2one('account.account', 'Account', required=True, readonly=True, states={'draft':[('readonly',False)]}),
@@ -352,15 +352,15 @@
352 ('cancel','Cancelled'),352 ('cancel','Cancelled'),
353 ('proforma','Pro-forma'),353 ('proforma','Pro-forma'),
354 ('posted','Posted')354 ('posted','Posted')
355 ], 'Status', readonly=True, size=32, track_visibility='onchange',355 ], 'Status', readonly=True, size=8, track_visibility='onchange',
356 help=' * The \'Draft\' status is used when a user is encoding a new and unconfirmed Voucher. \356 help=' * The \'Draft\' status is used when a user is encoding a new and unconfirmed Voucher. \
357 \n* The \'Pro-forma\' when voucher is in Pro-forma status,voucher does not have an voucher number. \357 \n* The \'Pro-forma\' when voucher is in Pro-forma status,voucher does not have an voucher number. \
358 \n* The \'Posted\' status is used when user create voucher,a voucher number is generated and voucher entries are created in account \358 \n* The \'Posted\' status is used when user create voucher,a voucher number is generated and voucher entries are created in account \
359 \n* The \'Cancelled\' status is used when user cancel voucher.'),359 \n* The \'Cancelled\' status is used when user cancel voucher.'),
360 'amount': fields.float('Total', digits_compute=dp.get_precision('Account'), required=True, readonly=True, states={'draft':[('readonly',False)]}),360 'amount': fields.float('Total', digits_compute=dp.get_precision('Account'), required=True, readonly=True, states={'draft':[('readonly',False)]}),
361 'tax_amount':fields.float('Tax Amount', digits_compute=dp.get_precision('Account'), readonly=True, states={'draft':[('readonly',False)]}),361 'tax_amount':fields.float('Tax Amount', digits_compute=dp.get_precision('Account'), readonly=True, states={'draft':[('readonly',False)]}),
362 'reference': fields.char('Ref #', size=64, readonly=True, states={'draft':[('readonly',False)]}, help="Transaction reference number."),362 'reference': fields.char('Ref #', readonly=True, states={'draft':[('readonly',False)]}, help="Transaction reference number."),
363 'number': fields.char('Number', size=32, readonly=True,),363 'number': fields.char('Number', readonly=True,),
364 'move_id':fields.many2one('account.move', 'Account Entry'),364 'move_id':fields.many2one('account.move', 'Account Entry'),
365 'move_ids': fields.related('move_id','line_id', type='one2many', relation='account.move.line', string='Journal Items', readonly=True),365 'move_ids': fields.related('move_id','line_id', type='one2many', relation='account.move.line', string='Journal Items', readonly=True),
366 'partner_id':fields.many2one('res.partner', 'Partner', change_default=1, readonly=True, states={'draft':[('readonly',False)]}),366 'partner_id':fields.many2one('res.partner', 'Partner', change_default=1, readonly=True, states={'draft':[('readonly',False)]}),
@@ -369,16 +369,16 @@
369 'pay_now':fields.selection([369 'pay_now':fields.selection([
370 ('pay_now','Pay Directly'),370 ('pay_now','Pay Directly'),
371 ('pay_later','Pay Later or Group Funds'),371 ('pay_later','Pay Later or Group Funds'),
372 ],'Payment', select=True, readonly=True, states={'draft':[('readonly',False)]}),372 ],'Payment', select=True, size=9, readonly=True, states={'draft':[('readonly',False)]}),
373 'tax_id': fields.many2one('account.tax', 'Tax', readonly=True, states={'draft':[('readonly',False)]}, domain=[('price_include','=', False)], help="Only for tax excluded from price"),373 'tax_id': fields.many2one('account.tax', 'Tax', readonly=True, states={'draft':[('readonly',False)]}, domain=[('price_include','=', False)], help="Only for tax excluded from price"),
374 'pre_line':fields.boolean('Previous Payments ?', required=False),374 'pre_line':fields.boolean('Previous Payments ?', required=False),
375 'date_due': fields.date('Due Date', readonly=True, select=True, states={'draft':[('readonly',False)]}),375 'date_due': fields.date('Due Date', readonly=True, select=True, states={'draft':[('readonly',False)]}),
376 'payment_option':fields.selection([376 'payment_option':fields.selection([
377 ('without_writeoff', 'Keep Open'),377 ('without_writeoff', 'Keep Open'),
378 ('with_writeoff', 'Reconcile Payment Balance'),378 ('with_writeoff', 'Reconcile Payment Balance'),
379 ], 'Payment Difference', required=True, readonly=True, states={'draft': [('readonly', False)]}, help="This field helps you to choose what you want to do with the eventual difference between the paid amount and the sum of allocated amounts. You can either choose to keep open this difference on the partner's account, or reconcile it with the payment(s)"),379 ], 'Payment Difference', required=True, size=16, readonly=True, states={'draft': [('readonly', False)]}, help="This field helps you to choose what you want to do with the eventual difference between the paid amount and the sum of allocated amounts. You can either choose to keep open this difference on the partner's account, or reconcile it with the payment(s)"),
380 'writeoff_acc_id': fields.many2one('account.account', 'Counterpart Account', readonly=True, states={'draft': [('readonly', False)]}),380 'writeoff_acc_id': fields.many2one('account.account', 'Counterpart Account', readonly=True, states={'draft': [('readonly', False)]}),
381 'comment': fields.char('Counterpart Comment', size=64, required=True, readonly=True, states={'draft': [('readonly', False)]}),381 'comment': fields.char('Counterpart Comment', required=True, readonly=True, states={'draft': [('readonly', False)]}),
382 'analytic_id': fields.many2one('account.analytic.account','Write-Off Analytic Account', readonly=True, states={'draft': [('readonly', False)]}),382 'analytic_id': fields.many2one('account.analytic.account','Write-Off Analytic Account', readonly=True, states={'draft': [('readonly', False)]}),
383 'writeoff_amount': fields.function(_get_writeoff_amount, string='Difference Amount', type='float', readonly=True, help="Computed as the difference between the amount stated in the voucher and the sum of allocation on the voucher lines."),383 'writeoff_amount': fields.function(_get_writeoff_amount, string='Difference Amount', type='float', readonly=True, help="Computed as the difference between the amount stated in the voucher and the sum of allocation on the voucher lines."),
384 'payment_rate_currency_id': fields.many2one('res.currency', 'Payment Rate Currency', required=True, readonly=True, states={'draft':[('readonly',False)]}),384 'payment_rate_currency_id': fields.many2one('res.currency', 'Payment Rate Currency', required=True, readonly=True, states={'draft':[('readonly',False)]}),
@@ -1484,13 +1484,13 @@
14841484
1485 _columns = {1485 _columns = {
1486 'voucher_id':fields.many2one('account.voucher', 'Voucher', required=1, ondelete='cascade'),1486 'voucher_id':fields.many2one('account.voucher', 'Voucher', required=1, ondelete='cascade'),
1487 'name':fields.char('Description', size=256),1487 'name':fields.char('Description',),
1488 'account_id':fields.many2one('account.account','Account', required=True),1488 'account_id':fields.many2one('account.account','Account', required=True),
1489 'partner_id':fields.related('voucher_id', 'partner_id', type='many2one', relation='res.partner', string='Partner'),1489 'partner_id':fields.related('voucher_id', 'partner_id', type='many2one', relation='res.partner', string='Partner'),
1490 'untax_amount':fields.float('Untax Amount'),1490 'untax_amount':fields.float('Untax Amount'),
1491 'amount':fields.float('Amount', digits_compute=dp.get_precision('Account')),1491 'amount':fields.float('Amount', digits_compute=dp.get_precision('Account')),
1492 'reconcile': fields.boolean('Full Reconcile'),1492 'reconcile': fields.boolean('Full Reconcile'),
1493 'type':fields.selection([('dr','Debit'),('cr','Credit')], 'Dr/Cr'),1493 'type':fields.selection([('dr','Debit'),('cr','Credit')], 'Dr/Cr', size=2),
1494 'account_analytic_id': fields.many2one('account.analytic.account', 'Analytic Account'),1494 'account_analytic_id': fields.many2one('account.analytic.account', 'Analytic Account'),
1495 'move_line_id': fields.many2one('account.move.line', 'Journal Item'),1495 'move_line_id': fields.many2one('account.move.line', 'Journal Item'),
1496 'date_original': fields.related('move_line_id','date', type='date', relation='account.move.line', string='Date', readonly=1),1496 'date_original': fields.related('move_line_id','date', type='date', relation='account.move.line', string='Date', readonly=1),
14971497
=== modified file 'account_voucher/report/account_voucher_sales_receipt.py'
--- account_voucher/report/account_voucher_sales_receipt.py 2013-10-27 12:31:04 +0000
+++ account_voucher/report/account_voucher_sales_receipt.py 2014-05-12 18:39:30 +0000
@@ -32,7 +32,7 @@
32 'day': fields.char('Day', size=128, readonly=True),32 'day': fields.char('Day', size=128, readonly=True),
33 'month': fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'),33 'month': fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'),
34 ('05','May'), ('06','June'), ('07','July'), ('08','August'), ('09','September'),34 ('05','May'), ('06','June'), ('07','July'), ('08','August'), ('09','September'),
35 ('10','October'), ('11','November'), ('12','December')], 'Month', readonly=True),35 ('10','October'), ('11','November'), ('12','December')], 'Month', size=2, readonly=True),
36 'currency_id': fields.many2one('res.currency', 'Currency', readonly=True),36 'currency_id': fields.many2one('res.currency', 'Currency', readonly=True),
37 'journal_id': fields.many2one('account.journal', 'Journal', readonly=True),37 'journal_id': fields.many2one('account.journal', 'Journal', readonly=True),
38 'partner_id': fields.many2one('res.partner', 'Partner', readonly=True),38 'partner_id': fields.many2one('res.partner', 'Partner', readonly=True),
@@ -46,17 +46,17 @@
46 ('purchase','Purchase'),46 ('purchase','Purchase'),
47 ('payment','Payment'),47 ('payment','Payment'),
48 ('receipt','Receipt'),48 ('receipt','Receipt'),
49 ],'Type', readonly=True),49 ],'Type', size=8, readonly=True),
50 'state': fields.selection([50 'state': fields.selection([
51 ('draft','Draft'),51 ('draft','Draft'),
52 ('proforma','Pro-forma'),52 ('proforma','Pro-forma'),
53 ('posted','Posted'),53 ('posted','Posted'),
54 ('cancel','Cancelled')54 ('cancel','Cancelled')
55 ], 'Voucher Status', readonly=True),55 ], 'Voucher Status', size=8, readonly=True),
56 'pay_now':fields.selection([56 'pay_now':fields.selection([
57 ('pay_now','Pay Directly'),57 ('pay_now','Pay Directly'),
58 ('pay_later','Pay Later or Group Funds'),58 ('pay_later','Pay Later or Group Funds'),
59 ],'Payment', readonly=True),59 ],'Payment', size=9, readonly=True),
60 'date_due': fields.date('Due Date', readonly=True),60 'date_due': fields.date('Due Date', readonly=True),
61 'account_id': fields.many2one('account.account', 'Account',readonly=True),61 'account_id': fields.many2one('account.account', 'Account',readonly=True),
62 'delay_to_pay': fields.float('Avg. Delay To Pay', readonly=True, group_operator="avg"),62 'delay_to_pay': fields.float('Avg. Delay To Pay', readonly=True, group_operator="avg"),
6363
=== modified file 'analytic/analytic.py'
--- analytic/analytic.py 2014-04-01 12:36:57 +0000
+++ analytic/analytic.py 2014-05-12 18:39:30 +0000
@@ -171,10 +171,10 @@
171 return result171 return result
172172
173 _columns = {173 _columns = {
174 'name': fields.char('Account/Contract Name', size=128, required=True, track_visibility='onchange'),174 'name': fields.char('Account/Contract Name', required=True, track_visibility='onchange'),
175 'complete_name': fields.function(_get_full_name, type='char', string='Full Name'),175 'complete_name': fields.function(_get_full_name, type='char', string='Full Name'),
176 'code': fields.char('Reference', select=True, track_visibility='onchange'),176 'code': fields.char('Reference', select=True, track_visibility='onchange'),
177 'type': fields.selection([('view','Analytic View'), ('normal','Analytic Account'),('contract','Contract or Project'),('template','Template of Contract')], 'Type of Account', required=True,177 'type': fields.selection([('view','Analytic View'), ('normal','Analytic Account'),('contract','Contract or Project'),('template','Template of Contract')], 'Type of Account', size=8, required=True,
178 help="If you select the View Type, it means you won\'t allow to create journal entries using that account.\n"\178 help="If you select the View Type, it means you won\'t allow to create journal entries using that account.\n"\
179 "The type 'Analytic account' stands for usual accounts that you only want to use in accounting.\n"\179 "The type 'Analytic account' stands for usual accounts that you only want to use in accounting.\n"\
180 "If you select Contract or Project, it offers you the possibility to manage the validity and the invoicing options for this account.\n"\180 "If you select Contract or Project, it offers you the possibility to manage the validity and the invoicing options for this account.\n"\
@@ -196,7 +196,7 @@
196 'date_start': fields.date('Start Date'),196 'date_start': fields.date('Start Date'),
197 'date': fields.date('Expiration Date', select=True, track_visibility='onchange'),197 'date': fields.date('Expiration Date', select=True, track_visibility='onchange'),
198 'company_id': fields.many2one('res.company', 'Company', required=False), #not required because we want to allow different companies to use the same chart of account, except for leaf accounts.198 'company_id': fields.many2one('res.company', 'Company', required=False), #not required because we want to allow different companies to use the same chart of account, except for leaf accounts.
199 'state': fields.selection([('template', 'Template'),('draft','New'),('open','In Progress'),('pending','To Renew'),('close','Closed'),('cancelled', 'Cancelled')], 'Status', required=True, track_visibility='onchange'),199 'state': fields.selection([('template', 'Template'),('draft','New'),('open','In Progress'),('pending','To Renew'),('close','Closed'),('cancelled', 'Cancelled')], 'Status', size=9, required=True, track_visibility='onchange'),
200 'currency_id': fields.function(_currency, fnct_inv=_set_company_currency, #the currency_id field is readonly except if it's a view account and if there is no company200 'currency_id': fields.function(_currency, fnct_inv=_set_company_currency, #the currency_id field is readonly except if it's a view account and if there is no company
201 store = {201 store = {
202 'res.company': (_get_analytic_account, ['currency_id'], 10),202 'res.company': (_get_analytic_account, ['currency_id'], 10),
@@ -314,7 +314,7 @@
314 _description = 'Analytic Line'314 _description = 'Analytic Line'
315315
316 _columns = {316 _columns = {
317 'name': fields.char('Description', size=256, required=True),317 'name': fields.char('Description', required=True),
318 'date': fields.date('Date', required=True, select=True),318 'date': fields.date('Date', required=True, select=True),
319 'amount': fields.float('Amount', required=True, help='Calculated by multiplying the quantity and the price given in the Product\'s cost price. Always expressed in the company main currency.', digits_compute=dp.get_precision('Account')),319 'amount': fields.float('Amount', required=True, help='Calculated by multiplying the quantity and the price given in the Product\'s cost price. Always expressed in the company main currency.', digits_compute=dp.get_precision('Account')),
320 'unit_amount': fields.float('Quantity', help='Specifies the amount of quantity to count.'),320 'unit_amount': fields.float('Quantity', help='Specifies the amount of quantity to count.'),
321321
=== modified file 'anonymization/anonymization.py'
--- anonymization/anonymization.py 2013-10-27 12:31:04 +0000
+++ anonymization/anonymization.py 2014-05-12 18:39:30 +0000
@@ -54,11 +54,11 @@
54 _rec_name = 'field_id'54 _rec_name = 'field_id'
5555
56 _columns = {56 _columns = {
57 'model_name': fields.char('Object Name', size=128, required=True),57 'model_name': fields.char('Object Name', required=True),
58 'model_id': fields.many2one('ir.model', 'Object', ondelete='set null'),58 'model_id': fields.many2one('ir.model', 'Object', ondelete='set null'),
59 'field_name': fields.char('Field Name', size=128, required=True),59 'field_name': fields.char('Field Name', required=True),
60 'field_id': fields.many2one('ir.model.fields', 'Field', ondelete='set null'),60 'field_id': fields.many2one('ir.model.fields', 'Field', ondelete='set null'),
61 'state': fields.selection(selection=FIELD_STATES, String='Status', required=True, readonly=True),61 'state': fields.selection(selection=FIELD_STATES, String='Status', size=12, required=True, readonly=True),
62 }62 }
6363
64 _sql_constraints = [64 _sql_constraints = [
@@ -225,10 +225,10 @@
225 _columns = {225 _columns = {
226 'date': fields.datetime('Date', required=True, readonly=True),226 'date': fields.datetime('Date', required=True, readonly=True),
227 'field_ids': fields.many2many('ir.model.fields.anonymization', 'anonymized_field_to_history_rel', 'field_id', 'history_id', 'Fields', readonly=True),227 'field_ids': fields.many2many('ir.model.fields.anonymization', 'anonymized_field_to_history_rel', 'field_id', 'history_id', 'Fields', readonly=True),
228 'state': fields.selection(selection=ANONYMIZATION_HISTORY_STATE, string='Status', required=True, readonly=True),228 'state': fields.selection(selection=ANONYMIZATION_HISTORY_STATE, string='Status', size=12, required=True, readonly=True),
229 'direction': fields.selection(selection=ANONYMIZATION_DIRECTION, string='Direction', required=True, readonly=True),229 'direction': fields.selection(selection=ANONYMIZATION_DIRECTION, string='Direction', size=20, required=True, readonly=True),
230 'msg': fields.text('Message', readonly=True),230 'msg': fields.text('Message', readonly=True),
231 'filepath': fields.char(string='File path', size=256, readonly=True),231 'filepath': fields.char(string='File path', readonly=True),
232 }232 }
233233
234234
@@ -253,7 +253,7 @@
253 return res253 return res
254254
255 _columns = {255 _columns = {
256 'name': fields.char(size=64, string='File Name'),256 'name': fields.char(string='File Name'),
257 'summary': fields.function(_get_summary, type='text', string='Summary'),257 'summary': fields.function(_get_summary, type='text', string='Summary'),
258 'file_export': fields.binary(string='Export'),258 'file_export': fields.binary(string='Export'),
259 'file_import': fields.binary(string='Import', help="This is the file created by the anonymization process. It should have the '.pickle' extention."),259 'file_import': fields.binary(string='Import', help="This is the file created by the anonymization process. It should have the '.pickle' extention."),
@@ -629,7 +629,7 @@
629 'model_name': fields.char('Model'),629 'model_name': fields.char('Model'),
630 'field_name': fields.char('Field'),630 'field_name': fields.char('Field'),
631 'query': fields.text('Query'),631 'query': fields.text('Query'),
632 'query_type': fields.selection(string='Query', selection=[('sql', 'sql'), ('python', 'python')]),632 'query_type': fields.selection(string='Query', selection=[('sql', 'sql'), ('python', 'python')], size=6),
633 'sequence': fields.integer('Sequence'),633 'sequence': fields.integer('Sequence'),
634 }634 }
635635
636636
=== modified file 'auth_ldap/users_ldap.py'
--- auth_ldap/users_ldap.py 2014-01-29 18:47:03 +0000
+++ auth_ldap/users_ldap.py 2014-05-12 18:39:30 +0000
@@ -205,16 +205,16 @@
205 'sequence': fields.integer('Sequence'),205 'sequence': fields.integer('Sequence'),
206 'company': fields.many2one('res.company', 'Company', required=True,206 'company': fields.many2one('res.company', 'Company', required=True,
207 ondelete='cascade'),207 ondelete='cascade'),
208 'ldap_server': fields.char('LDAP Server address', size=64, required=True),208 'ldap_server': fields.char('LDAP Server address', required=True),
209 'ldap_server_port': fields.integer('LDAP Server port', required=True),209 'ldap_server_port': fields.integer('LDAP Server port', required=True),
210 'ldap_binddn': fields.char('LDAP binddn', size=64,210 'ldap_binddn': fields.char('LDAP binddn',
211 help=("The user account on the LDAP server that is used to query "211 help=("The user account on the LDAP server that is used to query "
212 "the directory. Leave empty to connect anonymously.")),212 "the directory. Leave empty to connect anonymously.")),
213 'ldap_password': fields.char('LDAP password', size=64,213 'ldap_password': fields.char('LDAP password',
214 help=("The password of the user account on the LDAP server that is "214 help=("The password of the user account on the LDAP server that is "
215 "used to query the directory.")),215 "used to query the directory.")),
216 'ldap_filter': fields.char('LDAP filter', size=256, required=True),216 'ldap_filter': fields.char('LDAP filter', required=True),
217 'ldap_base': fields.char('LDAP base', size=64, required=True),217 'ldap_base': fields.char('LDAP base', required=True),
218 'user': fields.many2one('res.users', 'Template User',218 'user': fields.many2one('res.users', 'Template User',
219 help="User to copy when creating new users"),219 help="User to copy when creating new users"),
220 'create_user': fields.boolean('Create user',220 'create_user': fields.boolean('Create user',
221221
=== modified file 'base_action_rule/base_action_rule.py'
--- base_action_rule/base_action_rule.py 2014-02-12 17:51:41 +0000
+++ base_action_rule/base_action_rule.py 2014-05-12 18:39:30 +0000
@@ -54,7 +54,7 @@
54 _order = 'sequence'54 _order = 'sequence'
5555
56 _columns = {56 _columns = {
57 'name': fields.char('Rule Name', size=64, required=True),57 'name': fields.char('Rule Name', required=True),
58 'model_id': fields.many2one('ir.model', 'Related Document Model',58 'model_id': fields.many2one('ir.model', 'Related Document Model',
59 required=True, domain=[('osv_memory', '=', False)]),59 required=True, domain=[('osv_memory', '=', False)]),
60 'model': fields.related('model_id', 'model', type="char", size=256, string='Model'),60 'model': fields.related('model_id', 'model', type="char", size=256, string='Model'),
@@ -68,7 +68,7 @@
68 ('on_write', 'On Update'),68 ('on_write', 'On Update'),
69 ('on_create_or_write', 'On Creation & Update'),69 ('on_create_or_write', 'On Creation & Update'),
70 ('on_time', 'Based on Timed Condition')],70 ('on_time', 'Based on Timed Condition')],
71 string='When to Run'),71 string='When to Run', size=18),
72 'trg_date_id': fields.many2one('ir.model.fields', string='Trigger Date',72 'trg_date_id': fields.many2one('ir.model.fields', string='Trigger Date',
73 help="When should the condition be triggered. If present, will be checked by the scheduler. If empty, will be checked at creation and update.",73 help="When should the condition be triggered. If present, will be checked by the scheduler. If empty, will be checked at creation and update.",
74 domain="[('model_id', '=', model_id), ('ttype', 'in', ('date', 'datetime'))]"),74 domain="[('model_id', '=', model_id), ('ttype', 'in', ('date', 'datetime'))]"),
@@ -77,7 +77,7 @@
77 "You can put a negative number if you need a delay before the" \77 "You can put a negative number if you need a delay before the" \
78 "trigger date, like sending a reminder 15 minutes before a meeting."),78 "trigger date, like sending a reminder 15 minutes before a meeting."),
79 'trg_date_range_type': fields.selection([('minutes', 'Minutes'), ('hour', 'Hours'),79 'trg_date_range_type': fields.selection([('minutes', 'Minutes'), ('hour', 'Hours'),
80 ('day', 'Days'), ('month', 'Months')], 'Delay type'),80 ('day', 'Days'), ('month', 'Months')], 'Delay type', size=7),
81 'trg_date_calendar_id': fields.many2one(81 'trg_date_calendar_id': fields.many2one(
82 'resource.calendar', 'Use Calendar',82 'resource.calendar', 'Use Calendar',
83 help='When calculating a day-based timed condition, it is possible to use a calendar to compute the date based on working days.',83 help='When calculating a day-based timed condition, it is possible to use a calendar to compute the date based on working days.',
8484
=== modified file 'base_action_rule/test_models.py'
--- base_action_rule/test_models.py 2013-10-27 12:31:04 +0000
+++ base_action_rule/test_models.py 2014-05-12 18:39:30 +0000
@@ -12,9 +12,9 @@
12 _name = "base.action.rule.lead.test"12 _name = "base.action.rule.lead.test"
1313
14 _columns = {14 _columns = {
15 'name': fields.char('Subject', size=64, required=True, select=1),15 'name': fields.char('Subject', required=True, select=1),
16 'user_id': fields.many2one('res.users', 'Responsible'),16 'user_id': fields.many2one('res.users', 'Responsible'),
17 'state': fields.selection(AVAILABLE_STATES, string="Status", readonly=True),17 'state': fields.selection(AVAILABLE_STATES, string="Status", size=7, readonly=True),
18 'active': fields.boolean('Active', required=False),18 'active': fields.boolean('Active', required=False),
19 'partner_id': fields.many2one('res.partner', 'Partner', ondelete='set null'),19 'partner_id': fields.many2one('res.partner', 'Partner', ondelete='set null'),
20 'date_action_last': fields.datetime('Last Action', readonly=1),20 'date_action_last': fields.datetime('Last Action', readonly=1),
2121
=== modified file 'base_gengo/ir_translation.py'
--- base_gengo/ir_translation.py 2014-04-01 05:45:18 +0000
+++ base_gengo/ir_translation.py 2014-05-12 18:39:30 +0000
@@ -61,11 +61,11 @@
61 _inherit = "ir.translation"61 _inherit = "ir.translation"
62 _columns = {62 _columns = {
63 'gengo_comment': fields.text("Comments & Activity Linked to Gengo"),63 'gengo_comment': fields.text("Comments & Activity Linked to Gengo"),
64 'job_id': fields.char('Gengo Job ID', size=32),64 'job_id': fields.char('Gengo Job ID'),
65 "gengo_translation": fields.selection([('machine', 'Translation By Machine'),65 "gengo_translation": fields.selection([('machine', 'Translation By Machine'),
66 ('standard', 'Standard'),66 ('standard', 'Standard'),
67 ('pro', 'Pro'),67 ('pro', 'Pro'),
68 ('ultra', 'Ultra')], "Gengo Translation Service Level", help='You can select here the service level you want for an automatic translation using Gengo.'),68 ('ultra', 'Ultra')], "Gengo Translation Service Level", size=8, help='You can select here the service level you want for an automatic translation using Gengo.'),
69 }69 }
7070
71 def _get_all_supported_languages(self, cr, uid, context=None):71 def _get_all_supported_languages(self, cr, uid, context=None):
7272
=== modified file 'base_gengo/wizard/base_gengo_translations.py'
--- base_gengo/wizard/base_gengo_translations.py 2014-04-09 21:59:27 +0000
+++ base_gengo/wizard/base_gengo_translations.py 2014-05-12 18:39:30 +0000
@@ -42,7 +42,7 @@
42 _columns = {42 _columns = {
43 'sync_type': fields.selection([('send', 'Send New Terms'),43 'sync_type': fields.selection([('send', 'Send New Terms'),
44 ('receive', 'Receive Translation'),44 ('receive', 'Receive Translation'),
45 ('both', 'Both')], "Sync Type"),45 ('both', 'Both')], "Sync Type", size=7),
46 'lang_id': fields.many2one('res.lang', 'Language', required=True),46 'lang_id': fields.many2one('res.lang', 'Language', required=True),
47 'sync_limit': fields.integer("No. of terms to sync"),47 'sync_limit': fields.integer("No. of terms to sync"),
48 }48 }
4949
=== modified file 'base_import/models.py'
--- base_import/models.py 2014-03-13 09:19:20 +0000
+++ base_import/models.py 2014-05-12 18:39:30 +0000
@@ -22,11 +22,11 @@
22 _transient_max_hours = 12.022 _transient_max_hours = 12.0
2323
24 _columns = {24 _columns = {
25 'res_model': fields.char('Model', size=64),25 'res_model': fields.char('Model'),
26 'file': fields.binary(26 'file': fields.binary(
27 'File', help="File to check and/or import, raw binary (not base64)"),27 'File', help="File to check and/or import, raw binary (not base64)"),
28 'file_name': fields.char('File Name', size=None),28 'file_name': fields.char('File Name'),
29 'file_type': fields.char('File Type', size=None),29 'file_type': fields.char('File Type'),
30 }30 }
3131
32 def get_fields(self, cr, uid, model, context=None,32 def get_fields(self, cr, uid, model, context=None,
3333
=== modified file 'base_import/test_models.py'
--- base_import/test_models.py 2012-09-11 13:24:46 +0000
+++ base_import/test_models.py 2014-05-12 18:39:30 +0000
@@ -6,42 +6,42 @@
6 _name = name('char')6 _name = name('char')
77
8 _columns = {8 _columns = {
9 'value': fields.char('unknown', size=None)9 'value': fields.char('unknown')
10 }10 }
1111
12class char_required(orm.Model):12class char_required(orm.Model):
13 _name = name('char.required')13 _name = name('char.required')
1414
15 _columns = {15 _columns = {
16 'value': fields.char('unknown', size=None, required=True)16 'value': fields.char('unknown', required=True)
17 }17 }
1818
19class char_readonly(orm.Model):19class char_readonly(orm.Model):
20 _name = name('char.readonly')20 _name = name('char.readonly')
2121
22 _columns = {22 _columns = {
23 'value': fields.char('unknown', size=None, readonly=True)23 'value': fields.char('unknown', readonly=True)
24 }24 }
2525
26class char_states(orm.Model):26class char_states(orm.Model):
27 _name = name('char.states')27 _name = name('char.states')
2828
29 _columns = {29 _columns = {
30 'value': fields.char('unknown', size=None, readonly=True, states={'draft': [('readonly', False)]})30 'value': fields.char('unknown', readonly=True, states={'draft': [('readonly', False)]})
31 }31 }
3232
33class char_noreadonly(orm.Model):33class char_noreadonly(orm.Model):
34 _name = name('char.noreadonly')34 _name = name('char.noreadonly')
3535
36 _columns = {36 _columns = {
37 'value': fields.char('unknown', size=None, readonly=True, states={'draft': [('invisible', True)]})37 'value': fields.char('unknown', readonly=True, states={'draft': [('invisible', True)]})
38 }38 }
3939
40class char_stillreadonly(orm.Model):40class char_stillreadonly(orm.Model):
41 _name = name('char.stillreadonly')41 _name = name('char.stillreadonly')
4242
43 _columns = {43 _columns = {
44 'value': fields.char('unknown', size=None, readonly=True, states={'draft': [('readonly', True)]})44 'value': fields.char('unknown', readonly=True, states={'draft': [('readonly', True)]})
45 }45 }
4646
47# TODO: complex field (m2m, o2m, m2o)47# TODO: complex field (m2m, o2m, m2o)
@@ -95,7 +95,7 @@
95 _name = name('preview')95 _name = name('preview')
9696
97 _columns = {97 _columns = {
98 'name': fields.char('Name', size=None),98 'name': fields.char('Name'),
99 'somevalue': fields.integer('Some Value', required=True),99 'somevalue': fields.integer('Some Value', required=True),
100 'othervalue': fields.integer('Other Variable'),100 'othervalue': fields.integer('Other Variable'),
101 }101 }
102102
=== modified file 'base_report_designer/installer.py'
--- base_report_designer/installer.py 2013-10-27 12:31:04 +0000
+++ base_report_designer/installer.py 2014-05-12 18:39:30 +0000
@@ -35,8 +35,8 @@
35 return data35 return data
3636
37 _columns = {37 _columns = {
38 'name':fields.char('File name', size=34),38 'name':fields.char('File name'),
39 'plugin_file':fields.char('OpenObject Report Designer Plug-in', size=256, readonly=True, help="OpenObject Report Designer plug-in file. Save as this file and install this plug-in in OpenOffice."),39 'plugin_file':fields.char('OpenObject Report Designer Plug-in', readonly=True, help="OpenObject Report Designer plug-in file. Save as this file and install this plug-in in OpenOffice."),
40 'description':fields.text('Description', readonly=True)40 'description':fields.text('Description', readonly=True)
41 }41 }
4242
4343
=== modified file 'base_setup/base_setup.py'
--- base_setup/base_setup.py 2013-10-27 12:31:04 +0000
+++ base_setup/base_setup.py 2014-05-12 18:39:30 +0000
@@ -40,7 +40,7 @@
40 ('Donor','Donor'),40 ('Donor','Donor'),
41 ('Guest','Guest'),41 ('Guest','Guest'),
42 ('Tenant','Tenant')42 ('Tenant','Tenant')
43 ], 'How do you call a Customer', required=True ),43 ], 'How do you call a Customer', size=8, required=True ),
44 }44 }
45 _defaults={45 _defaults={
46 'partner' :'Customer',46 'partner' :'Customer',
4747
=== modified file 'board/board.py'
--- board/board.py 2013-10-30 19:55:08 +0000
+++ board/board.py 2014-05-12 18:39:30 +0000
@@ -168,7 +168,7 @@
168 _description = "Board Creation"168 _description = "Board Creation"
169169
170 _columns = {170 _columns = {
171 'name': fields.char('Board Name', size=64, required=True),171 'name': fields.char('Board Name', required=True),
172 'menu_parent_id': fields.many2one('ir.ui.menu', 'Parent Menu', required=True),172 'menu_parent_id': fields.many2one('ir.ui.menu', 'Parent Menu', required=True),
173 }173 }
174174
175175
=== modified file 'crm/base_partner_merge.py'
--- crm/base_partner_merge.py 2013-12-19 14:47:39 +0000
+++ crm/base_partner_merge.py 2014-05-12 18:39:30 +0000
@@ -95,7 +95,7 @@
95 'state': fields.selection([('option', 'Option'),95 'state': fields.selection([('option', 'Option'),
96 ('selection', 'Selection'),96 ('selection', 'Selection'),
97 ('finished', 'Finished')],97 ('finished', 'Finished')],
98 'State',98 'State', size=9,
99 readonly=True,99 readonly=True,
100 required=True),100 required=True),
101 'number_group': fields.integer("Group of Contacts", readonly=True),101 'number_group': fields.integer("Group of Contacts", readonly=True),
102102
=== modified file 'crm/crm.py'
--- crm/crm.py 2014-02-28 13:18:55 +0000
+++ crm/crm.py 2014-05-12 18:39:30 +0000
@@ -40,7 +40,7 @@
40 _description = "Channels"40 _description = "Channels"
41 _order = 'name'41 _order = 'name'
42 _columns = {42 _columns = {
43 'name': fields.char('Channel Name', size=64, required=True),43 'name': fields.char('Channel Name', required=True),
44 'active': fields.boolean('Active'),44 'active': fields.boolean('Active'),
45 }45 }
46 _defaults = {46 _defaults = {
@@ -59,7 +59,7 @@
59 _order = "sequence"59 _order = "sequence"
6060
61 _columns = {61 _columns = {
62 'name': fields.char('Stage Name', size=64, required=True, translate=True),62 'name': fields.char('Stage Name', required=True, translate=True),
63 'sequence': fields.integer('Sequence', help="Used to order stages. Lower is better."),63 'sequence': fields.integer('Sequence', help="Used to order stages. Lower is better."),
64 'probability': fields.float('Probability (%)', required=True, help="This percentage depicts the default/average probability of the Case for this stage to be a success"),64 'probability': fields.float('Probability (%)', required=True, help="This percentage depicts the default/average probability of the Case for this stage to be a success"),
65 'on_change': fields.boolean('Change Probability Automatically', help="Setting this stage will change the probability automatically on the opportunity."),65 'on_change': fields.boolean('Change Probability Automatically', help="Setting this stage will change the probability automatically on the opportunity."),
@@ -74,7 +74,7 @@
74 'type': fields.selection([('lead', 'Lead'),74 'type': fields.selection([('lead', 'Lead'),
75 ('opportunity', 'Opportunity'),75 ('opportunity', 'Opportunity'),
76 ('both', 'Both')],76 ('both', 'Both')],
77 string='Type', size=16, required=True,77 string='Type', size=11, required=True,
78 help="This field is used to distinguish stages related to Leads from stages related to Opportunities, or to specify stages available for both types."),78 help="This field is used to distinguish stages related to Leads from stages related to Opportunities, or to specify stages available for both types."),
79 }79 }
8080
@@ -155,8 +155,8 @@
155 return res155 return res
156156
157 _columns = {157 _columns = {
158 'name': fields.char('Sales Team', size=64, required=True, translate=True),158 'name': fields.char('Sales Team', required=True, translate=True),
159 'complete_name': fields.function(get_full_name, type='char', size=256, readonly=True, store=True),159 'complete_name': fields.function(get_full_name, type='char', readonly=True, store=True),
160 'code': fields.char('Code', size=8),160 'code': fields.char('Code', size=8),
161 'active': fields.boolean('Active', help="If the active field is set to "\161 'active': fields.boolean('Active', help="If the active field is set to "\
162 "true, it will allow you to hide the sales team without removing it."),162 "true, it will allow you to hide the sales team without removing it."),
@@ -241,7 +241,7 @@
241 _name = "crm.case.categ"241 _name = "crm.case.categ"
242 _description = "Category of Case"242 _description = "Category of Case"
243 _columns = {243 _columns = {
244 'name': fields.char('Name', size=64, required=True, translate=True),244 'name': fields.char('Name', required=True, translate=True),
245 'section_id': fields.many2one('crm.case.section', 'Sales Team'),245 'section_id': fields.many2one('crm.case.section', 'Sales Team'),
246 'object_id': fields.many2one('ir.model', 'Object Name'),246 'object_id': fields.many2one('ir.model', 'Object Name'),
247 }247 }
@@ -261,7 +261,7 @@
261 _description = "Campaign"261 _description = "Campaign"
262 _rec_name = "name"262 _rec_name = "name"
263 _columns = {263 _columns = {
264 'name': fields.char('Campaign Name', size=64, required=True, translate=True),264 'name': fields.char('Campaign Name', required=True, translate=True),
265 'section_id': fields.many2one('crm.case.section', 'Sales Team'),265 'section_id': fields.many2one('crm.case.section', 'Sales Team'),
266 }266 }
267267
@@ -270,7 +270,7 @@
270 _name = "crm.payment.mode"270 _name = "crm.payment.mode"
271 _description = "CRM Payment Mode"271 _description = "CRM Payment Mode"
272 _columns = {272 _columns = {
273 'name': fields.char('Name', size=64, required=True),273 'name': fields.char('Name', required=True),
274 'section_id': fields.many2one('crm.case.section', 'Sales Team'),274 'section_id': fields.many2one('crm.case.section', 'Sales Team'),
275 }275 }
276276
277277
=== modified file 'crm/crm_lead.py'
--- crm/crm_lead.py 2014-05-08 12:35:29 +0000
+++ crm/crm_lead.py 2014-05-12 18:39:30 +0000
@@ -226,7 +226,7 @@
226 select=True, help="Linked partner (optional). Usually created when converting the lead."),226 select=True, help="Linked partner (optional). Usually created when converting the lead."),
227227
228 'id': fields.integer('ID', readonly=True),228 'id': fields.integer('ID', readonly=True),
229 'name': fields.char('Subject', size=64, required=True, select=1),229 'name': fields.char('Subject', required=True, select=1),
230 'active': fields.boolean('Active', required=False),230 'active': fields.boolean('Active', required=False),
231 'date_action_last': fields.datetime('Last Action', readonly=1),231 'date_action_last': fields.datetime('Last Action', readonly=1),
232 'date_action_next': fields.datetime('Next Action', readonly=1),232 'date_action_next': fields.datetime('Next Action', readonly=1),
@@ -247,13 +247,13 @@
247 'opt_out': fields.boolean('Opt-Out', oldname='optout',247 'opt_out': fields.boolean('Opt-Out', oldname='optout',
248 help="If opt-out is checked, this contact has refused to receive emails for mass mailing and marketing campaign. "248 help="If opt-out is checked, this contact has refused to receive emails for mass mailing and marketing campaign. "
249 "Filter 'Available for Mass Mailing' allows users to filter the leads when performing mass mailing."),249 "Filter 'Available for Mass Mailing' allows users to filter the leads when performing mass mailing."),
250 'type': fields.selection([ ('lead','Lead'), ('opportunity','Opportunity'), ],'Type', select=True, help="Type is used to separate Leads and Opportunities"),250 'type': fields.selection([ ('lead','Lead'), ('opportunity','Opportunity'), ],'Type', size=11, select=True, help="Type is used to separate Leads and Opportunities"),
251 'priority': fields.selection(crm.AVAILABLE_PRIORITIES, 'Priority', select=True),251 'priority': fields.selection(crm.AVAILABLE_PRIORITIES, 'Priority', size=1, select=True),
252 'date_closed': fields.datetime('Closed', readonly=True),252 'date_closed': fields.datetime('Closed', readonly=True),
253 'stage_id': fields.many2one('crm.case.stage', 'Stage', track_visibility='onchange', select=True,253 'stage_id': fields.many2one('crm.case.stage', 'Stage', track_visibility='onchange', select=True,
254 domain="['&', ('section_ids', '=', section_id), '|', ('type', '=', type), ('type', '=', 'both')]"),254 domain="['&', ('section_ids', '=', section_id), '|', ('type', '=', type), ('type', '=', 'both')]"),
255 'user_id': fields.many2one('res.users', 'Salesperson', select=True, track_visibility='onchange'),255 'user_id': fields.many2one('res.users', 'Salesperson', select=True, track_visibility='onchange'),
256 'referred': fields.char('Referred By', size=64),256 'referred': fields.char('Referred By'),
257 'date_open': fields.datetime('Assigned', readonly=True),257 'date_open': fields.datetime('Assigned', readonly=True),
258 'day_open': fields.function(_compute_day, string='Days to Open', \258 'day_open': fields.function(_compute_day, string='Days to Open', \
259 multi='day_open', type="float", store=True),259 multi='day_open', type="float", store=True),
@@ -271,7 +271,7 @@
271 'phone': fields.char("Phone", size=64),271 'phone': fields.char("Phone", size=64),
272 'date_deadline': fields.date('Expected Closing', help="Estimate of the date on which the opportunity will be won."),272 'date_deadline': fields.date('Expected Closing', help="Estimate of the date on which the opportunity will be won."),
273 'date_action': fields.date('Next Action Date', select=True),273 'date_action': fields.date('Next Action Date', select=True),
274 'title_action': fields.char('Next Action', size=64),274 'title_action': fields.char('Next Action'),
275 'color': fields.integer('Color Index'),275 'color': fields.integer('Color Index'),
276 'partner_address_name': fields.related('partner_id', 'name', type='char', string='Partner Contact Name', readonly=True),276 'partner_address_name': fields.related('partner_id', 'name', type='char', string='Partner Contact Name', readonly=True),
277 'partner_address_email': fields.related('partner_id', 'email', type='char', string='Partner Contact Email', readonly=True),277 'partner_address_email': fields.related('partner_id', 'email', type='char', string='Partner Contact Email', readonly=True),
@@ -280,16 +280,16 @@
280 'user_login': fields.related('user_id', 'login', type='char', string='User Login', readonly=True),280 'user_login': fields.related('user_id', 'login', type='char', string='User Login', readonly=True),
281281
282 # Fields for address, due to separation from crm and res.partner282 # Fields for address, due to separation from crm and res.partner
283 'street': fields.char('Street', size=128),283 'street': fields.char('Street'),
284 'street2': fields.char('Street2', size=128),284 'street2': fields.char('Street2'),
285 'zip': fields.char('Zip', change_default=True, size=24),285 'zip': fields.char('Zip', change_default=True),
286 'city': fields.char('City', size=128),286 'city': fields.char('City'),
287 'state_id': fields.many2one("res.country.state", 'State'),287 'state_id': fields.many2one("res.country.state", 'State'),
288 'country_id': fields.many2one('res.country', 'Country'),288 'country_id': fields.many2one('res.country', 'Country'),
289 'phone': fields.char('Phone', size=64),289 'phone': fields.char('Phone'),
290 'fax': fields.char('Fax', size=64),290 'fax': fields.char('Fax'),
291 'mobile': fields.char('Mobile', size=64),291 'mobile': fields.char('Mobile'),
292 'function': fields.char('Function', size=128),292 'function': fields.char('Function'),
293 'title': fields.many2one('res.partner.title', 'Title'),293 'title': fields.many2one('res.partner.title', 'Title'),
294 'company_id': fields.many2one('res.company', 'Company', select=1),294 'company_id': fields.many2one('res.company', 'Company', select=1),
295 'payment_mode': fields.many2one('crm.payment.mode', 'Payment Mode', \295 'payment_mode': fields.many2one('crm.payment.mode', 'Payment Mode', \
296296
=== modified file 'crm/crm_phonecall.py'
--- crm/crm_phonecall.py 2014-05-08 12:35:29 +0000
+++ crm/crm_phonecall.py 2014-05-12 18:39:30 +0000
@@ -47,22 +47,22 @@
47 ('cancel', 'Cancelled'),47 ('cancel', 'Cancelled'),
48 ('pending', 'Pending'),48 ('pending', 'Pending'),
49 ('done', 'Held')49 ('done', 'Held')
50 ], string='Status', readonly=True, track_visibility='onchange',50 ], string='Status', size=7, readonly=True, track_visibility='onchange',
51 help='The status is set to Confirmed, when a case is created.\n'51 help='The status is set to Confirmed, when a case is created.\n'
52 'When the call is over, the status is set to Held.\n'52 'When the call is over, the status is set to Held.\n'
53 'If the callis not applicable anymore, the status can be set to Cancelled.'),53 'If the callis not applicable anymore, the status can be set to Cancelled.'),
54 'email_from': fields.char('Email', size=128, help="These people will receive email."),54 'email_from': fields.char('Email', size=128, help="These people will receive email."),
55 'date_open': fields.datetime('Opened', readonly=True),55 'date_open': fields.datetime('Opened', readonly=True),
56 # phonecall fields56 # phonecall fields
57 'name': fields.char('Call Summary', size=64, required=True),57 'name': fields.char('Call Summary', required=True),
58 'active': fields.boolean('Active', required=False),58 'active': fields.boolean('Active', required=False),
59 'duration': fields.float('Duration', help='Duration in minutes and seconds.'),59 'duration': fields.float('Duration', help='Duration in minutes and seconds.'),
60 'categ_id': fields.many2one('crm.case.categ', 'Category', \60 'categ_id': fields.many2one('crm.case.categ', 'Category', \
61 domain="['|',('section_id','=',section_id),('section_id','=',False),\61 domain="['|',('section_id','=',section_id),('section_id','=',False),\
62 ('object_id.model', '=', 'crm.phonecall')]"),62 ('object_id.model', '=', 'crm.phonecall')]"),
63 'partner_phone': fields.char('Phone', size=32),63 'partner_phone': fields.char('Phone'),
64 'partner_mobile': fields.char('Mobile', size=32),64 'partner_mobile': fields.char('Mobile'),
65 'priority': fields.selection([('0','Low'), ('1','Normal'), ('2','High')], 'Priority'),65 'priority': fields.selection([('0','Low'), ('1','Normal'), ('2','High')], 'Priority', size=1),
66 'date_closed': fields.datetime('Closed', readonly=True),66 'date_closed': fields.datetime('Closed', readonly=True),
67 'date': fields.datetime('Date'),67 'date': fields.datetime('Date'),
68 'opportunity_id': fields.many2one ('crm.lead', 'Lead/Opportunity'),68 'opportunity_id': fields.many2one ('crm.lead', 'Lead/Opportunity'),
6969
=== modified file 'crm/crm_segmentation.py'
--- crm/crm_segmentation.py 2013-10-27 12:31:04 +0000
+++ crm/crm_segmentation.py 2014-05-12 18:39:30 +0000
@@ -30,7 +30,7 @@
30 _description = "Partner Segmentation"30 _description = "Partner Segmentation"
3131
32 _columns = {32 _columns = {
33 'name': fields.char('Name', size=64, required=True, help='The name of the segmentation.'),33 'name': fields.char('Name', required=True, help='The name of the segmentation.'),
34 'description': fields.text('Description'),34 'description': fields.text('Description'),
35 'categ_id': fields.many2one('res.partner.category', 'Partner Category',\35 'categ_id': fields.many2one('res.partner.category', 'Partner Category',\
36 required=True, help='The partner category that will be \36 required=True, help='The partner category that will be \
@@ -38,7 +38,7 @@
38 'exclusif': fields.boolean('Exclusive', help='Check if the category is limited to partners that match the segmentation criterions.\38 'exclusif': fields.boolean('Exclusive', help='Check if the category is limited to partners that match the segmentation criterions.\
39 \nIf checked, remove the category from partners that doesn\'t match segmentation criterions'),39 \nIf checked, remove the category from partners that doesn\'t match segmentation criterions'),
40 'state': fields.selection([('not running','Not Running'),\40 'state': fields.selection([('not running','Not Running'),\
41 ('running','Running')], 'Execution Status', readonly=True),41 ('running','Running')], 'Execution Status', size=11, readonly=True),
42 'partner_id': fields.integer('Max Partner ID processed'),42 'partner_id': fields.integer('Max Partner ID processed'),
43 'segmentation_line': fields.one2many('crm.segmentation.line', \43 'segmentation_line': fields.one2many('crm.segmentation.line', \
44 'segmentation_id', 'Criteria', required=True),44 'segmentation_id', 'Criteria', required=True),
@@ -115,14 +115,14 @@
115 _description = "Segmentation line"115 _description = "Segmentation line"
116116
117 _columns = {117 _columns = {
118 'name': fields.char('Rule Name', size=64, required=True),118 'name': fields.char('Rule Name', required=True),
119 'segmentation_id': fields.many2one('crm.segmentation', 'Segmentation'),119 'segmentation_id': fields.many2one('crm.segmentation', 'Segmentation'),
120 'expr_name': fields.selection([('sale','Sale Amount'),120 'expr_name': fields.selection([('sale','Sale Amount'),
121 ('purchase','Purchase Amount')], 'Control Variable', size=64, required=True),121 ('purchase','Purchase Amount')], 'Control Variable', size=8, required=True),
122 'expr_operator': fields.selection([('<','<'),('=','='),('>','>')], 'Operator', required=True),122 'expr_operator': fields.selection([('<','<'),('=','='),('>','>')], 'Operator', size=1, required=True),
123 'expr_value': fields.float('Value', required=True),123 'expr_value': fields.float('Value', required=True),
124 'operator': fields.selection([('and','Mandatory Expression'),\124 'operator': fields.selection([('and','Mandatory Expression'),\
125 ('or','Optional Expression')],'Mandatory / Optional', required=True),125 ('or','Optional Expression')],'Mandatory / Optional', size=3, required=True),
126 }126 }
127 _defaults = {127 _defaults = {
128 'expr_name': lambda *a: 'sale',128 'expr_name': lambda *a: 'sale',
129129
=== modified file 'crm/report/crm_lead_report.py'
--- crm/report/crm_lead_report.py 2014-02-07 13:51:34 +0000
+++ crm/report/crm_lead_report.py 2014-05-12 18:39:30 +0000
@@ -46,7 +46,7 @@
46 _rec_name = 'date_deadline'46 _rec_name = 'date_deadline'
4747
48 _columns = {48 _columns = {
49 'date_deadline': fields.date('Exp. Closing', size=10, readonly=True, help="Expected Closing"),49 'date_deadline': fields.date('Exp. Closing', readonly=True, help="Expected Closing"),
50 'create_date': fields.datetime('Creation Date', readonly=True),50 'create_date': fields.datetime('Creation Date', readonly=True),
51 'opening_date': fields.date('Assignation Date', readonly=True),51 'opening_date': fields.date('Assignation Date', readonly=True),
52 'date_closed': fields.date('Close Date', readonly=True),52 'date_closed': fields.date('Close Date', readonly=True),
@@ -73,7 +73,7 @@
73 'type':fields.selection([73 'type':fields.selection([
74 ('lead','Lead'),74 ('lead','Lead'),
75 ('opportunity','Opportunity'),75 ('opportunity','Opportunity'),
76 ],'Type', help="Type is used to separate Leads and Opportunities"),76 ],'Type', size=11, help="Type is used to separate Leads and Opportunities"),
77 }77 }
7878
79 def init(self, cr):79 def init(self, cr):
8080
=== modified file 'crm/report/crm_phonecall_report.py'
--- crm/report/crm_phonecall_report.py 2014-02-14 11:49:37 +0000
+++ crm/report/crm_phonecall_report.py 2014-05-12 18:39:30 +0000
@@ -42,9 +42,9 @@
42 _columns = {42 _columns = {
43 'user_id':fields.many2one('res.users', 'User', readonly=True),43 'user_id':fields.many2one('res.users', 'User', readonly=True),
44 'section_id':fields.many2one('crm.case.section', 'Section', readonly=True),44 'section_id':fields.many2one('crm.case.section', 'Section', readonly=True),
45 'priority': fields.selection([('0','Low'), ('1','Normal'), ('2','High')], 'Priority'),45 'priority': fields.selection([('0','Low'), ('1','Normal'), ('2','High')], 'Priority', size=1),
46 'nbr': fields.integer('# of Cases', readonly=True),46 'nbr': fields.integer('# of Cases', readonly=True),
47 'state': fields.selection(AVAILABLE_STATES, 'Status', size=16, readonly=True),47 'state': fields.selection(AVAILABLE_STATES, 'Status', size=7, readonly=True),
48 'create_date': fields.datetime('Create Date', readonly=True, select=True),48 'create_date': fields.datetime('Create Date', readonly=True, select=True),
49 'delay_close': fields.float('Delay to close', digits=(16,2),readonly=True, group_operator="avg",help="Number of Days to close the case"),49 'delay_close': fields.float('Delay to close', digits=(16,2),readonly=True, group_operator="avg",help="Number of Days to close the case"),
50 'duration': fields.float('Duration', digits=(16,2),readonly=True, group_operator="avg"),50 'duration': fields.float('Duration', digits=(16,2),readonly=True, group_operator="avg"),
5151
=== modified file 'crm/wizard/crm_lead_to_opportunity.py'
--- crm/wizard/crm_lead_to_opportunity.py 2014-03-24 13:38:11 +0000
+++ crm/wizard/crm_lead_to_opportunity.py 2014-05-12 18:39:30 +0000
@@ -33,7 +33,7 @@
33 'name': fields.selection([33 'name': fields.selection([
34 ('convert', 'Convert to opportunity'),34 ('convert', 'Convert to opportunity'),
35 ('merge', 'Merge with existing opportunities')35 ('merge', 'Merge with existing opportunities')
36 ], 'Conversion Action', required=True),36 ], 'Conversion Action', size=7, required=True),
37 'opportunity_ids': fields.many2many('crm.lead', string='Opportunities'),37 'opportunity_ids': fields.many2many('crm.lead', string='Opportunities'),
38 'user_id': fields.many2one('res.users', 'Salesperson', select=True),38 'user_id': fields.many2one('res.users', 'Salesperson', select=True),
39 'section_id': fields.many2one('crm.case.section', 'Sales Team', select=True),39 'section_id': fields.many2one('crm.case.section', 'Sales Team', select=True),
@@ -199,7 +199,7 @@
199 'action': fields.selection([199 'action': fields.selection([
200 ('each_exist_or_create', 'Use existing partner or create'),200 ('each_exist_or_create', 'Use existing partner or create'),
201 ('nothing', 'Do not link to a customer')201 ('nothing', 'Do not link to a customer')
202 ], 'Related Customer', required=True),202 ], 'Related Customer', size=20, required=True),
203 'force_assignation': fields.boolean('Force assignation', help='If unchecked, this will leave the salesman of duplicated opportunities'),203 'force_assignation': fields.boolean('Force assignation', help='If unchecked, this will leave the salesman of duplicated opportunities'),
204 }204 }
205205
206206
=== modified file 'crm/wizard/crm_partner_binding.py'
--- crm/wizard/crm_partner_binding.py 2013-02-04 17:51:06 +0000
+++ crm/wizard/crm_partner_binding.py 2014-05-12 18:39:30 +0000
@@ -38,7 +38,7 @@
38 ('exist', 'Link to an existing customer'),38 ('exist', 'Link to an existing customer'),
39 ('create', 'Create a new customer'),39 ('create', 'Create a new customer'),
40 ('nothing', 'Do not link to a customer')40 ('nothing', 'Do not link to a customer')
41 ], 'Related Customer', required=True),41 ], 'Related Customer', size=7, required=True),
42 'partner_id': fields.many2one('res.partner', 'Customer'),42 'partner_id': fields.many2one('res.partner', 'Customer'),
43 }43 }
4444
4545
=== modified file 'crm/wizard/crm_phonecall_to_phonecall.py'
--- crm/wizard/crm_phonecall_to_phonecall.py 2013-11-27 15:32:57 +0000
+++ crm/wizard/crm_phonecall_to_phonecall.py 2014-05-12 18:39:30 +0000
@@ -29,16 +29,16 @@
29 _description = 'Phonecall To Phonecall'29 _description = 'Phonecall To Phonecall'
3030
31 _columns = {31 _columns = {
32 'name' : fields.char('Call summary', size=64, required=True, select=1),32 'name' : fields.char('Call summary', required=True, select=1),
33 'user_id' : fields.many2one('res.users',"Assign To"),33 'user_id' : fields.many2one('res.users',"Assign To"),
34 'contact_name':fields.char('Contact', size=64),34 'contact_name':fields.char('Contact'),
35 'phone':fields.char('Phone', size=64),35 'phone':fields.char('Phone'),
36 'categ_id': fields.many2one('crm.case.categ', 'Category', \36 'categ_id': fields.many2one('crm.case.categ', 'Category', \
37 domain="['|',('section_id','=',False),('section_id','=',section_id),\37 domain="['|',('section_id','=',False),('section_id','=',section_id),\
38 ('object_id.model', '=', 'crm.phonecall')]"), 38 ('object_id.model', '=', 'crm.phonecall')]"),
39 'date': fields.datetime('Date'),39 'date': fields.datetime('Date'),
40 'section_id':fields.many2one('crm.case.section','Sales Team'),40 'section_id':fields.many2one('crm.case.section','Sales Team'),
41 'action': fields.selection([('schedule','Schedule a call'), ('log','Log a call')], 'Action', required=True),41 'action': fields.selection([('schedule','Schedule a call'), ('log','Log a call')], 'Action', size=8, required=True),
42 'partner_id' : fields.many2one('res.partner', "Partner"),42 'partner_id' : fields.many2one('res.partner', "Partner"),
43 'note':fields.text('Note')43 'note':fields.text('Note')
44 }44 }
4545
=== modified file 'crm_claim/crm_claim.py'
--- crm_claim/crm_claim.py 2014-05-08 12:35:29 +0000
+++ crm_claim/crm_claim.py 2014-05-12 18:39:30 +0000
@@ -39,7 +39,7 @@
39 _order = "sequence"39 _order = "sequence"
4040
41 _columns = {41 _columns = {
42 'name': fields.char('Stage Name', size=64, required=True, translate=True),42 'name': fields.char('Stage Name', required=True, translate=True),
43 'sequence': fields.integer('Sequence', help="Used to order stages. Lower is better."),43 'sequence': fields.integer('Sequence', help="Used to order stages. Lower is better."),
44 'section_ids':fields.many2many('crm.case.section', 'section_claim_stage_rel', 'stage_id', 'section_id', string='Sections',44 'section_ids':fields.many2many('crm.case.section', 'section_claim_stage_rel', 'stage_id', 'section_id', string='Sections',
45 help="Link between stages and sales teams. When set, this limitate the current stage to the selected sales teams."),45 help="Link between stages and sales teams. When set, this limitate the current stage to the selected sales teams."),
@@ -73,9 +73,9 @@
7373
74 _columns = {74 _columns = {
75 'id': fields.integer('ID', readonly=True),75 'id': fields.integer('ID', readonly=True),
76 'name': fields.char('Claim Subject', size=128, required=True),76 'name': fields.char('Claim Subject', required=True),
77 'active': fields.boolean('Active'),77 'active': fields.boolean('Active'),
78 'action_next': fields.char('Next Action', size=200),78 'action_next': fields.char('Next Action'),
79 'date_action_next': fields.datetime('Next Action Date'),79 'date_action_next': fields.datetime('Next Action Date'),
80 'description': fields.text('Description'),80 'description': fields.text('Description'),
81 'resolution': fields.text('Resolution'),81 'resolution': fields.text('Resolution'),
@@ -88,10 +88,10 @@
88 'categ_id': fields.many2one('crm.case.categ', 'Category', \88 'categ_id': fields.many2one('crm.case.categ', 'Category', \
89 domain="[('section_id','=',section_id),\89 domain="[('section_id','=',section_id),\
90 ('object_id.model', '=', 'crm.claim')]"),90 ('object_id.model', '=', 'crm.claim')]"),
91 'priority': fields.selection([('0','Low'), ('1','Normal'), ('2','High')], 'Priority'),91 'priority': fields.selection([('0','Low'), ('1','Normal'), ('2','High')], 'Priority', size=1),
92 'type_action': fields.selection([('correction','Corrective Action'),('prevention','Preventive Action')], 'Action Type'),92 'type_action': fields.selection([('correction','Corrective Action'),('prevention','Preventive Action')], 'Action Type', size=10),
93 'user_id': fields.many2one('res.users', 'Responsible'),93 'user_id': fields.many2one('res.users', 'Responsible'),
94 'user_fault': fields.char('Trouble Responsible', size=64),94 'user_fault': fields.char('Trouble Responsible'),
95 'section_id': fields.many2one('crm.case.section', 'Sales Team', \95 'section_id': fields.many2one('crm.case.section', 'Sales Team', \
96 select=True, help="Responsible sales team."\96 select=True, help="Responsible sales team."\
97 " Define Responsible user and Email account for"\97 " Define Responsible user and Email account for"\
@@ -100,7 +100,7 @@
100 'partner_id': fields.many2one('res.partner', 'Partner'),100 'partner_id': fields.many2one('res.partner', 'Partner'),
101 'email_cc': fields.text('Watchers Emails', size=252, help="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"),101 'email_cc': fields.text('Watchers Emails', size=252, help="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"),
102 'email_from': fields.char('Email', size=128, help="Destination email for email gateway."),102 'email_from': fields.char('Email', size=128, help="Destination email for email gateway."),
103 'partner_phone': fields.char('Phone', size=32),103 'partner_phone': fields.char('Phone'),
104 'stage_id': fields.many2one ('crm.claim.stage', 'Stage', track_visibility='onchange',104 'stage_id': fields.many2one ('crm.claim.stage', 'Stage', track_visibility='onchange',
105 domain="['|', ('section_ids', '=', section_id), ('case_default', '=', True)]"),105 domain="['|', ('section_ids', '=', section_id), ('case_default', '=', True)]"),
106 'cause': fields.text('Root Cause'),106 'cause': fields.text('Root Cause'),
107107
=== modified file 'crm_claim/report/crm_claim_report.py'
--- crm_claim/report/crm_claim_report.py 2014-02-14 11:49:37 +0000
+++ crm_claim/report/crm_claim_report.py 2014-05-12 18:39:30 +0000
@@ -37,7 +37,7 @@
37 _description = "CRM Claim Report"37 _description = "CRM Claim Report"
3838
39 _columns = {39 _columns = {
40 'name': fields.char('Year', size=64, required=False, readonly=True),40 'name': fields.char('Year', required=False, readonly=True),
41 'user_id':fields.many2one('res.users', 'User', readonly=True),41 'user_id':fields.many2one('res.users', 'User', readonly=True),
42 'section_id':fields.many2one('crm.case.section', 'Section', readonly=True),42 'section_id':fields.many2one('crm.case.section', 'Section', readonly=True),
43 'nbr': fields.integer('# of Cases', readonly=True),43 'nbr': fields.integer('# of Cases', readonly=True),
@@ -46,7 +46,7 @@
46 ('05', 'May'), ('06', 'June'), \46 ('05', 'May'), ('06', 'June'), \
47 ('07', 'July'), ('08', 'August'),\47 ('07', 'July'), ('08', 'August'),\
48 ('09', 'September'), ('10', 'October'),\48 ('09', 'September'), ('10', 'October'),\
49 ('11', 'November'), ('12', 'December')], 'Month', readonly=True),49 ('11', 'November'), ('12', 'December')], 'Month', size=2, readonly=True),
50 'company_id': fields.many2one('res.company', 'Company', readonly=True),50 'company_id': fields.many2one('res.company', 'Company', readonly=True),
51 'create_date': fields.datetime('Create Date', readonly=True, select=True),51 'create_date': fields.datetime('Create Date', readonly=True, select=True),
52 'day': fields.char('Day', size=128, readonly=True),52 'day': fields.char('Day', size=128, readonly=True),
@@ -57,8 +57,8 @@
57 ('object_id.model', '=', 'crm.claim')]", readonly=True),57 ('object_id.model', '=', 'crm.claim')]", readonly=True),
58 'partner_id': fields.many2one('res.partner', 'Partner', readonly=True),58 'partner_id': fields.many2one('res.partner', 'Partner', readonly=True),
59 'company_id': fields.many2one('res.company', 'Company', readonly=True),59 'company_id': fields.many2one('res.company', 'Company', readonly=True),
60 'priority': fields.selection(AVAILABLE_PRIORITIES, 'Priority'),60 'priority': fields.selection(AVAILABLE_PRIORITIES, 'Priority', size=1),
61 'type_action': fields.selection([('correction','Corrective Action'),('prevention','Preventive Action')], 'Action Type'),61 'type_action': fields.selection([('correction','Corrective Action'),('prevention','Preventive Action')], 'Action Type', size=10),
62 'date_closed': fields.date('Close Date', readonly=True, select=True),62 'date_closed': fields.date('Close Date', readonly=True, select=True),
63 'date_deadline': fields.date('Deadline', readonly=True, select=True),63 'date_deadline': fields.date('Deadline', readonly=True, select=True),
64 'delay_expected': fields.float('Overpassed Deadline',digits=(16,2),readonly=True, group_operator="avg"),64 'delay_expected': fields.float('Overpassed Deadline',digits=(16,2),readonly=True, group_operator="avg"),
6565
=== modified file 'crm_helpdesk/crm_helpdesk.py'
--- crm_helpdesk/crm_helpdesk.py 2014-02-14 11:49:37 +0000
+++ crm_helpdesk/crm_helpdesk.py 2014-05-12 18:39:30 +0000
@@ -37,7 +37,7 @@
3737
38 _columns = {38 _columns = {
39 'id': fields.integer('ID', readonly=True),39 'id': fields.integer('ID', readonly=True),
40 'name': fields.char('Name', size=128, required=True),40 'name': fields.char('Name', required=True),
41 'active': fields.boolean('Active', required=False),41 'active': fields.boolean('Active', required=False),
42 'date_action_last': fields.datetime('Last Action', readonly=1),42 'date_action_last': fields.datetime('Last Action', readonly=1),
43 'date_action_next': fields.datetime('Next Action', readonly=1),43 'date_action_next': fields.datetime('Next Action', readonly=1),
@@ -59,7 +59,7 @@
59 'channel_id': fields.many2one('crm.case.channel', 'Channel', help="Communication channel."),59 'channel_id': fields.many2one('crm.case.channel', 'Channel', help="Communication channel."),
60 'planned_revenue': fields.float('Planned Revenue'),60 'planned_revenue': fields.float('Planned Revenue'),
61 'planned_cost': fields.float('Planned Costs'),61 'planned_cost': fields.float('Planned Costs'),
62 'priority': fields.selection([('0','Low'), ('1','Normal'), ('2','High')], 'Priority'),62 'priority': fields.selection([('0','Low'), ('1','Normal'), ('2','High')], 'Priority', size=1),
63 'probability': fields.float('Probability (%)'),63 'probability': fields.float('Probability (%)'),
64 'categ_id': fields.many2one('crm.case.categ', 'Category', \64 'categ_id': fields.many2one('crm.case.categ', 'Category', \
65 domain="['|',('section_id','=',False),('section_id','=',section_id),\65 domain="['|',('section_id','=',False),('section_id','=',section_id),\
@@ -70,7 +70,7 @@
70 ('open', 'In Progress'),70 ('open', 'In Progress'),
71 ('pending', 'Pending'),71 ('pending', 'Pending'),
72 ('done', 'Closed'),72 ('done', 'Closed'),
73 ('cancel', 'Cancelled')], 'Status', size=16, readonly=True, track_visibility='onchange',73 ('cancel', 'Cancelled')], 'Status', size=7, readonly=True, track_visibility='onchange',
74 help='The status is set to \'Draft\', when a case is created.\74 help='The status is set to \'Draft\', when a case is created.\
75 \nIf the case is in progress the status is set to \'Open\'.\75 \nIf the case is in progress the status is set to \'Open\'.\
76 \nWhen the case is over, the status is set to \'Done\'.\76 \nWhen the case is over, the status is set to \'Done\'.\
7777
=== modified file 'crm_helpdesk/report/crm_helpdesk_report.py'
--- crm_helpdesk/report/crm_helpdesk_report.py 2013-10-27 12:31:04 +0000
+++ crm_helpdesk/report/crm_helpdesk_report.py 2014-05-12 18:39:30 +0000
@@ -39,23 +39,23 @@
39 _auto = False39 _auto = False
4040
41 _columns = {41 _columns = {
42 'name': fields.char('Year', size=64, required=False, readonly=True),42 'name': fields.char('Year', required=False, readonly=True),
43 'user_id':fields.many2one('res.users', 'User', readonly=True),43 'user_id':fields.many2one('res.users', 'User', readonly=True),
44 'section_id':fields.many2one('crm.case.section', 'Section', readonly=True),44 'section_id':fields.many2one('crm.case.section', 'Section', readonly=True),
45 'nbr': fields.integer('# of Cases', readonly=True),45 'nbr': fields.integer('# of Cases', readonly=True),
46 'state': fields.selection(AVAILABLE_STATES, 'Status', size=16, readonly=True),46 'state': fields.selection(AVAILABLE_STATES, 'Status', size=7, readonly=True),
47 'month':fields.selection([('01', 'January'), ('02', 'February'), \47 'month':fields.selection([('01', 'January'), ('02', 'February'), \
48 ('03', 'March'), ('04', 'April'),\48 ('03', 'March'), ('04', 'April'),\
49 ('05', 'May'), ('06', 'June'), \49 ('05', 'May'), ('06', 'June'), \
50 ('07', 'July'), ('08', 'August'),\50 ('07', 'July'), ('08', 'August'),\
51 ('09', 'September'), ('10', 'October'),\51 ('09', 'September'), ('10', 'October'),\
52 ('11', 'November'), ('12', 'December')], 'Month', readonly=True),52 ('11', 'November'), ('12', 'December')], 'Month', size=2, readonly=True),
53 'delay_close': fields.float('Delay to Close',digits=(16,2),readonly=True, group_operator="avg"),53 'delay_close': fields.float('Delay to Close',digits=(16,2),readonly=True, group_operator="avg"),
54 'partner_id': fields.many2one('res.partner', 'Partner' , readonly=True),54 'partner_id': fields.many2one('res.partner', 'Partner' , readonly=True),
55 'company_id': fields.many2one('res.company', 'Company', readonly=True),55 'company_id': fields.many2one('res.company', 'Company', readonly=True),
56 'date_deadline': fields.date('Deadline', select=True),56 'date_deadline': fields.date('Deadline', select=True),
57 'priority': fields.selection([('5', 'Lowest'), ('4', 'Low'), \57 'priority': fields.selection([('5', 'Lowest'), ('4', 'Low'), \
58 ('3', 'Normal'), ('2', 'High'), ('1', 'Highest')], 'Priority'),58 ('3', 'Normal'), ('2', 'High'), ('1', 'Highest')], 'Priority', size=1),
59 'channel_id': fields.many2one('crm.case.channel', 'Channel'),59 'channel_id': fields.many2one('crm.case.channel', 'Channel'),
60 'categ_id': fields.many2one('crm.case.categ', 'Category', \60 'categ_id': fields.many2one('crm.case.categ', 'Category', \
61 domain="[('section_id','=',section_id),\61 domain="[('section_id','=',section_id),\
6262
=== modified file 'crm_partner_assign/crm_partner_assign.py'
--- crm_partner_assign/crm_partner_assign.py 2013-12-02 15:09:25 +0000
+++ crm_partner_assign/crm_partner_assign.py 2014-05-12 18:39:30 +0000
@@ -32,7 +32,7 @@
32 _columns = {32 _columns = {
33 'sequence': fields.integer('Sequence'),33 'sequence': fields.integer('Sequence'),
34 'active': fields.boolean('Active'),34 'active': fields.boolean('Active'),
35 'name': fields.char('Grade Name', size=32),35 'name': fields.char('Grade Name'),
36 'partner_weight': fields.integer('Grade Weight',36 'partner_weight': fields.integer('Grade Weight',
37 help="Gives the probability to assign a lead to this partner. (0 means no assignation.)"),37 help="Gives the probability to assign a lead to this partner. (0 means no assignation.)"),
38 }38 }
@@ -47,7 +47,7 @@
4747
48 _columns = {48 _columns = {
49 'sequence' : fields.integer('Sequence'),49 'sequence' : fields.integer('Sequence'),
50 'name' : fields.char('Name', size=32, required=True),50 'name' : fields.char('Name', required=True),
51 }51 }
5252
5353
5454
=== modified file 'crm_partner_assign/report/crm_lead_report.py'
--- crm_partner_assign/report/crm_lead_report.py 2014-01-29 10:39:29 +0000
+++ crm_partner_assign/report/crm_lead_report.py 2014-05-12 18:39:30 +0000
@@ -52,11 +52,11 @@
52 'date_closed': fields.date('Close Date', readonly=True),52 'date_closed': fields.date('Close Date', readonly=True),
53 'nbr': fields.integer('# of Cases', readonly=True),53 'nbr': fields.integer('# of Cases', readonly=True),
54 'company_id': fields.many2one('res.company', 'Company', readonly=True),54 'company_id': fields.many2one('res.company', 'Company', readonly=True),
55 'priority': fields.selection(crm.AVAILABLE_PRIORITIES, 'Priority'),55 'priority': fields.selection(crm.AVAILABLE_PRIORITIES, 'Priority', size=1),
56 'type':fields.selection([56 'type':fields.selection([
57 ('lead','Lead'),57 ('lead','Lead'),
58 ('opportunity','Opportunity'),58 ('opportunity','Opportunity')
59 ],'Type', help="Type is used to separate Leads and Opportunities"),59 ],'Type', size=11, help="Type is used to separate Leads and Opportunities"),
60 }60 }
61 def init(self, cr):61 def init(self, cr):
6262
6363
=== modified file 'crm_partner_assign/wizard/crm_forward_to_partner.py'
--- crm_partner_assign/wizard/crm_forward_to_partner.py 2014-01-16 10:39:10 +0000
+++ crm_partner_assign/wizard/crm_forward_to_partner.py 2014-05-12 18:39:30 +0000
@@ -159,7 +159,7 @@
159 return portal_link159 return portal_link
160160
161 _columns = {161 _columns = {
162 'forward_type': fields.selection([('single', 'a single partner: manual selection of partner'), ('assigned', "several partners: automatic assignation, using GPS coordinates and partner's grades"), ], 'Forward selected leads to'),162 'forward_type': fields.selection([('single', 'a single partner: manual selection of partner'), ('assigned', "several partners: automatic assignation, using GPS coordinates and partner's grades"), ], 'Forward selected leads to', size=8),
163 'partner_id': fields.many2one('res.partner', 'Forward Leads To'),163 'partner_id': fields.many2one('res.partner', 'Forward Leads To'),
164 'assignation_lines': fields.one2many('crm.lead.assignation', 'forward_id', 'Partner Assignation'),164 'assignation_lines': fields.one2many('crm.lead.assignation', 'forward_id', 'Partner Assignation'),
165 'body': fields.html('Contents', help='Automatically sanitized HTML contents'),165 'body': fields.html('Contents', help='Automatically sanitized HTML contents'),
166166
=== modified file 'crm_profiling/crm_profiling.py'
--- crm_profiling/crm_profiling.py 2013-10-27 12:31:04 +0000
+++ crm_profiling/crm_profiling.py 2014-05-12 18:39:30 +0000
@@ -146,7 +146,7 @@
146 _description= "Question"146 _description= "Question"
147147
148 _columns={148 _columns={
149 'name': fields.char("Question",size=128, required=True),149 'name': fields.char("Question", required=True),
150 'answers_ids': fields.one2many("crm_profiling.answer","question_id","Avalaible Answers",),150 'answers_ids': fields.one2many("crm_profiling.answer","question_id","Avalaible Answers",),
151 }151 }
152152
@@ -159,7 +159,7 @@
159 _description= "Questionnaire"159 _description= "Questionnaire"
160160
161 _columns = {161 _columns = {
162 'name': fields.char("Questionnaire",size=128, required=True),162 'name': fields.char("Questionnaire", required=True),
163 'description':fields.text("Description", required=True),163 'description':fields.text("Description", required=True),
164 'questions_ids': fields.many2many('crm_profiling.question','profile_questionnaire_quest_rel',\164 'questions_ids': fields.many2many('crm_profiling.question','profile_questionnaire_quest_rel',\
165 'questionnaire', 'question', "Questions"),165 'questionnaire', 'question', "Questions"),
@@ -171,7 +171,7 @@
171 _name="crm_profiling.answer"171 _name="crm_profiling.answer"
172 _description="Answer"172 _description="Answer"
173 _columns={173 _columns={
174 "name": fields.char("Answer",size=128, required=True),174 "name": fields.char("Answer", required=True),
175 "question_id": fields.many2one('crm_profiling.question',"Question"),175 "question_id": fields.many2one('crm_profiling.question',"Question"),
176 }176 }
177177
178178
=== modified file 'decimal_precision/decimal_precision.py'
--- decimal_precision/decimal_precision.py 2014-01-29 19:08:34 +0000
+++ decimal_precision/decimal_precision.py 2014-05-12 18:39:30 +0000
@@ -28,7 +28,7 @@
28class decimal_precision(orm.Model):28class decimal_precision(orm.Model):
29 _name = 'decimal.precision'29 _name = 'decimal.precision'
30 _columns = {30 _columns = {
31 'name': fields.char('Usage', size=50, select=True, required=True),31 'name': fields.char('Usage', select=True, required=True),
32 'digits': fields.integer('Digits', required=True),32 'digits': fields.integer('Digits', required=True),
33 }33 }
34 _defaults = {34 _defaults = {
3535
=== modified file 'delivery/delivery.py'
--- delivery/delivery.py 2014-05-01 15:56:33 +0000
+++ delivery/delivery.py 2014-05-12 18:39:30 +0000
@@ -62,7 +62,7 @@
62 return res62 return res
6363
64 _columns = {64 _columns = {
65 'name': fields.char('Delivery Method', size=64, required=True),65 'name': fields.char('Delivery Method', required=True),
66 'partner_id': fields.many2one('res.partner', 'Transport Company', required=True, help="The partner that is doing the delivery service."),66 'partner_id': fields.many2one('res.partner', 'Transport Company', required=True, help="The partner that is doing the delivery service."),
67 'product_id': fields.many2one('product.product', 'Delivery Product', required=True),67 'product_id': fields.many2one('product.product', 'Delivery Product', required=True),
68 'grids_id': fields.one2many('delivery.grid', 'carrier_id', 'Delivery Grids'),68 'grids_id': fields.one2many('delivery.grid', 'carrier_id', 'Delivery Grids'),
@@ -171,13 +171,13 @@
171 _name = "delivery.grid"171 _name = "delivery.grid"
172 _description = "Delivery Grid"172 _description = "Delivery Grid"
173 _columns = {173 _columns = {
174 'name': fields.char('Grid Name', size=64, required=True),174 'name': fields.char('Grid Name', required=True),
175 'sequence': fields.integer('Sequence', size=64, required=True, help="Gives the sequence order when displaying a list of delivery grid."),175 'sequence': fields.integer('Sequence', required=True, help="Gives the sequence order when displaying a list of delivery grid."),
176 'carrier_id': fields.many2one('delivery.carrier', 'Carrier', required=True, ondelete='cascade'),176 'carrier_id': fields.many2one('delivery.carrier', 'Carrier', required=True, ondelete='cascade'),
177 'country_ids': fields.many2many('res.country', 'delivery_grid_country_rel', 'grid_id', 'country_id', 'Countries'),177 'country_ids': fields.many2many('res.country', 'delivery_grid_country_rel', 'grid_id', 'country_id', 'Countries'),
178 'state_ids': fields.many2many('res.country.state', 'delivery_grid_state_rel', 'grid_id', 'state_id', 'States'),178 'state_ids': fields.many2many('res.country.state', 'delivery_grid_state_rel', 'grid_id', 'state_id', 'States'),
179 'zip_from': fields.char('Start Zip', size=12),179 'zip_from': fields.char('Start Zip'),
180 'zip_to': fields.char('To Zip', size=12),180 'zip_to': fields.char('To Zip'),
181 'line_ids': fields.one2many('delivery.grid.line', 'grid_id', 'Grid Line'),181 'line_ids': fields.one2many('delivery.grid.line', 'grid_id', 'Grid Line'),
182 'active': fields.boolean('Active', help="If the active field is set to False, it will allow you to hide the delivery grid without removing it."),182 'active': fields.boolean('Active', help="If the active field is set to False, it will allow you to hide the delivery grid without removing it."),
183 }183 }
@@ -226,15 +226,15 @@
226 _name = "delivery.grid.line"226 _name = "delivery.grid.line"
227 _description = "Delivery Grid Line"227 _description = "Delivery Grid Line"
228 _columns = {228 _columns = {
229 'name': fields.char('Name', size=64, required=True),229 'name': fields.char('Name', required=True),
230 'grid_id': fields.many2one('delivery.grid', 'Grid',required=True, ondelete='cascade'),230 'grid_id': fields.many2one('delivery.grid', 'Grid',required=True, ondelete='cascade'),
231 'type': fields.selection([('weight','Weight'),('volume','Volume'),\231 'type': fields.selection([('weight','Weight'),('volume','Volume'),\
232 ('wv','Weight * Volume'), ('price','Price')],\232 ('wv','Weight * Volume'), ('price','Price')],\
233 'Variable', required=True),233 'Variable', size=6, required=True),
234 'operator': fields.selection([('==','='),('<=','<='),('>=','>=')], 'Operator', required=True),234 'operator': fields.selection([('==','='),('<=','<='),('>=','>=')], 'Operator', size=2, required=True),
235 'max_value': fields.float('Maximum Value', required=True),235 'max_value': fields.float('Maximum Value', required=True),
236 'price_type': fields.selection([('fixed','Fixed'),('variable','Variable')], 'Price Type', required=True),236 'price_type': fields.selection([('fixed','Fixed'),('variable','Variable')], 'Price Type', size=8, required=True),
237 'variable_factor': fields.selection([('weight','Weight'),('volume','Volume'),('wv','Weight * Volume'), ('price','Price')], 'Variable Factor', required=True),237 'variable_factor': fields.selection([('weight','Weight'),('volume','Volume'),('wv','Weight * Volume'), ('price','Price')], 'Variable Factor', size=6, required=True),
238 'list_price': fields.float('Sale Price', digits_compute= dp.get_precision('Product Price'), required=True),238 'list_price': fields.float('Sale Price', digits_compute= dp.get_precision('Product Price'), required=True),
239 'standard_price': fields.float('Cost Price', digits_compute= dp.get_precision('Product Price'), required=True),239 'standard_price': fields.float('Cost Price', digits_compute= dp.get_precision('Product Price'), required=True),
240 }240 }
241241
=== modified file 'delivery/stock.py'
--- delivery/stock.py 2014-05-07 16:59:51 +0000
+++ delivery/stock.py 2014-05-12 18:39:30 +0000
@@ -64,7 +64,7 @@
64 'stock.picking': (lambda self, cr, uid, ids, c={}: ids, ['move_lines'], 20),64 'stock.picking': (lambda self, cr, uid, ids, c={}: ids, ['move_lines'], 20),
65 'stock.move': (_get_picking_line, ['product_id','product_qty','product_uom','product_uos_qty'], 20),65 'stock.move': (_get_picking_line, ['product_id','product_qty','product_uom','product_uos_qty'], 20),
66 }),66 }),
67 'carrier_tracking_ref': fields.char('Carrier Tracking Ref', size=32),67 'carrier_tracking_ref': fields.char('Carrier Tracking Ref'),
68 'number_of_packages': fields.integer('Number of Packages'),68 'number_of_packages': fields.integer('Number of Packages'),
69 'weight_uom_id': fields.many2one('product.uom', 'Unit of Measure', required=True,readonly="1",help="Unit of measurement for Weight",),69 'weight_uom_id': fields.many2one('product.uom', 'Unit of Measure', required=True,readonly="1",help="Unit of measurement for Weight",),
70 }70 }
7171
=== modified file 'document/document.py'
--- document/document.py 2014-04-09 09:56:59 +0000
+++ document/document.py 2014-05-12 18:39:30 +0000
@@ -158,7 +158,7 @@
158 _description = 'Directory'158 _description = 'Directory'
159 _order = 'name'159 _order = 'name'
160 _columns = {160 _columns = {
161 'name': fields.char('Name', size=64, required=True, select=1),161 'name': fields.char('Name', required=True, select=1),
162 'write_date': fields.datetime('Date Modified', readonly=True),162 'write_date': fields.datetime('Date Modified', readonly=True),
163 'write_uid': fields.many2one('res.users', 'Last Modification User', readonly=True),163 'write_uid': fields.many2one('res.users', 'Last Modification User', readonly=True),
164 'create_date': fields.datetime('Date Created', readonly=True),164 'create_date': fields.datetime('Date Created', readonly=True),
@@ -170,9 +170,9 @@
170 'file_ids': fields.one2many('ir.attachment', 'parent_id', 'Files'),170 'file_ids': fields.one2many('ir.attachment', 'parent_id', 'Files'),
171 'content_ids': fields.one2many('document.directory.content', 'directory_id', 'Virtual Files'),171 'content_ids': fields.one2many('document.directory.content', 'directory_id', 'Virtual Files'),
172 'type': fields.selection([ ('directory','Static Directory'), ('ressource','Folders per resource'), ],172 'type': fields.selection([ ('directory','Static Directory'), ('ressource','Folders per resource'), ],
173 'Type', required=True, select=1, change_default=True,173 'Type', required=True, select=1, change_default=True, size=9,
174 help="Each directory can either have the type Static or be linked to another resource. A static directory, as with Operating Systems, is the classic directory that can contain a set of files. The directories linked to systems resources automatically possess sub-directories for each of resource types defined in the parent directory."),174 help="Each directory can either have the type Static or be linked to another resource. A static directory, as with Operating Systems, is the classic directory that can contain a set of files. The directories linked to systems resources automatically possess sub-directories for each of resource types defined in the parent directory."),
175 'domain': fields.char('Domain', size=128, help="Use a domain if you want to apply an automatic filter on visible resources."),175 'domain': fields.char('Domain', help="Use a domain if you want to apply an automatic filter on visible resources."),
176 'ressource_type_id': fields.many2one('ir.model', 'Resource model', change_default=True,176 'ressource_type_id': fields.many2one('ir.model', 'Resource model', change_default=True,
177 help="Select an object here and there will be one folder per record of that resource."),177 help="Select an object here and there will be one folder per record of that resource."),
178 'resource_field': fields.many2one('ir.model.fields', 'Name field', help='Field to be used as name on resource directories. If empty, the "name" will be used.'),178 'resource_field': fields.many2one('ir.model.fields', 'Name field', help='Field to be used as name on resource directories. If empty, the "name" will be used.'),
@@ -370,8 +370,8 @@
370 _description = 'Directory Dynamic Context'370 _description = 'Directory Dynamic Context'
371 _columns = {371 _columns = {
372 'dir_id': fields.many2one('document.directory', 'Directory', required=True, ondelete="cascade"),372 'dir_id': fields.many2one('document.directory', 'Directory', required=True, ondelete="cascade"),
373 'field': fields.char('Field', size=20, required=True, select=1, help="The name of the field."),373 'field': fields.char('Field', required=True, select=1, help="The name of the field."),
374 'expr': fields.char('Expression', size=64, required=True, help="A python expression used to evaluate the field.\n" + \374 'expr': fields.char('Expression', required=True, help="A python expression used to evaluate the field.\n" + \
375 "You can use 'dir_id' for current dir, 'res_id', 'res_model' as a reference to the current record, in dynamic folders"),375 "You can use 'dir_id' for current dir, 'res_id', 'res_model' as a reference to the current record, in dynamic folders"),
376 }376 }
377377
@@ -379,10 +379,10 @@
379 _name = 'document.directory.content.type'379 _name = 'document.directory.content.type'
380 _description = 'Directory Content Type'380 _description = 'Directory Content Type'
381 _columns = {381 _columns = {
382 'name': fields.char('Content Type', size=64, required=True),382 'name': fields.char('Content Type', required=True),
383 'code': fields.char('Extension', size=4),383 'code': fields.char('Extension', size=4),
384 'active': fields.boolean('Active'),384 'active': fields.boolean('Active'),
385 'mimetype': fields.char('Mime Type',size=32)385 'mimetype': fields.char('Mime Type')
386 }386 }
387 _defaults = {387 _defaults = {
388 'active': lambda *args: 1388 'active': lambda *args: 1
@@ -399,7 +399,7 @@
399 return res399 return res
400400
401 _columns = {401 _columns = {
402 'name': fields.char('Content Name', size=64, required=True),402 'name': fields.char('Content Name', required=True),
403 'sequence': fields.integer('Sequence', size=16),403 'sequence': fields.integer('Sequence', size=16),
404 'prefix': fields.char('Prefix', size=16),404 'prefix': fields.char('Prefix', size=16),
405 'suffix': fields.char('Suffix', size=16),405 'suffix': fields.char('Suffix', size=16),
406406
=== modified file 'document/report/document_report.py'
--- document/report/document_report.py 2013-05-07 11:11:02 +0000
+++ document/report/document_report.py 2014-05-12 18:39:30 +0000
@@ -71,7 +71,7 @@
71 _columns = {71 _columns = {
72 'file_size': fields.integer('File Size', readonly=True),72 'file_size': fields.integer('File Size', readonly=True),
73 'nbr':fields.integer('# of Files', readonly=True),73 'nbr':fields.integer('# of Files', readonly=True),
74 'month': fields.char('Month', size=24,readonly=True),74 'month': fields.char('Month', size=24, readonly=True),
75 }75 }
76 _order = "month"76 _order = "month"
77 def init(self, cr):77 def init(self, cr):
7878
=== modified file 'email_template/email_template.py'
--- email_template/email_template.py 2014-04-24 13:45:33 +0000
+++ email_template/email_template.py 2014-05-12 18:39:30 +0000
@@ -216,7 +216,7 @@
216 'name': fields.char('Name'),216 'name': fields.char('Name'),
217 'model_id': fields.many2one('ir.model', 'Applies to', help="The kind of document with with this template can be used"),217 'model_id': fields.many2one('ir.model', 'Applies to', help="The kind of document with with this template can be used"),
218 'model': fields.related('model_id', 'model', type='char', string='Related Document Model',218 'model': fields.related('model_id', 'model', type='char', string='Related Document Model',
219 size=128, select=True, store=True, readonly=True),219 select=True, store=True, readonly=True),
220 'lang': fields.char('Language',220 'lang': fields.char('Language',
221 help="Optional translation language (ISO code) to select when sending out an email. "221 help="Optional translation language (ISO code) to select when sending out an email. "
222 "If not set, the english version will be used. "222 "If not set, the english version will be used. "
223223
=== modified file 'event/event.py'
--- event/event.py 2014-05-12 07:23:31 +0000
+++ event/event.py 2014-05-12 18:39:30 +0000
@@ -30,8 +30,8 @@
30 _name = 'event.type'30 _name = 'event.type'
31 _description = __doc__31 _description = __doc__
32 _columns = {32 _columns = {
33 'name': fields.char('Event Type', size=64, required=True),33 'name': fields.char('Event Type', required=True),
34 'default_reply_to': fields.char('Default Reply-To', size=64,help="The email address of the organizer which is put in the 'Reply-To' of all emails sent automatically at event or registrations confirmation. You can also put your email address of your mail gateway if you use one." ),34 'default_reply_to': fields.char('Default Reply-To', size=64, help="The email address of the organizer which is put in the 'Reply-To' of all emails sent automatically at event or registrations confirmation. You can also put your email address of your mail gateway if you use one." ),
35 'default_email_event': fields.many2one('email.template','Event Confirmation Email', help="It will select this default confirmation event mail value when you choose this event"),35 'default_email_event': fields.many2one('email.template','Event Confirmation Email', help="It will select this default confirmation event mail value when you choose this event"),
36 'default_email_registration': fields.many2one('email.template','Registration Confirmation Email', help="It will select this default confirmation registration mail value when you choose this event"),36 'default_email_registration': fields.many2one('email.template','Registration Confirmation Email', help="It will select this default confirmation registration mail value when you choose this event"),
37 'default_registration_min': fields.integer('Default Minimum Registration', help="It will select this default minimum value when you choose this event"),37 'default_registration_min': fields.integer('Default Minimum Registration', help="It will select this default minimum value when you choose this event"),
@@ -174,7 +174,7 @@
174 return [(x, x) for x in pytz.all_timezones]174 return [(x, x) for x in pytz.all_timezones]
175175
176 _columns = {176 _columns = {
177 'name': fields.char('Event Name', size=64, required=True, translate=True, readonly=False, states={'done': [('readonly', True)]}),177 'name': fields.char('Event Name', required=True, translate=True, readonly=False, states={'done': [('readonly', True)]}),
178 'user_id': fields.many2one('res.users', 'Responsible User', readonly=False, states={'done': [('readonly', True)]}),178 'user_id': fields.many2one('res.users', 'Responsible User', readonly=False, states={'done': [('readonly', True)]}),
179 'type': fields.many2one('event.type', 'Type of Event', readonly=False, states={'done': [('readonly', True)]}),179 'type': fields.many2one('event.type', 'Type of Event', readonly=False, states={'done': [('readonly', True)]}),
180 'seats_max': fields.integer('Maximum Avalaible Seats', oldname='register_max', help="You can for each event define a maximum registration level. If you have too much registrations you are not able to confirm your event. (put 0 to ignore this rule )", readonly=True, states={'draft': [('readonly', False)]}),180 'seats_max': fields.integer('Maximum Avalaible Seats', oldname='register_max', help="You can for each event define a maximum registration level. If you have too much registrations you are not able to confirm your event. (put 0 to ignore this rule )", readonly=True, states={'draft': [('readonly', False)]}),
@@ -202,7 +202,7 @@
202 ('cancel', 'Cancelled'),202 ('cancel', 'Cancelled'),
203 ('confirm', 'Confirmed'),203 ('confirm', 'Confirmed'),
204 ('done', 'Done')],204 ('done', 'Done')],
205 'Status', readonly=True, required=True,205 'Status', size=7, readonly=True, required=True,
206 help='If event is created, the status is \'Draft\'.If event is confirmed for the particular dates the status is set to \'Confirmed\'. If the event is over, the status is set to \'Done\'.If event is cancelled the status is set to \'Cancelled\'.'),206 help='If event is created, the status is \'Draft\'.If event is confirmed for the particular dates the status is set to \'Confirmed\'. If the event is over, the status is set to \'Done\'.If event is cancelled the status is set to \'Cancelled\'.'),
207 'email_registration_id' : fields.many2one('email.template','Registration Confirmation Email', help='This field contains the template of the mail that will be automatically sent each time a registration for this event is confirmed.'),207 'email_registration_id' : fields.many2one('email.template','Registration Confirmation Email', help='This field contains the template of the mail that will be automatically sent each time a registration for this event is confirmed.'),
208 'email_confirmation_id' : fields.many2one('email.template','Event Confirmation Email', help="If you set an email template, each participant will receive this email announcing the confirmation of the event."),208 'email_confirmation_id' : fields.many2one('email.template','Event Confirmation Email', help="If you set an email template, each participant will receive this email announcing the confirmation of the event."),
@@ -299,14 +299,14 @@
299 _inherit = ['mail.thread', 'ir.needaction_mixin']299 _inherit = ['mail.thread', 'ir.needaction_mixin']
300 _columns = {300 _columns = {
301 'id': fields.integer('ID'),301 'id': fields.integer('ID'),
302 'origin': fields.char('Source Document', size=124,readonly=True,help="Reference of the sales order which created the registration"),302 'origin': fields.char('Source Document', readonly=True,help="Reference of the sales order which created the registration"),
303 'nb_register': fields.integer('Number of Participants', required=True, readonly=True, states={'draft': [('readonly', False)]}),303 'nb_register': fields.integer('Number of Participants', required=True, readonly=True, states={'draft': [('readonly', False)]}),
304 'event_id': fields.many2one('event.event', 'Event', required=True, readonly=True, states={'draft': [('readonly', False)]}),304 'event_id': fields.many2one('event.event', 'Event', required=True, readonly=True, states={'draft': [('readonly', False)]}),
305 'partner_id': fields.many2one('res.partner', 'Partner', states={'done': [('readonly', True)]}),305 'partner_id': fields.many2one('res.partner', 'Partner', states={'done': [('readonly', True)]}),
306 'create_date': fields.datetime('Creation Date' , readonly=True),306 'create_date': fields.datetime('Creation Date' , readonly=True),
307 'date_closed': fields.datetime('Attended Date', readonly=True),307 'date_closed': fields.datetime('Attended Date', readonly=True),
308 'date_open': fields.datetime('Registration Date', readonly=True),308 'date_open': fields.datetime('Registration Date', readonly=True),
309 'reply_to': fields.related('event_id','reply_to',string='Reply-to Email', type='char', size=128, readonly=True,),309 'reply_to': fields.related('event_id','reply_to',string='Reply-to Email', type='char', readonly=True,),
310 'log_ids': fields.one2many('mail.message', 'res_id', 'Logs', domain=[('model','=',_name)]),310 'log_ids': fields.one2many('mail.message', 'res_id', 'Logs', domain=[('model','=',_name)]),
311 'event_end_date': fields.related('event_id','date_end', type='datetime', string="Event End Date", readonly=True),311 'event_end_date': fields.related('event_id','date_end', type='datetime', string="Event End Date", readonly=True),
312 'event_begin_date': fields.related('event_id', 'date_begin', type='datetime', string="Event Start Date", readonly=True),312 'event_begin_date': fields.related('event_id', 'date_begin', type='datetime', string="Event Start Date", readonly=True),
@@ -316,10 +316,10 @@
316 ('cancel', 'Cancelled'),316 ('cancel', 'Cancelled'),
317 ('open', 'Confirmed'),317 ('open', 'Confirmed'),
318 ('done', 'Attended')], 'Status',318 ('done', 'Attended')], 'Status',
319 size=16, readonly=True),319 size=6, readonly=True),
320 'email': fields.char('Email', size=64),320 'email': fields.char('Email', size=64),
321 'phone': fields.char('Phone', size=64),321 'phone': fields.char('Phone', size=64),
322 'name': fields.char('Name', size=128, select=True),322 'name': fields.char('Name', select=True),
323 }323 }
324 _defaults = {324 _defaults = {
325 'nb_register': 1,325 'nb_register': 1,
326326
=== modified file 'event_sale/event_sale.py'
--- event_sale/event_sale.py 2014-05-02 14:01:52 +0000
+++ event_sale/event_sale.py 2014-05-12 18:39:30 +0000
@@ -201,7 +201,7 @@
201 201
202202
203 _columns = {203 _columns = {
204 'name': fields.char('Name', size=64, required=True, translate=True),204 'name': fields.char('Name', required=True, translate=True),
205 'event_id': fields.many2one('event.event', "Event", required=True, ondelete='cascade'),205 'event_id': fields.many2one('event.event', "Event", required=True, ondelete='cascade'),
206 'product_id': fields.many2one('product.product', 'Product', required=True, domain=[("event_type_id", "!=", False)]),206 'product_id': fields.many2one('product.product', 'Product', required=True, domain=[("event_type_id", "!=", False)]),
207 'registration_ids': fields.one2many('event.registration', 'event_ticket_id', 'Registrations'),207 'registration_ids': fields.one2many('event.registration', 'event_ticket_id', 'Registrations'),
208208
=== modified file 'fetchmail/fetchmail.py'
--- fetchmail/fetchmail.py 2014-02-17 09:12:03 +0000
+++ fetchmail/fetchmail.py 2014-05-12 18:39:30 +0000
@@ -47,27 +47,27 @@
47 _order = 'priority'47 _order = 'priority'
4848
49 _columns = {49 _columns = {
50 'name':fields.char('Name', size=256, required=True, readonly=False),50 'name':fields.char('Name', required=True, readonly=False),
51 'active':fields.boolean('Active', required=False),51 'active':fields.boolean('Active', required=False),
52 'state':fields.selection([52 'state':fields.selection([
53 ('draft', 'Not Confirmed'),53 ('draft', 'Not Confirmed'),
54 ('done', 'Confirmed'),54 ('done', 'Confirmed'),
55 ], 'Status', select=True, readonly=True),55 ], 'Status', select=True, size=5, readonly=True),
56 'server' : fields.char('Server Name', size=256, readonly=True, help="Hostname or IP of the mail server", states={'draft':[('readonly', False)]}),56 'server' : fields.char('Server Name', readonly=True, help="Hostname or IP of the mail server", states={'draft':[('readonly', False)]}),
57 'port' : fields.integer('Port', readonly=True, states={'draft':[('readonly', False)]}),57 'port' : fields.integer('Port', readonly=True, states={'draft':[('readonly', False)]}),
58 'type':fields.selection([58 'type':fields.selection([
59 ('pop', 'POP Server'),59 ('pop', 'POP Server'),
60 ('imap', 'IMAP Server'),60 ('imap', 'IMAP Server'),
61 ('local', 'Local Server'),61 ('local', 'Local Server'),
62 ], 'Server Type', select=True, required=True, readonly=False),62 ], 'Server Type', select=True, size=5, required=True, readonly=False),
63 'is_ssl':fields.boolean('SSL/TLS', help="Connections are encrypted with SSL/TLS through a dedicated port (default: IMAPS=993, POP3S=995)"),63 'is_ssl':fields.boolean('SSL/TLS', help="Connections are encrypted with SSL/TLS through a dedicated port (default: IMAPS=993, POP3S=995)"),
64 'attach':fields.boolean('Keep Attachments', help="Whether attachments should be downloaded. "64 'attach':fields.boolean('Keep Attachments', help="Whether attachments should be downloaded. "
65 "If not enabled, incoming emails will be stripped of any attachments before being processed"),65 "If not enabled, incoming emails will be stripped of any attachments before being processed"),
66 'original':fields.boolean('Keep Original', help="Whether a full original copy of each email should be kept for reference"66 'original':fields.boolean('Keep Original', help="Whether a full original copy of each email should be kept for reference"
67 "and attached to each processed message. This will usually double the size of your message database."),67 "and attached to each processed message. This will usually double the size of your message database."),
68 'date': fields.datetime('Last Fetch Date', readonly=True),68 'date': fields.datetime('Last Fetch Date', readonly=True),
69 'user' : fields.char('Username', size=256, readonly=True, states={'draft':[('readonly', False)]}),69 'user' : fields.char('Username', readonly=True, states={'draft':[('readonly', False)]}),
70 'password' : fields.char('Password', size=1024, readonly=True, states={'draft':[('readonly', False)]}),70 'password' : fields.char('Password', readonly=True, states={'draft':[('readonly', False)]}),
71 'action_id':fields.many2one('ir.actions.server', 'Server Action', help="Optional custom server action to trigger for each incoming mail, "71 'action_id':fields.many2one('ir.actions.server', 'Server Action', help="Optional custom server action to trigger for each incoming mail, "
72 "on the record that was created or updated by this mail"),72 "on the record that was created or updated by this mail"),
73 'object_id': fields.many2one('ir.model', "Create a New Record", help="Process each incoming mail as part of a conversation "73 'object_id': fields.many2one('ir.model', "Create a New Record", help="Process each incoming mail as part of a conversation "
@@ -78,7 +78,7 @@
78 "lower values mean higher priority"),78 "lower values mean higher priority"),
79 'message_ids': fields.one2many('mail.mail', 'fetchmail_server_id', 'Messages', readonly=True),79 'message_ids': fields.one2many('mail.mail', 'fetchmail_server_id', 'Messages', readonly=True),
80 'configuration' : fields.text('Configuration', readonly=True),80 'configuration' : fields.text('Configuration', readonly=True),
81 'script' : fields.char('Script', readonly=True, size=64),81 'script' : fields.char('Script', readonly=True),
82 }82 }
83 _defaults = {83 _defaults = {
84 'state': "draft",84 'state': "draft",
8585
=== modified file 'fleet/fleet.py'
--- fleet/fleet.py 2014-05-07 07:56:45 +0000
+++ fleet/fleet.py 2014-05-12 18:39:30 +0000
@@ -67,7 +67,7 @@
67 'vehicle_id': fields.many2one('fleet.vehicle', 'Vehicle', required=True, help='Vehicle concerned by this log'),67 'vehicle_id': fields.many2one('fleet.vehicle', 'Vehicle', required=True, help='Vehicle concerned by this log'),
68 'cost_subtype_id': fields.many2one('fleet.service.type', 'Type', help='Cost type purchased with this cost'),68 'cost_subtype_id': fields.many2one('fleet.service.type', 'Type', help='Cost type purchased with this cost'),
69 'amount': fields.float('Total Price'),69 'amount': fields.float('Total Price'),
70 'cost_type': fields.selection([('contract', 'Contract'), ('services','Services'), ('fuel','Fuel'), ('other','Other')], 'Category of the cost', help='For internal purpose only', required=True),70 'cost_type': fields.selection([('contract', 'Contract'), ('services','Services'), ('fuel','Fuel'), ('other','Other')], 'Category of the cost', size=8, help='For internal purpose only', required=True),
71 'parent_id': fields.many2one('fleet.vehicle.cost', 'Parent', help='Parent cost to this current cost'),71 'parent_id': fields.many2one('fleet.vehicle.cost', 'Parent', help='Parent cost to this current cost'),
72 'cost_ids': fields.one2many('fleet.vehicle.cost', 'parent_id', 'Included Services'),72 'cost_ids': fields.one2many('fleet.vehicle.cost', 'parent_id', 'Included Services'),
73 'odometer_id': fields.many2one('fleet.vehicle.odometer', 'Odometer', help='Odometer measure of the vehicle at the moment of this log'),73 'odometer_id': fields.many2one('fleet.vehicle.odometer', 'Odometer', help='Odometer measure of the vehicle at the moment of this log'),
@@ -145,7 +145,7 @@
145145
146 _columns = {146 _columns = {
147 'name': fields.function(_model_name_get_fnc, type="char", string='Name', store=True),147 'name': fields.function(_model_name_get_fnc, type="char", string='Name', store=True),
148 'modelname': fields.char('Model name', size=32, required=True), 148 'modelname': fields.char('Model name', required=True),
149 'brand_id': fields.many2one('fleet.vehicle.model.brand', 'Model Brand', required=True, help='Brand of the vehicle'),149 'brand_id': fields.many2one('fleet.vehicle.model.brand', 'Model Brand', required=True, help='Brand of the vehicle'),
150 'vendors': fields.many2many('res.partner', 'fleet_vehicle_model_vendors', 'model_id', 'partner_id', string='Vendors'),150 'vendors': fields.many2many('res.partner', 'fleet_vehicle_model_vendors', 'model_id', 'partner_id', string='Vendors'),
151 'image': fields.related('brand_id', 'image', type="binary", string="Logo"),151 'image': fields.related('brand_id', 'image', type="binary", string="Logo"),
@@ -170,7 +170,7 @@
170 return self.write(cr, uid, [id], {'image': tools.image_resize_image_big(value)}, context=context)170 return self.write(cr, uid, [id], {'image': tools.image_resize_image_big(value)}, context=context)
171171
172 _columns = {172 _columns = {
173 'name': fields.char('Brand Name', size=64, required=True),173 'name': fields.char('Brand Name', required=True),
174 'image': fields.binary("Logo",174 'image': fields.binary("Logo",
175 help="This field holds the image used as logo for the brand, limited to 1024x1024px."),175 help="This field holds the image used as logo for the brand, limited to 1024x1024px."),
176 'image_medium': fields.function(_get_image, fnct_inv=_set_image,176 'image_medium': fields.function(_get_image, fnct_inv=_set_image,
@@ -337,8 +337,8 @@
337 _columns = {337 _columns = {
338 'name': fields.function(_vehicle_name_get_fnc, type="char", string='Name', store=True),338 'name': fields.function(_vehicle_name_get_fnc, type="char", string='Name', store=True),
339 'company_id': fields.many2one('res.company', 'Company'),339 'company_id': fields.many2one('res.company', 'Company'),
340 'license_plate': fields.char('License Plate', size=32, required=True, help='License plate number of the vehicle (ie: plate number for a car)'),340 'license_plate': fields.char('License Plate', required=True, help='License plate number of the vehicle (ie: plate number for a car)'),
341 'vin_sn': fields.char('Chassis Number', size=32, help='Unique number written on the vehicle motor (VIN/SN number)'),341 'vin_sn': fields.char('Chassis Number', help='Unique number written on the vehicle motor (VIN/SN number)'),
342 'driver_id': fields.many2one('res.partner', 'Driver', help='Driver of the vehicle'),342 'driver_id': fields.many2one('res.partner', 'Driver', help='Driver of the vehicle'),
343 'model_id': fields.many2one('fleet.vehicle.model', 'Model', required=True, help='Model of the vehicle'),343 'model_id': fields.many2one('fleet.vehicle.model', 'Model', required=True, help='Model of the vehicle'),
344 'log_fuel': fields.one2many('fleet.vehicle.log.fuel', 'vehicle_id', 'Fuel Logs'),344 'log_fuel': fields.one2many('fleet.vehicle.log.fuel', 'vehicle_id', 'Fuel Logs'),
@@ -350,16 +350,16 @@
350 'fuel_logs_count': fields.function(_count_all, type='integer', string='Fuel Logs', multi=True),350 'fuel_logs_count': fields.function(_count_all, type='integer', string='Fuel Logs', multi=True),
351 'odometer_count': fields.function(_count_all, type='integer', string='Odometer', multi=True),351 'odometer_count': fields.function(_count_all, type='integer', string='Odometer', multi=True),
352 'acquisition_date': fields.date('Acquisition Date', required=False, help='Date when the vehicle has been bought'),352 'acquisition_date': fields.date('Acquisition Date', required=False, help='Date when the vehicle has been bought'),
353 'color': fields.char('Color', size=32, help='Color of the vehicle'),353 'color': fields.char('Color', help='Color of the vehicle'),
354 'state_id': fields.many2one('fleet.vehicle.state', 'State', help='Current state of the vehicle', ondelete="set null"),354 'state_id': fields.many2one('fleet.vehicle.state', 'State', help='Current state of the vehicle', ondelete="set null"),
355 'location': fields.char('Location', size=128, help='Location of the vehicle (garage, ...)'),355 'location': fields.char('Location', help='Location of the vehicle (garage, ...)'),
356 'seats': fields.integer('Seats Number', help='Number of seats of the vehicle'),356 'seats': fields.integer('Seats Number', help='Number of seats of the vehicle'),
357 'doors': fields.integer('Doors Number', help='Number of doors of the vehicle'),357 'doors': fields.integer('Doors Number', help='Number of doors of the vehicle'),
358 'tag_ids' :fields.many2many('fleet.vehicle.tag', 'fleet_vehicle_vehicle_tag_rel', 'vehicle_tag_id','tag_id', 'Tags'),358 'tag_ids' :fields.many2many('fleet.vehicle.tag', 'fleet_vehicle_vehicle_tag_rel', 'vehicle_tag_id','tag_id', 'Tags'),
359 'odometer': fields.function(_get_odometer, fnct_inv=_set_odometer, type='float', string='Last Odometer', help='Odometer measure of the vehicle at the moment of this log'),359 'odometer': fields.function(_get_odometer, fnct_inv=_set_odometer, type='float', string='Last Odometer', help='Odometer measure of the vehicle at the moment of this log'),
360 'odometer_unit': fields.selection([('kilometers', 'Kilometers'),('miles','Miles')], 'Odometer Unit', help='Unit of the odometer ',required=True),360 'odometer_unit': fields.selection([('kilometers', 'Kilometers'),('miles','Miles')], 'Odometer Unit', size=10, help='Unit of the odometer ',required=True),
361 'transmission': fields.selection([('manual', 'Manual'), ('automatic', 'Automatic')], 'Transmission', help='Transmission Used by the vehicle'),361 'transmission': fields.selection([('manual', 'Manual'), ('automatic', 'Automatic')], 'Transmission', size=10, help='Transmission Used by the vehicle'),
362 'fuel_type': fields.selection([('gasoline', 'Gasoline'), ('diesel', 'Diesel'), ('electric', 'Electric'), ('hybrid', 'Hybrid')], 'Fuel Type', help='Fuel Used by the vehicle'),362 'fuel_type': fields.selection([('gasoline', 'Gasoline'), ('diesel', 'Diesel'), ('electric', 'Electric'), ('hybrid', 'Hybrid')], 'Fuel Type', size=10, help='Fuel Used by the vehicle'),
363 'horsepower': fields.integer('Horsepower'),363 'horsepower': fields.integer('Horsepower'),
364 'horsepower_tax': fields.float('Horsepower Taxation'),364 'horsepower_tax': fields.float('Horsepower Taxation'),
365 'power': fields.integer('Power', help='Power in kW of the vehicle'),365 'power': fields.integer('Power', help='Power in kW of the vehicle'),
@@ -607,7 +607,7 @@
607 _description = 'Services for vehicles'607 _description = 'Services for vehicles'
608 _columns = {608 _columns = {
609 'purchaser_id': fields.many2one('res.partner', 'Purchaser', domain="['|',('customer','=',True),('employee','=',True)]"),609 'purchaser_id': fields.many2one('res.partner', 'Purchaser', domain="['|',('customer','=',True),('employee','=',True)]"),
610 'inv_ref': fields.char('Invoice Reference', size=64),610 'inv_ref': fields.char('Invoice Reference'),
611 'vendor_id': fields.many2one('res.partner', 'Supplier', domain="[('supplier','=',True)]"),611 'vendor_id': fields.many2one('res.partner', 'Supplier', domain="[('supplier','=',True)]"),
612 'cost_amount': fields.related('cost_id', 'amount', string='Amount', type='float', store=True), #we need to keep this field as a related with store=True because the graph view doesn't support (1) to address fields from inherited table and (2) fields that aren't stored in database612 'cost_amount': fields.related('cost_id', 'amount', string='Amount', type='float', store=True), #we need to keep this field as a related with store=True because the graph view doesn't support (1) to address fields from inherited table and (2) fields that aren't stored in database
613 'notes': fields.text('Notes'),613 'notes': fields.text('Notes'),
@@ -625,7 +625,7 @@
625 _description = 'Type of services available on a vehicle'625 _description = 'Type of services available on a vehicle'
626 _columns = {626 _columns = {
627 'name': fields.char('Name', required=True, translate=True),627 'name': fields.char('Name', required=True, translate=True),
628 'category': fields.selection([('contract', 'Contract'), ('service', 'Service'), ('both', 'Both')], 'Category', required=True, help='Choose wheter the service refer to contracts, vehicle services or both'),628 'category': fields.selection([('contract', 'Contract'), ('service', 'Service'), ('both', 'Both')], 'Category', size=8, required=True, help='Choose wheter the service refer to contracts, vehicle services or both'),
629 }629 }
630630
631631
@@ -847,5 +847,5 @@
847 _description = 'Contains the different possible status of a leasing contract'847 _description = 'Contains the different possible status of a leasing contract'
848848
849 _columns = {849 _columns = {
850 'name':fields.char('Contract Status', size=64, required=True),850 'name':fields.char('Contract Status', required=True),
851 }851 }
852852
=== modified file 'gamification/models/badge.py'
--- gamification/models/badge.py 2014-05-12 09:27:18 +0000
+++ gamification/models/badge.py 2014-05-12 18:39:30 +0000
@@ -149,6 +149,7 @@
149 ('nobody', 'No one, assigned through challenges'),149 ('nobody', 'No one, assigned through challenges'),
150 ],150 ],
151 string="Allowance to Grant",151 string="Allowance to Grant",
152 size=8,
152 help="Who can grant this badge",153 help="Who can grant this badge",
153 required=True),154 required=True),
154 'rule_auth_user_ids': fields.many2many('res.users', 'rel_badge_auth_users',155 'rule_auth_user_ids': fields.many2many('res.users', 'rel_badge_auth_users',
155156
=== modified file 'gamification/models/challenge.py'
--- gamification/models/challenge.py 2014-05-12 09:27:18 +0000
+++ gamification/models/challenge.py 2014-05-12 18:39:30 +0000
@@ -125,7 +125,7 @@
125 ('inprogress', 'In Progress'),125 ('inprogress', 'In Progress'),
126 ('done', 'Done'),126 ('done', 'Done'),
127 ],127 ],
128 string='State', required=True, track_visibility='onchange'),128 string='State', size=10, required=True, track_visibility='onchange'),
129 'manager_id': fields.many2one('res.users',129 'manager_id': fields.many2one('res.users',
130 string='Responsible', help="The user responsible for the challenge."),130 string='Responsible', help="The user responsible for the challenge."),
131131
@@ -142,6 +142,7 @@
142 ('yearly', 'Yearly')142 ('yearly', 'Yearly')
143 ],143 ],
144 string='Periodicity',144 string='Periodicity',
145 size=7,
145 help='Period of automatic goal assigment. If none is selected, should be launched manually.',146 help='Period of automatic goal assigment. If none is selected, should be launched manually.',
146 required=True),147 required=True),
147 'start_date': fields.date('Start Date',148 'start_date': fields.date('Start Date',
@@ -169,7 +170,7 @@
169 ('personal', 'Individual Goals'),170 ('personal', 'Individual Goals'),
170 ('ranking', 'Leader Board (Group Ranking)'),171 ('ranking', 'Leader Board (Group Ranking)'),
171 ],172 ],
172 string="Display Mode", required=True),173 string="Display Mode", size=8, required=True),
173174
174 'report_message_frequency': fields.selection([175 'report_message_frequency': fields.selection([
175 ('never', 'Never'),176 ('never', 'Never'),
@@ -179,7 +180,7 @@
179 ('monthly', 'Monthly'),180 ('monthly', 'Monthly'),
180 ('yearly', 'Yearly')181 ('yearly', 'Yearly')
181 ],182 ],
182 string="Report Frequency", required=True),183 string="Report Frequency", size=8, required=True),
183 'report_message_group_id': fields.many2one('mail.group',184 'report_message_group_id': fields.many2one('mail.group',
184 string='Send a copy to',185 string='Send a copy to',
185 help='Group that will receive a copy of the report in addition to the user'),186 help='Group that will receive a copy of the report in addition to the user'),
186187
=== modified file 'gamification/models/goal.py'
--- gamification/models/goal.py 2014-05-06 11:38:31 +0000
+++ gamification/models/goal.py 2014-05-12 18:39:30 +0000
@@ -71,13 +71,14 @@
71 ('python', 'Automatic: execute a specific Python code'),71 ('python', 'Automatic: execute a specific Python code'),
72 ],72 ],
73 string="Computation Mode",73 string="Computation Mode",
74 size=8,
74 help="Defined how will be computed the goals. The result of the operation will be stored in the field 'Current'.",75 help="Defined how will be computed the goals. The result of the operation will be stored in the field 'Current'.",
75 required=True),76 required=True),
76 'display_mode': fields.selection([77 'display_mode': fields.selection([
77 ('progress', 'Progressive (using numerical values)'),78 ('progress', 'Progressive (using numerical values)'),
78 ('boolean', 'Exclusive (done or not-done)'),79 ('boolean', 'Exclusive (done or not-done)'),
79 ],80 ],
80 string="Displayed as", required=True),81 string="Displayed as", size=8, required=True),
81 'model_id': fields.many2one('ir.model',82 'model_id': fields.many2one('ir.model',
82 string='Model',83 string='Model',
83 help='The model object for the field to evaluate'),84 help='The model object for the field to evaluate'),
@@ -105,6 +106,7 @@
105 ('lower', 'The lower the better')106 ('lower', 'The lower the better')
106 ],107 ],
107 string='Goal Performance',108 string='Goal Performance',
109 size=6,
108 help='A goal is considered as completed when the current value is compared to the value to reach',110 help='A goal is considered as completed when the current value is compared to the value to reach',
109 required=True),111 required=True),
110 'action_id': fields.many2one('ir.actions.act_window', string="Action",112 'action_id': fields.many2one('ir.actions.act_window', string="Action",
@@ -187,6 +189,7 @@
187 ('canceled', 'Canceled'),189 ('canceled', 'Canceled'),
188 ],190 ],
189 string='State',191 string='State',
192 size=10,
190 required=True,193 required=True,
191 track_visibility='always'),194 track_visibility='always'),
192 'to_update': fields.boolean('To update'),195 'to_update': fields.boolean('To update'),
193196
=== modified file 'google_drive/google_drive.py'
--- google_drive/google_drive.py 2014-01-29 12:13:16 +0000
+++ google_drive/google_drive.py 2014-05-12 18:39:30 +0000
@@ -192,14 +192,14 @@
192 return result192 return result
193193
194 _columns = {194 _columns = {
195 'name': fields.char('Template Name', required=True, size=1024),195 'name': fields.char('Template Name', required=True),
196 'model_id': fields.many2one('ir.model', 'Model', ondelete='set null', required=True),196 'model_id': fields.many2one('ir.model', 'Model', ondelete='set null', required=True),
197 'model': fields.related('model_id', 'model', type='char', string='Model', readonly=True),197 'model': fields.related('model_id', 'model', type='char', string='Model', readonly=True),
198 'filter_id': fields.many2one('ir.filters', 'Filter', domain="[('model_id', '=', model)]"),198 'filter_id': fields.many2one('ir.filters', 'Filter', domain="[('model_id', '=', model)]"),
199 'google_drive_template_url': fields.char('Template URL', required=True, size=1024),199 'google_drive_template_url': fields.char('Template URL', required=True, size=1024),
200 'google_drive_resource_id': fields.function(_resource_get, type="char", string='Resource Id'),200 'google_drive_resource_id': fields.function(_resource_get, type="char", string='Resource Id'),
201 'google_drive_client_id': fields.function(_client_id_get, type="char", string='Google Client '),201 'google_drive_client_id': fields.function(_client_id_get, type="char", string='Google Client '),
202 'name_template': fields.char('Google Drive Name Pattern', size=64, help='Choose how the new google drive will be named, on google side. Eg. gdoc_%(field_name)s', required=True),202 'name_template': fields.char('Google Drive Name Pattern', help='Choose how the new google drive will be named, on google side. Eg. gdoc_%(field_name)s', required=True),
203 'active': fields.boolean('Active'),203 'active': fields.boolean('Active'),
204 }204 }
205205
@@ -235,7 +235,7 @@
235 _inherit = "base.config.settings"235 _inherit = "base.config.settings"
236236
237 _columns = {237 _columns = {
238 'google_drive_authorization_code': fields.char('Authorization Code', size=124),238 'google_drive_authorization_code': fields.char('Authorization Code'),
239 'google_drive_uri': fields.char('URI', readonly=True, help="The URL to generate the authorization code from Google"),239 'google_drive_uri': fields.char('URI', readonly=True, help="The URL to generate the authorization code from Google"),
240 }240 }
241 _defaults = {241 _defaults = {
242242
=== modified file 'hr/hr.py'
--- hr/hr.py 2014-05-07 17:01:12 +0000
+++ hr/hr.py 2014-05-12 18:39:30 +0000
@@ -51,7 +51,7 @@
51 _name = "hr.employee.category"51 _name = "hr.employee.category"
52 _description = "Employee Category"52 _description = "Employee Category"
53 _columns = {53 _columns = {
54 'name': fields.char("Employee Tag", size=64, required=True),54 'name': fields.char("Employee Tag", required=True),
55 'complete_name': fields.function(_name_get_fnc, type="char", string='Name'),55 'complete_name': fields.function(_name_get_fnc, type="char", string='Name'),
56 'parent_id': fields.many2one('hr.employee.category', 'Parent Employee Tag', select=True),56 'parent_id': fields.many2one('hr.employee.category', 'Parent Employee Tag', select=True),
57 'child_ids': fields.one2many('hr.employee.category', 'parent_id', 'Child Categories'),57 'child_ids': fields.one2many('hr.employee.category', 'parent_id', 'Child Categories'),
@@ -96,7 +96,7 @@
96 _description = "Job Position"96 _description = "Job Position"
97 _inherit = ['mail.thread', 'ir.needaction_mixin']97 _inherit = ['mail.thread', 'ir.needaction_mixin']
98 _columns = {98 _columns = {
99 'name': fields.char('Job Name', size=128, required=True, select=True),99 'name': fields.char('Job Name', required=True, select=True),
100 'expected_employees': fields.function(_get_nbr_employees, string='Total Forecasted Employees',100 'expected_employees': fields.function(_get_nbr_employees, string='Total Forecasted Employees',
101 help='Expected number of employees for this job position after new recruitment.',101 help='Expected number of employees for this job position after new recruitment.',
102 store = {102 store = {
@@ -118,7 +118,7 @@
118 'department_id': fields.many2one('hr.department', 'Department'),118 'department_id': fields.many2one('hr.department', 'Department'),
119 'company_id': fields.many2one('res.company', 'Company'),119 'company_id': fields.many2one('res.company', 'Company'),
120 'state': fields.selection([('open', 'Recruitment Closed'), ('recruit', 'Recruitment in Progress')],120 'state': fields.selection([('open', 'Recruitment Closed'), ('recruit', 'Recruitment in Progress')],
121 string='Status', readonly=True, required=True,121 string='Status', size=7, readonly=True, required=True,
122 track_visibility='always',122 track_visibility='always',
123 help="By default 'Closed', set it to 'In Recruitment' if recruitment process is going on for this job position."),123 help="By default 'Closed', set it to 'In Recruitment' if recruitment process is going on for this job position."),
124 'write_date': fields.datetime('Update Date', readonly=True),124 'write_date': fields.datetime('Update Date', readonly=True),
@@ -192,20 +192,20 @@
192 'name_related': fields.related('resource_id', 'name', type='char', string='Name', readonly=True, store=True),192 'name_related': fields.related('resource_id', 'name', type='char', string='Name', readonly=True, store=True),
193 'country_id': fields.many2one('res.country', 'Nationality'),193 'country_id': fields.many2one('res.country', 'Nationality'),
194 'birthday': fields.date("Date of Birth"),194 'birthday': fields.date("Date of Birth"),
195 'ssnid': fields.char('SSN No', size=32, help='Social Security Number'),195 'ssnid': fields.char('SSN No', help='Social Security Number'),
196 'sinid': fields.char('SIN No', size=32, help="Social Insurance Number"),196 'sinid': fields.char('SIN No', help="Social Insurance Number"),
197 'identification_id': fields.char('Identification No', size=32),197 'identification_id': fields.char('Identification No'),
198 'otherid': fields.char('Other Id', size=64),198 'otherid': fields.char('Other Id'),
199 'gender': fields.selection([('male', 'Male'), ('female', 'Female')], 'Gender'),199 'gender': fields.selection([('male', 'Male'), ('female', 'Female')], 'Gender', size=6),
200 'marital': fields.selection([('single', 'Single'), ('married', 'Married'), ('widower', 'Widower'), ('divorced', 'Divorced')], 'Marital Status'),200 'marital': fields.selection([('single', 'Single'), ('married', 'Married'), ('widower', 'Widower'), ('divorced', 'Divorced')], 'Marital Status', size=8),
201 'department_id': fields.many2one('hr.department', 'Department'),201 'department_id': fields.many2one('hr.department', 'Department'),
202 'address_id': fields.many2one('res.partner', 'Working Address'),202 'address_id': fields.many2one('res.partner', 'Working Address'),
203 'address_home_id': fields.many2one('res.partner', 'Home Address'),203 'address_home_id': fields.many2one('res.partner', 'Home Address'),
204 'bank_account_id': fields.many2one('res.partner.bank', 'Bank Account Number', domain="[('partner_id','=',address_home_id)]", help="Employee bank salary account"),204 'bank_account_id': fields.many2one('res.partner.bank', 'Bank Account Number', domain="[('partner_id','=',address_home_id)]", help="Employee bank salary account"),
205 'work_phone': fields.char('Work Phone', size=32, readonly=False),205 'work_phone': fields.char('Work Phone', readonly=False),
206 'mobile_phone': fields.char('Work Mobile', size=32, readonly=False),206 'mobile_phone': fields.char('Work Mobile', readonly=False),
207 'work_email': fields.char('Work Email', size=240),207 'work_email': fields.char('Work Email', size=240),
208 'work_location': fields.char('Office Location', size=32),208 'work_location': fields.char('Office Location'),
209 'notes': fields.text('Notes'),209 'notes': fields.text('Notes'),
210 'parent_id': fields.many2one('hr.employee', 'Manager'),210 'parent_id': fields.many2one('hr.employee', 'Manager'),
211 'category_ids': fields.many2many('hr.employee.category', 'employee_category_rel', 'emp_id', 'category_id', 'Tags'),211 'category_ids': fields.many2many('hr.employee.category', 'employee_category_rel', 'emp_id', 'category_id', 'Tags'),
@@ -232,7 +232,7 @@
232 help="Small-sized photo of the employee. It is automatically "\232 help="Small-sized photo of the employee. It is automatically "\
233 "resized as a 64x64px image, with aspect ratio preserved. "\233 "resized as a 64x64px image, with aspect ratio preserved. "\
234 "Use this field anywhere a small image is required."),234 "Use this field anywhere a small image is required."),
235 'passport_id': fields.char('Passport No', size=64),235 'passport_id': fields.char('Passport No'),
236 'color': fields.integer('Color Index'),236 'color': fields.integer('Color Index'),
237 'city': fields.related('address_id', 'city', type='char', string='City'),237 'city': fields.related('address_id', 'city', type='char', string='City'),
238 'login': fields.related('user_id', 'login', type='char', string='Login', readonly=1),238 'login': fields.related('user_id', 'login', type='char', string='Login', readonly=1),
@@ -382,7 +382,7 @@
382382
383 _name = "hr.department"383 _name = "hr.department"
384 _columns = {384 _columns = {
385 'name': fields.char('Department Name', size=64, required=True),385 'name': fields.char('Department Name', required=True),
386 'complete_name': fields.function(_dept_name_get_fnc, type="char", string='Name'),386 'complete_name': fields.function(_dept_name_get_fnc, type="char", string='Name'),
387 'company_id': fields.many2one('res.company', 'Company', select=True, required=False),387 'company_id': fields.many2one('res.company', 'Company', select=True, required=False),
388 'parent_id': fields.many2one('hr.department', 'Parent Department', select=True),388 'parent_id': fields.many2one('hr.department', 'Parent Department', select=True),
389389
=== modified file 'hr_attendance/hr_attendance.py'
--- hr_attendance/hr_attendance.py 2014-04-24 09:26:39 +0000
+++ hr_attendance/hr_attendance.py 2014-05-12 18:39:30 +0000
@@ -30,8 +30,8 @@
30 _name = "hr.action.reason"30 _name = "hr.action.reason"
31 _description = "Action Reason"31 _description = "Action Reason"
32 _columns = {32 _columns = {
33 'name': fields.char('Reason', size=64, required=True, help='Specifies the reason for Signing In/Signing Out.'),33 'name': fields.char('Reason', required=True, help='Specifies the reason for Signing In/Signing Out.'),
34 'action_type': fields.selection([('sign_in', 'Sign in'), ('sign_out', 'Sign out')], "Action Type"),34 'action_type': fields.selection([('sign_in', 'Sign in'), ('sign_out', 'Sign out')], "Action Type", size=8),
35 }35 }
36 _defaults = {36 _defaults = {
37 'action_type': 'sign_in',37 'action_type': 'sign_in',
@@ -72,7 +72,7 @@
7272
73 _columns = {73 _columns = {
74 'name': fields.datetime('Date', required=True, select=1),74 'name': fields.datetime('Date', required=True, select=1),
75 'action': fields.selection([('sign_in', 'Sign In'), ('sign_out', 'Sign Out'), ('action','Action')], 'Action', required=True),75 'action': fields.selection([('sign_in', 'Sign In'), ('sign_out', 'Sign Out'), ('action','Action')], 'Action', size=8, required=True),
76 'action_desc': fields.many2one("hr.action.reason", "Action Reason", domain="[('action_type', '=', action)]", help='Specifies the reason for Signing In/Signing Out in case of extra hours.'),76 'action_desc': fields.many2one("hr.action.reason", "Action Reason", domain="[('action_type', '=', action)]", help='Specifies the reason for Signing In/Signing Out in case of extra hours.'),
77 'employee_id': fields.many2one('hr.employee', "Employee", required=True, select=True),77 'employee_id': fields.many2one('hr.employee', "Employee", required=True, select=True),
78 'worked_hours': fields.function(_worked_hours_compute, type='float', string='Worked Hours', store=True),78 'worked_hours': fields.function(_worked_hours_compute, type='float', string='Worked Hours', store=True),
7979
=== modified file 'hr_contract/hr_contract.py'
--- hr_contract/hr_contract.py 2014-05-07 14:07:18 +0000
+++ hr_contract/hr_contract.py 2014-05-12 18:39:30 +0000
@@ -48,9 +48,9 @@
48 _columns = {48 _columns = {
49 'manager': fields.boolean('Is a Manager'),49 'manager': fields.boolean('Is a Manager'),
50 'medic_exam': fields.date('Medical Examination Date'),50 'medic_exam': fields.date('Medical Examination Date'),
51 'place_of_birth': fields.char('Place of Birth', size=30),51 'place_of_birth': fields.char('Place of Birth'),
52 'children': fields.integer('Number of Children'),52 'children': fields.integer('Number of Children'),
53 'vehicle': fields.char('Company Vehicle', size=64),53 'vehicle': fields.char('Company Vehicle'),
54 'vehicle_distance': fields.integer('Home-Work Dist.', help="In kilometers"),54 'vehicle_distance': fields.integer('Home-Work Dist.', help="In kilometers"),
55 'contract_ids': fields.one2many('hr.contract', 'employee_id', 'Contracts'),55 'contract_ids': fields.one2many('hr.contract', 'employee_id', 'Contracts'),
56 'contract_id':fields.function(_get_latest_contract, string='Contract', type='many2one', relation="hr.contract", help='Latest contract of the employee'),56 'contract_id':fields.function(_get_latest_contract, string='Contract', type='many2one', relation="hr.contract", help='Latest contract of the employee'),
@@ -62,14 +62,14 @@
62 _name = 'hr.contract.type'62 _name = 'hr.contract.type'
63 _description = 'Contract Type'63 _description = 'Contract Type'
64 _columns = {64 _columns = {
65 'name': fields.char('Contract Type', size=32, required=True),65 'name': fields.char('Contract Type', required=True),
66 }66 }
6767
68class hr_contract(osv.osv):68class hr_contract(osv.osv):
69 _name = 'hr.contract'69 _name = 'hr.contract'
70 _description = 'Contract'70 _description = 'Contract'
71 _columns = {71 _columns = {
72 'name': fields.char('Contract Reference', size=64, required=True),72 'name': fields.char('Contract Reference', required=True),
73 'employee_id': fields.many2one('hr.employee', "Employee", required=True),73 'employee_id': fields.many2one('hr.employee', "Employee", required=True),
74 'department_id': fields.related('employee_id','department_id', type='many2one', relation='hr.department', string="Department", readonly=True),74 'department_id': fields.related('employee_id','department_id', type='many2one', relation='hr.department', string="Department", readonly=True),
75 'type_id': fields.many2one('hr.contract.type', "Contract Type", required=True),75 'type_id': fields.many2one('hr.contract.type', "Contract Type", required=True),
@@ -82,8 +82,8 @@
82 'wage': fields.float('Wage', digits=(16,2), required=True, help="Basic Salary of the employee"),82 'wage': fields.float('Wage', digits=(16,2), required=True, help="Basic Salary of the employee"),
83 'advantages': fields.text('Advantages'),83 'advantages': fields.text('Advantages'),
84 'notes': fields.text('Notes'),84 'notes': fields.text('Notes'),
85 'permit_no': fields.char('Work Permit No', size=256, required=False, readonly=False),85 'permit_no': fields.char('Work Permit No', required=False, readonly=False),
86 'visa_no': fields.char('Visa No', size=64, required=False, readonly=False),86 'visa_no': fields.char('Visa No', required=False, readonly=False),
87 'visa_expire': fields.date('Visa Expire Date'),87 'visa_expire': fields.date('Visa Expire Date'),
88 }88 }
8989
9090
=== modified file 'hr_evaluation/hr_evaluation.py'
--- hr_evaluation/hr_evaluation.py 2014-05-07 09:03:28 +0000
+++ hr_evaluation/hr_evaluation.py 2014-05-12 18:39:30 +0000
@@ -33,7 +33,7 @@
33 _name = "hr_evaluation.plan"33 _name = "hr_evaluation.plan"
34 _description = "Appraisal Plan"34 _description = "Appraisal Plan"
35 _columns = {35 _columns = {
36 'name': fields.char("Appraisal Plan", size=64, required=True),36 'name': fields.char("Appraisal Plan", required=True),
37 'company_id': fields.many2one('res.company', 'Company', required=True),37 'company_id': fields.many2one('res.company', 'Company', required=True),
38 'phase_ids': fields.one2many('hr_evaluation.plan.phase', 'plan_id', 'Appraisal Phases'),38 'phase_ids': fields.one2many('hr_evaluation.plan.phase', 'plan_id', 'Appraisal Phases'),
39 'month_first': fields.integer('First Appraisal in (months)', help="This number of months will be used to schedule the first evaluation date of the employee when selecting an evaluation plan. "),39 'month_first': fields.integer('First Appraisal in (months)', help="This number of months will be used to schedule the first evaluation date of the employee when selecting an evaluation plan. "),
4040
=== modified file 'hr_evaluation/report/hr_evaluation_report.py'
--- hr_evaluation/report/hr_evaluation_report.py 2014-02-11 15:35:24 +0000
+++ hr_evaluation/report/hr_evaluation_report.py 2014-05-12 18:39:30 +0000
@@ -38,7 +38,7 @@
38 'year': fields.char('Year', size=4, readonly=True),38 'year': fields.char('Year', size=4, readonly=True),
39 'month': fields.selection([('01', 'January'), ('02', 'February'), ('03', 'March'), ('04', 'April'),39 'month': fields.selection([('01', 'January'), ('02', 'February'), ('03', 'March'), ('04', 'April'),
40 ('05', 'May'), ('06', 'June'), ('07', 'July'), ('08', 'August'), ('09', 'September'),40 ('05', 'May'), ('06', 'June'), ('07', 'July'), ('08', 'August'), ('09', 'September'),
41 ('10', 'October'), ('11', 'November'), ('12', 'December')], 'Month', readonly=True),41 ('10', 'October'), ('11', 'November'), ('12', 'December')], 'Month', size=2, readonly=True),
42 'plan_id': fields.many2one('hr_evaluation.plan', 'Plan', readonly=True),42 'plan_id': fields.many2one('hr_evaluation.plan', 'Plan', readonly=True),
43 'employee_id': fields.many2one('hr.employee', "Employee", readonly=True),43 'employee_id': fields.many2one('hr.employee', "Employee", readonly=True),
44 'rating': fields.selection([44 'rating': fields.selection([
@@ -47,7 +47,7 @@
47 ('2', 'Meet expectations'),47 ('2', 'Meet expectations'),
48 ('3', 'Exceeds expectations'),48 ('3', 'Exceeds expectations'),
49 ('4', 'Significantly exceeds expectations'),49 ('4', 'Significantly exceeds expectations'),
50 ], "Overall Rating", readonly=True),50 ], "Overall Rating", size=1, readonly=True),
51 'nbr': fields.integer('# of Requests', readonly=True),51 'nbr': fields.integer('# of Requests', readonly=True),
52 'state': fields.selection([52 'state': fields.selection([
53 ('draft', 'Draft'),53 ('draft', 'Draft'),
@@ -55,7 +55,7 @@
55 ('progress', 'Final Validation'),55 ('progress', 'Final Validation'),
56 ('done', 'Done'),56 ('done', 'Done'),
57 ('cancel', 'Cancelled'),57 ('cancel', 'Cancelled'),
58 ], 'Status', readonly=True),58 ], 'Status', size=8, readonly=True),
59 }59 }
60 _order = 'create_date desc'60 _order = 'create_date desc'
6161
6262
=== modified file 'hr_expense/hr_expense.py'
--- hr_expense/hr_expense.py 2014-03-10 14:36:00 +0000
+++ hr_expense/hr_expense.py 2014-05-12 18:39:30 +0000
@@ -65,7 +65,7 @@
65 }65 }
6666
67 _columns = {67 _columns = {
68 'name': fields.char('Description', size=128, required=True, readonly=True, states={'draft':[('readonly',False)], 'confirm':[('readonly',False)]}),68 'name': fields.char('Description', required=True, readonly=True, states={'draft':[('readonly',False)], 'confirm':[('readonly',False)]}),
69 'id': fields.integer('Sheet ID', readonly=True),69 'id': fields.integer('Sheet ID', readonly=True),
70 'date': fields.date('Date', select=True, readonly=True, states={'draft':[('readonly',False)], 'confirm':[('readonly',False)]}),70 'date': fields.date('Date', select=True, readonly=True, states={'draft':[('readonly',False)], 'confirm':[('readonly',False)]}),
71 'journal_id': fields.many2one('account.journal', 'Force Journal', help = "The journal used when the expense is done."),71 'journal_id': fields.many2one('account.journal', 'Force Journal', help = "The journal used when the expense is done."),
@@ -92,7 +92,7 @@
92 ('done', 'Waiting Payment'),92 ('done', 'Waiting Payment'),
93 ('paid', 'Paid'),93 ('paid', 'Paid'),
94 ],94 ],
95 'Status', readonly=True, track_visibility='onchange',95 'Status', size=9, readonly=True, track_visibility='onchange',
96 help='When the expense request is created the status is \'Draft\'.\n It is confirmed by the user and request is sent to admin, the status is \'Waiting Confirmation\'.\96 help='When the expense request is created the status is \'Draft\'.\n It is confirmed by the user and request is sent to admin, the status is \'Waiting Confirmation\'.\
97 \nIf the admin accepts it, the status is \'Accepted\'.\n If the accounting entries are made for the expense request, the status is \'Waiting Payment\'.'),97 \nIf the admin accepts it, the status is \'Accepted\'.\n If the accounting entries are made for the expense request, the status is \'Waiting Payment\'.'),
9898
@@ -415,7 +415,7 @@
415 return result and result[1] or False415 return result and result[1] or False
416416
417 _columns = {417 _columns = {
418 'name': fields.char('Expense Note', size=128, required=True),418 'name': fields.char('Expense Note', required=True),
419 'date_value': fields.date('Date', required=True),419 'date_value': fields.date('Date', required=True),
420 'expense_id': fields.many2one('hr.expense.expense', 'Expense', ondelete='cascade', select=True),420 'expense_id': fields.many2one('hr.expense.expense', 'Expense', ondelete='cascade', select=True),
421 'total_amount': fields.function(_amount, string='Total', digits_compute=dp.get_precision('Account')),421 'total_amount': fields.function(_amount, string='Total', digits_compute=dp.get_precision('Account')),
@@ -425,7 +425,7 @@
425 'uom_id': fields.many2one('product.uom', 'Unit of Measure', required=True),425 'uom_id': fields.many2one('product.uom', 'Unit of Measure', required=True),
426 'description': fields.text('Description'),426 'description': fields.text('Description'),
427 'analytic_account': fields.many2one('account.analytic.account','Analytic account'),427 'analytic_account': fields.many2one('account.analytic.account','Analytic account'),
428 'ref': fields.char('Reference', size=32),428 'ref': fields.char('Reference'),
429 'sequence': fields.integer('Sequence', select=True, help="Gives the sequence order when displaying a list of expense lines."),429 'sequence': fields.integer('Sequence', select=True, help="Gives the sequence order when displaying a list of expense lines."),
430 }430 }
431 _defaults = {431 _defaults = {
432432
=== modified file 'hr_expense/report/hr_expense_report.py'
--- hr_expense/report/hr_expense_report.py 2013-10-27 12:31:04 +0000
+++ hr_expense/report/hr_expense_report.py 2014-05-12 18:39:30 +0000
@@ -36,7 +36,7 @@
36 'day': fields.char('Day', size=128, readonly=True),36 'day': fields.char('Day', size=128, readonly=True),
37 'month':fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'),37 'month':fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'),
38 ('05','May'), ('06','June'), ('07','July'), ('08','August'), ('09','September'),38 ('05','May'), ('06','June'), ('07','July'), ('08','August'), ('09','September'),
39 ('10','October'), ('11','November'), ('12','December')], 'Month',readonly=True),39 ('10','October'), ('11','November'), ('12','December')], 'Month', size=2, readonly=True),
40 'product_id':fields.many2one('product.product', 'Product', readonly=True),40 'product_id':fields.many2one('product.product', 'Product', readonly=True),
41 'journal_id': fields.many2one('account.journal', 'Force Journal', readonly=True),41 'journal_id': fields.many2one('account.journal', 'Force Journal', readonly=True),
42 'product_qty':fields.float('Qty', readonly=True),42 'product_qty':fields.float('Qty', readonly=True),
@@ -61,7 +61,7 @@
61 ('accepted', 'Accepted'),61 ('accepted', 'Accepted'),
62 ('done', 'Done'),62 ('done', 'Done'),
63 ('cancelled', 'Cancelled')],63 ('cancelled', 'Cancelled')],
64 'Status', readonly=True),64 'Status', size=9, readonly=True),
65 }65 }
66 _order = 'date desc'66 _order = 'date desc'
67 def init(self, cr):67 def init(self, cr):
6868
=== modified file 'hr_holidays/report/hr_holidays_report.py'
--- hr_holidays/report/hr_holidays_report.py 2013-10-27 12:31:04 +0000
+++ hr_holidays/report/hr_holidays_report.py 2014-05-12 18:39:30 +0000
@@ -27,10 +27,10 @@
27 _description = "Total holidays by type"27 _description = "Total holidays by type"
28 _auto = False28 _auto = False
29 _columns = {29 _columns = {
30 'name': fields.char('Employee', size=64),30 'name': fields.char('Employee'),
31 'no_of_leaves': fields.integer('Remaining leaves'),31 'no_of_leaves': fields.integer('Remaining leaves'),
32 'user_id': fields.many2one('res.users', 'User'),32 'user_id': fields.many2one('res.users', 'User'),
33 'leave_type': fields.char('Leave Type', size=64),33 'leave_type': fields.char('Leave Type'),
34 }34 }
3535
36 def init(self, cr):36 def init(self, cr):
3737
=== modified file 'hr_holidays/wizard/hr_holidays_summary_department.py'
--- hr_holidays/wizard/hr_holidays_summary_department.py 2013-10-27 12:31:04 +0000
+++ hr_holidays/wizard/hr_holidays_summary_department.py 2014-05-12 18:39:30 +0000
@@ -30,7 +30,7 @@
30 _columns = {30 _columns = {
31 'date_from': fields.date('From', required=True),31 'date_from': fields.date('From', required=True),
32 'depts': fields.many2many('hr.department', 'summary_dept_rel', 'sum_id', 'dept_id', 'Department(s)'),32 'depts': fields.many2many('hr.department', 'summary_dept_rel', 'sum_id', 'dept_id', 'Department(s)'),
33 'holiday_type': fields.selection([('Approved','Approved'),('Confirmed','Confirmed'),('both','Both Approved and Confirmed')], 'Leave Type', required=True)33 'holiday_type': fields.selection([('Approved','Approved'),('Confirmed','Confirmed'),('both','Both Approved and Confirmed')], 'Leave Type', size=9, required=True)
34 }34 }
3535
36 _defaults = {36 _defaults = {
3737
=== modified file 'hr_holidays/wizard/hr_holidays_summary_employees.py'
--- hr_holidays/wizard/hr_holidays_summary_employees.py 2013-10-27 12:31:04 +0000
+++ hr_holidays/wizard/hr_holidays_summary_employees.py 2014-05-12 18:39:30 +0000
@@ -28,7 +28,7 @@
28 _columns = {28 _columns = {
29 'date_from': fields.date('From', required=True),29 'date_from': fields.date('From', required=True),
30 'emp': fields.many2many('hr.employee', 'summary_emp_rel', 'sum_id', 'emp_id', 'Employee(s)'),30 'emp': fields.many2many('hr.employee', 'summary_emp_rel', 'sum_id', 'emp_id', 'Employee(s)'),
31 'holiday_type': fields.selection([('Approved','Approved'),('Confirmed','Confirmed'),('both','Both Approved and Confirmed')], 'Select Leave Type', required=True)31 'holiday_type': fields.selection([('Approved','Approved'),('Confirmed','Confirmed'),('both','Both Approved and Confirmed')], 'Select Leave Type', size=9, required=True)
32 }32 }
3333
34 _defaults = {34 _defaults = {
3535
=== modified file 'hr_payroll/hr_payroll.py'
--- hr_payroll/hr_payroll.py 2014-05-07 13:58:26 +0000
+++ hr_payroll/hr_payroll.py 2014-05-12 18:39:30 +0000
@@ -44,7 +44,7 @@
44 _name = 'hr.payroll.structure'44 _name = 'hr.payroll.structure'
45 _description = 'Salary Structure'45 _description = 'Salary Structure'
46 _columns = {46 _columns = {
47 'name':fields.char('Name', size=256, required=True),47 'name':fields.char('Name', required=True),
48 'code':fields.char('Reference', size=64, required=True),48 'code':fields.char('Reference', size=64, required=True),
49 'company_id':fields.many2one('res.company', 'Company', required=True),49 'company_id':fields.many2one('res.company', 'Company', required=True),
50 'note': fields.text('Description'),50 'note': fields.text('Description'),
@@ -131,7 +131,7 @@
131 ('weekly', 'Weekly'),131 ('weekly', 'Weekly'),
132 ('bi-weekly', 'Bi-weekly'),132 ('bi-weekly', 'Bi-weekly'),
133 ('bi-monthly', 'Bi-monthly'),133 ('bi-monthly', 'Bi-monthly'),
134 ], 'Scheduled Pay', select=True),134 ], 'Scheduled Pay', size=13, select=True),
135 }135 }
136136
137 _defaults = {137 _defaults = {
@@ -160,7 +160,7 @@
160 _columns = {160 _columns = {
161 'company_id':fields.many2one('res.company', 'Company'),161 'company_id':fields.many2one('res.company', 'Company'),
162 'partner_id':fields.many2one('res.partner', 'Partner'),162 'partner_id':fields.many2one('res.partner', 'Partner'),
163 'name':fields.char('Name', size=256, required=True, readonly=False),163 'name':fields.char('Name', required=True, readonly=False),
164 'register_line_ids':fields.one2many('hr.payslip.line', 'register_id', 'Register Line', readonly=True),164 'register_line_ids':fields.one2many('hr.payslip.line', 'register_id', 'Register Line', readonly=True),
165 'note': fields.text('Description'),165 'note': fields.text('Description'),
166 }166 }
@@ -179,7 +179,7 @@
179 _name = 'hr.salary.rule.category'179 _name = 'hr.salary.rule.category'
180 _description = 'Salary Rule Category'180 _description = 'Salary Rule Category'
181 _columns = {181 _columns = {
182 'name':fields.char('Name', size=64, required=True, readonly=False),182 'name':fields.char('Name', required=True, readonly=False),
183 'code':fields.char('Code', size=64, required=True, readonly=False),183 'code':fields.char('Code', size=64, required=True, readonly=False),
184 'parent_id':fields.many2one('hr.salary.rule.category', 'Parent', help="Linking a salary category to its parent is used only for the reporting purpose."),184 'parent_id':fields.many2one('hr.salary.rule.category', 'Parent', help="Linking a salary category to its parent is used only for the reporting purpose."),
185 'children_ids': fields.one2many('hr.salary.rule.category', 'parent_id', 'Children'),185 'children_ids': fields.one2many('hr.salary.rule.category', 'parent_id', 'Children'),
@@ -214,12 +214,12 @@
214 _name = 'hr.payslip.run'214 _name = 'hr.payslip.run'
215 _description = 'Payslip Batches'215 _description = 'Payslip Batches'
216 _columns = {216 _columns = {
217 'name': fields.char('Name', size=64, required=True, readonly=True, states={'draft': [('readonly', False)]}),217 'name': fields.char('Name', required=True, readonly=True, states={'draft': [('readonly', False)]}),
218 'slip_ids': fields.one2many('hr.payslip', 'payslip_run_id', 'Payslips', required=False, readonly=True, states={'draft': [('readonly', False)]}),218 'slip_ids': fields.one2many('hr.payslip', 'payslip_run_id', 'Payslips', required=False, readonly=True, states={'draft': [('readonly', False)]}),
219 'state': fields.selection([219 'state': fields.selection([
220 ('draft', 'Draft'),220 ('draft', 'Draft'),
221 ('close', 'Close'),221 ('close', 'Close'),
222 ], 'Status', select=True, readonly=True),222 ], 'Status', select=True, size=6, readonly=True),
223 'date_start': fields.date('Date From', required=True, readonly=True, states={'draft': [('readonly', False)]}),223 'date_start': fields.date('Date From', required=True, readonly=True, states={'draft': [('readonly', False)]}),
224 'date_end': fields.date('Date To', required=True, readonly=True, states={'draft': [('readonly', False)]}),224 'date_end': fields.date('Date To', required=True, readonly=True, states={'draft': [('readonly', False)]}),
225 'credit_note': fields.boolean('Credit Note', readonly=True, states={'draft': [('readonly', False)]}, help="If its checked, indicates that all payslips generated from here are refund payslips."),225 'credit_note': fields.boolean('Credit Note', readonly=True, states={'draft': [('readonly', False)]}, help="If its checked, indicates that all payslips generated from here are refund payslips."),
@@ -267,8 +267,8 @@
267267
268 _columns = {268 _columns = {
269 'struct_id': fields.many2one('hr.payroll.structure', 'Structure', readonly=True, states={'draft': [('readonly', False)]}, help='Defines the rules that have to be applied to this payslip, accordingly to the contract chosen. If you let empty the field contract, this field isn\'t mandatory anymore and thus the rules applied will be all the rules set on the structure of all contracts of the employee valid for the chosen period'),269 'struct_id': fields.many2one('hr.payroll.structure', 'Structure', readonly=True, states={'draft': [('readonly', False)]}, help='Defines the rules that have to be applied to this payslip, accordingly to the contract chosen. If you let empty the field contract, this field isn\'t mandatory anymore and thus the rules applied will be all the rules set on the structure of all contracts of the employee valid for the chosen period'),
270 'name': fields.char('Payslip Name', size=64, required=False, readonly=True, states={'draft': [('readonly', False)]}),270 'name': fields.char('Payslip Name', required=False, readonly=True, states={'draft': [('readonly', False)]}),
271 'number': fields.char('Reference', size=64, required=False, readonly=True, states={'draft': [('readonly', False)]}),271 'number': fields.char('Reference', required=False, readonly=True, states={'draft': [('readonly', False)]}),
272 'employee_id': fields.many2one('hr.employee', 'Employee', required=True, readonly=True, states={'draft': [('readonly', False)]}),272 'employee_id': fields.many2one('hr.employee', 'Employee', required=True, readonly=True, states={'draft': [('readonly', False)]}),
273 'date_from': fields.date('Date From', readonly=True, states={'draft': [('readonly', False)]}, required=True),273 'date_from': fields.date('Date From', readonly=True, states={'draft': [('readonly', False)]}, required=True),
274 'date_to': fields.date('Date To', readonly=True, states={'draft': [('readonly', False)]}, required=True),274 'date_to': fields.date('Date To', readonly=True, states={'draft': [('readonly', False)]}, required=True),
@@ -277,7 +277,7 @@
277 ('verify', 'Waiting'),277 ('verify', 'Waiting'),
278 ('done', 'Done'),278 ('done', 'Done'),
279 ('cancel', 'Rejected'),279 ('cancel', 'Rejected'),
280 ], 'Status', select=True, readonly=True,280 ], 'Status', size=6, select=True, readonly=True,
281 help='* When the payslip is created the status is \'Draft\'.\281 help='* When the payslip is created the status is \'Draft\'.\
282 \n* If the payslip is under verification, the status is \'Waiting\'. \282 \n* If the payslip is under verification, the status is \'Waiting\'. \
283 \n* If the payslip is confirmed then status is set to \'Done\'.\283 \n* If the payslip is confirmed then status is set to \'Done\'.\
@@ -731,7 +731,7 @@
731 _name = 'hr.payslip.worked_days'731 _name = 'hr.payslip.worked_days'
732 _description = 'Payslip Worked Days'732 _description = 'Payslip Worked Days'
733 _columns = {733 _columns = {
734 'name': fields.char('Description', size=256, required=True),734 'name': fields.char('Description', required=True),
735 'payslip_id': fields.many2one('hr.payslip', 'Pay Slip', required=True, ondelete='cascade', select=True),735 'payslip_id': fields.many2one('hr.payslip', 'Pay Slip', required=True, ondelete='cascade', select=True),
736 'sequence': fields.integer('Sequence', required=True, select=True),736 'sequence': fields.integer('Sequence', required=True, select=True),
737 'code': fields.char('Code', size=52, required=True, help="The code that can be used in the salary rules"),737 'code': fields.char('Code', size=52, required=True, help="The code that can be used in the salary rules"),
@@ -752,7 +752,7 @@
752 _name = 'hr.payslip.input'752 _name = 'hr.payslip.input'
753 _description = 'Payslip Input'753 _description = 'Payslip Input'
754 _columns = {754 _columns = {
755 'name': fields.char('Description', size=256, required=True),755 'name': fields.char('Description', required=True),
756 'payslip_id': fields.many2one('hr.payslip', 'Pay Slip', required=True, ondelete='cascade', select=True),756 'payslip_id': fields.many2one('hr.payslip', 'Pay Slip', required=True, ondelete='cascade', select=True),
757 'sequence': fields.integer('Sequence', required=True, select=True),757 'sequence': fields.integer('Sequence', required=True, select=True),
758 'code': fields.char('Code', size=52, required=True, help="The code that can be used in the salary rules"),758 'code': fields.char('Code', size=52, required=True, help="The code that can be used in the salary rules"),
@@ -770,17 +770,17 @@
770770
771 _name = 'hr.salary.rule'771 _name = 'hr.salary.rule'
772 _columns = {772 _columns = {
773 'name':fields.char('Name', size=256, required=True, readonly=False),773 'name':fields.char('Name', required=True, readonly=False),
774 'code':fields.char('Code', size=64, required=True, help="The code of salary rules can be used as reference in computation of other rules. In that case, it is case sensitive."),774 'code':fields.char('Code', size=64, required=True, help="The code of salary rules can be used as reference in computation of other rules. In that case, it is case sensitive."),
775 'sequence': fields.integer('Sequence', required=True, help='Use to arrange calculation sequence', select=True),775 'sequence': fields.integer('Sequence', required=True, help='Use to arrange calculation sequence', select=True),
776 'quantity': fields.char('Quantity', size=256, help="It is used in computation for percentage and fixed amount.For e.g. A rule for Meal Voucher having fixed amount of 1€ per worked day can have its quantity defined in expression like worked_days.WORK100.number_of_days."),776 'quantity': fields.char('Quantity', help="It is used in computation for percentage and fixed amount.For e.g. A rule for Meal Voucher having fixed amount of 1€ per worked day can have its quantity defined in expression like worked_days.WORK100.number_of_days."),
777 'category_id':fields.many2one('hr.salary.rule.category', 'Category', required=True),777 'category_id':fields.many2one('hr.salary.rule.category', 'Category', required=True),
778 'active':fields.boolean('Active', help="If the active field is set to false, it will allow you to hide the salary rule without removing it."),778 'active':fields.boolean('Active', help="If the active field is set to false, it will allow you to hide the salary rule without removing it."),
779 'appears_on_payslip': fields.boolean('Appears on Payslip', help="Used to display the salary rule on payslip."),779 'appears_on_payslip': fields.boolean('Appears on Payslip', help="Used to display the salary rule on payslip."),
780 'parent_rule_id':fields.many2one('hr.salary.rule', 'Parent Salary Rule', select=True),780 'parent_rule_id':fields.many2one('hr.salary.rule', 'Parent Salary Rule', select=True),
781 'company_id':fields.many2one('res.company', 'Company', required=False),781 'company_id':fields.many2one('res.company', 'Company', required=False),
782 'condition_select': fields.selection([('none', 'Always True'),('range', 'Range'), ('python', 'Python Expression')], "Condition Based on", required=True),782 'condition_select': fields.selection([('none', 'Always True'),('range', 'Range'), ('python', 'Python Expression')], "Condition Based on", size=6, required=True),
783 'condition_range':fields.char('Range Based on',size=1024, readonly=False, help='This will be used to compute the % fields values; in general it is on basic, but you can also use categories code fields in lowercase as a variable names (hra, ma, lta, etc.) and the variable basic.'),783 'condition_range':fields.char('Range Based on', readonly=False, help='This will be used to compute the % fields values; in general it is on basic, but you can also use categories code fields in lowercase as a variable names (hra, ma, lta, etc.) and the variable basic.'),
784 'condition_python':fields.text('Python Condition', required=True, readonly=False, help='Applied this rule for calculation if condition is true. You can specify condition like basic > 1000.'),784 'condition_python':fields.text('Python Condition', required=True, readonly=False, help='Applied this rule for calculation if condition is true. You can specify condition like basic > 1000.'),
785 'condition_range_min': fields.float('Minimum Range', required=False, help="The minimum amount, applied for this rule."),785 'condition_range_min': fields.float('Minimum Range', required=False, help="The minimum amount, applied for this rule."),
786 'condition_range_max': fields.float('Maximum Range', required=False, help="The maximum amount, applied for this rule."),786 'condition_range_max': fields.float('Maximum Range', required=False, help="The maximum amount, applied for this rule."),
@@ -788,11 +788,11 @@
788 ('percentage','Percentage (%)'),788 ('percentage','Percentage (%)'),
789 ('fix','Fixed Amount'),789 ('fix','Fixed Amount'),
790 ('code','Python Code'),790 ('code','Python Code'),
791 ],'Amount Type', select=True, required=True, help="The computation method for the rule amount."),791 ],'Amount Type', size=10, select=True, required=True, help="The computation method for the rule amount."),
792 'amount_fix': fields.float('Fixed Amount', digits_compute=dp.get_precision('Payroll'),),792 'amount_fix': fields.float('Fixed Amount', digits_compute=dp.get_precision('Payroll'),),
793 'amount_percentage': fields.float('Percentage (%)', digits_compute=dp.get_precision('Payroll Rate'), help='For example, enter 50.0 to apply a percentage of 50%'),793 'amount_percentage': fields.float('Percentage (%)', digits_compute=dp.get_precision('Payroll Rate'), help='For example, enter 50.0 to apply a percentage of 50%'),
794 'amount_python_compute':fields.text('Python Code'),794 'amount_python_compute':fields.text('Python Code'),
795 'amount_percentage_base':fields.char('Percentage based on',size=1024, required=False, readonly=False, help='result will be affected to a variable'),795 'amount_percentage_base':fields.char('Percentage based on', required=False, readonly=False, help='result will be affected to a variable'),
796 'child_ids':fields.one2many('hr.salary.rule', 'parent_rule_id', 'Child Salary Rule'),796 'child_ids':fields.one2many('hr.salary.rule', 'parent_rule_id', 'Child Salary Rule'),
797 'register_id':fields.many2one('hr.contribution.register', 'Contribution Register', help="Eventual third party involved in the salary payment of the employees."),797 'register_id':fields.many2one('hr.contribution.register', 'Contribution Register', help="Eventual third party involved in the salary payment of the employees."),
798 'input_ids': fields.one2many('hr.rule.input', 'input_id', 'Inputs'),798 'input_ids': fields.one2many('hr.rule.input', 'input_id', 'Inputs'),
@@ -911,7 +911,7 @@
911 _name = 'hr.rule.input'911 _name = 'hr.rule.input'
912 _description = 'Salary Rule Input'912 _description = 'Salary Rule Input'
913 _columns = {913 _columns = {
914 'name': fields.char('Description', size=256, required=True),914 'name': fields.char('Description', required=True),
915 'code': fields.char('Code', size=52, required=True, help="The code that can be used in the salary rules"),915 'code': fields.char('Code', size=52, required=True, help="The code that can be used in the salary rules"),
916 'input_id': fields.many2one('hr.salary.rule', 'Salary Rule Input', required=True)916 'input_id': fields.many2one('hr.salary.rule', 'Salary Rule Input', required=True)
917 }917 }
918918
=== modified file 'hr_recruitment/hr_recruitment.py'
--- hr_recruitment/hr_recruitment.py 2014-05-08 12:35:29 +0000
+++ hr_recruitment/hr_recruitment.py 2014-05-12 18:39:30 +0000
@@ -37,7 +37,7 @@
37 _name = "hr.recruitment.source"37 _name = "hr.recruitment.source"
38 _description = "Source of Applicants"38 _description = "Source of Applicants"
39 _columns = {39 _columns = {
40 'name': fields.char('Source Name', size=64, required=True, translate=True),40 'name': fields.char('Source Name', required=True, translate=True),
41 }41 }
4242
43class hr_recruitment_stage(osv.osv):43class hr_recruitment_stage(osv.osv):
@@ -46,7 +46,7 @@
46 _description = "Stage of Recruitment"46 _description = "Stage of Recruitment"
47 _order = 'sequence'47 _order = 'sequence'
48 _columns = {48 _columns = {
49 'name': fields.char('Name', size=64, required=True, translate=True),49 'name': fields.char('Name', required=True, translate=True),
50 'sequence': fields.integer('Sequence', help="Gives the sequence order when displaying a list of stages."),50 'sequence': fields.integer('Sequence', help="Gives the sequence order when displaying a list of stages."),
51 'department_id':fields.many2one('hr.department', 'Specific to a Department', help="Stages of the recruitment process may be different per department. If this stage is common to all departments, keep this field empty."),51 'department_id':fields.many2one('hr.department', 'Specific to a Department', help="Stages of the recruitment process may be different per department. If this stage is common to all departments, keep this field empty."),
52 'requirements': fields.text('Requirements'),52 'requirements': fields.text('Requirements'),
@@ -64,7 +64,7 @@
64 _name = "hr.recruitment.degree"64 _name = "hr.recruitment.degree"
65 _description = "Degree of Recruitment"65 _description = "Degree of Recruitment"
66 _columns = {66 _columns = {
67 'name': fields.char('Name', size=64, required=True, translate=True),67 'name': fields.char('Name', required=True, translate=True),
68 'sequence': fields.integer('Sequence', help="Gives the sequence order when displaying a list of degrees."),68 'sequence': fields.integer('Sequence', help="Gives the sequence order when displaying a list of degrees."),
69 }69 }
70 _defaults = {70 _defaults = {
@@ -179,7 +179,7 @@
179 return res179 return res
180180
181 _columns = {181 _columns = {
182 'name': fields.char('Subject / Application Name', size=128, required=True),182 'name': fields.char('Subject / Application Name', required=True),
183 'active': fields.boolean('Active', help="If the active field is set to false, it will allow you to hide the case without removing it."),183 'active': fields.boolean('Active', help="If the active field is set to false, it will allow you to hide the case without removing it."),
184 'description': fields.text('Description'),184 'description': fields.text('Description'),
185 'email_from': fields.char('Email', size=128, help="These people will receive email."),185 'email_from': fields.char('Email', size=128, help="These people will receive email."),
@@ -200,21 +200,21 @@
200 'date_last_stage_update': fields.datetime('Last Stage Update', select=True),200 'date_last_stage_update': fields.datetime('Last Stage Update', select=True),
201 'date_action': fields.date('Next Action Date'),201 'date_action': fields.date('Next Action Date'),
202 'title_action': fields.char('Next Action', size=64),202 'title_action': fields.char('Next Action', size=64),
203 'priority': fields.selection(AVAILABLE_PRIORITIES, 'Appreciation'),203 'priority': fields.selection(AVAILABLE_PRIORITIES, 'Appreciation', size=1),
204 'job_id': fields.many2one('hr.job', 'Applied Job'),204 'job_id': fields.many2one('hr.job', 'Applied Job'),
205 'salary_proposed_extra': fields.char('Proposed Salary Extra', size=100, help="Salary Proposed by the Organisation, extra advantages"),205 'salary_proposed_extra': fields.char('Proposed Salary Extra', help="Salary Proposed by the Organisation, extra advantages"),
206 'salary_expected_extra': fields.char('Expected Salary Extra', size=100, help="Salary Expected by Applicant, extra advantages"),206 'salary_expected_extra': fields.char('Expected Salary Extra', help="Salary Expected by Applicant, extra advantages"),
207 'salary_proposed': fields.float('Proposed Salary', help="Salary Proposed by the Organisation"),207 'salary_proposed': fields.float('Proposed Salary', help="Salary Proposed by the Organisation"),
208 'salary_expected': fields.float('Expected Salary', help="Salary Expected by Applicant"),208 'salary_expected': fields.float('Expected Salary', help="Salary Expected by Applicant"),
209 'availability': fields.integer('Availability', help="The number of days in which the applicant will be available to start working"),209 'availability': fields.integer('Availability', help="The number of days in which the applicant will be available to start working"),
210 'partner_name': fields.char("Applicant's Name", size=64),210 'partner_name': fields.char("Applicant's Name"),
211 'partner_phone': fields.char('Phone', size=32),211 'partner_phone': fields.char('Phone', size=32),
212 'partner_mobile': fields.char('Mobile', size=32),212 'partner_mobile': fields.char('Mobile', size=32),
213 'type_id': fields.many2one('hr.recruitment.degree', 'Degree'),213 'type_id': fields.many2one('hr.recruitment.degree', 'Degree'),
214 'department_id': fields.many2one('hr.department', 'Department'),214 'department_id': fields.many2one('hr.department', 'Department'),
215 'survey': fields.related('job_id', 'survey_id', type='many2one', relation='survey.survey', string='Survey'),215 'survey': fields.related('job_id', 'survey_id', type='many2one', relation='survey.survey', string='Survey'),
216 'response_id': fields.many2one('survey.user_input', "Response", ondelete='set null', oldname="response"),216 'response_id': fields.many2one('survey.user_input', "Response", ondelete='set null', oldname="response"),
217 'reference': fields.char('Referred By', size=128),217 'reference': fields.char('Referred By'),
218 'source_id': fields.many2one('hr.recruitment.source', 'Source'),218 'source_id': fields.many2one('hr.recruitment.source', 'Source'),
219 'day_open': fields.function(_compute_day, string='Days to Open', \219 'day_open': fields.function(_compute_day, string='Days to Open', \
220 multi='day_open', type="float", store=True),220 multi='day_open', type="float", store=True),
@@ -589,7 +589,7 @@
589 _name = "hr.applicant_category"589 _name = "hr.applicant_category"
590 _description = "Category of applicant"590 _description = "Category of applicant"
591 _columns = {591 _columns = {
592 'name': fields.char('Name', size=64, required=True, translate=True),592 'name': fields.char('Name', required=True, translate=True),
593 }593 }
594594
595# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:595# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
596596
=== modified file 'hr_recruitment/report/hr_recruitment_report.py'
--- hr_recruitment/report/hr_recruitment_report.py 2014-01-27 09:23:08 +0000
+++ hr_recruitment/report/hr_recruitment_report.py 2014-05-12 18:39:30 +0000
@@ -42,7 +42,7 @@
42 'stage_id': fields.many2one ('hr.recruitment.stage', 'Stage'),42 'stage_id': fields.many2one ('hr.recruitment.stage', 'Stage'),
43 'type_id': fields.many2one('hr.recruitment.degree', 'Degree'),43 'type_id': fields.many2one('hr.recruitment.degree', 'Degree'),
44 'department_id': fields.many2one('hr.department','Department',readonly=True),44 'department_id': fields.many2one('hr.department','Department',readonly=True),
45 'priority': fields.selection(hr_recruitment.AVAILABLE_PRIORITIES, 'Appreciation'),45 'priority': fields.selection(hr_recruitment.AVAILABLE_PRIORITIES, 'Appreciation', size=1),
46 'salary_prop' : fields.float("Salary Proposed", digits_compute=dp.get_precision('Account')),46 'salary_prop' : fields.float("Salary Proposed", digits_compute=dp.get_precision('Account')),
47 'salary_prop_avg' : fields.float("Avg. Proposed Salary", group_operator="avg", digits_compute=dp.get_precision('Account')),47 'salary_prop_avg' : fields.float("Avg. Proposed Salary", group_operator="avg", digits_compute=dp.get_precision('Account')),
48 'salary_exp' : fields.float("Salary Expected", digits_compute=dp.get_precision('Account')),48 'salary_exp' : fields.float("Salary Expected", digits_compute=dp.get_precision('Account')),
4949
=== modified file 'hr_timesheet/wizard/hr_timesheet_sign_in_out.py'
--- hr_timesheet/wizard/hr_timesheet_sign_in_out.py 2013-10-27 12:31:04 +0000
+++ hr_timesheet/wizard/hr_timesheet_sign_in_out.py 2014-05-12 18:39:30 +0000
@@ -28,11 +28,11 @@
28 _description = 'Sign Out By Project'28 _description = 'Sign Out By Project'
29 _columns = {29 _columns = {
30 'account_id': fields.many2one('account.analytic.account', 'Project / Analytic Account', domain=[('type','=','normal')]),30 'account_id': fields.many2one('account.analytic.account', 'Project / Analytic Account', domain=[('type','=','normal')]),
31 'info': fields.char('Work Description', size=256, required=True),31 'info': fields.char('Work Description', required=True),
32 'date_start': fields.datetime('Starting Date', readonly=True),32 'date_start': fields.datetime('Starting Date', readonly=True),
33 'date': fields.datetime('Closing Date'),33 'date': fields.datetime('Closing Date'),
34 'analytic_amount': fields.float('Minimum Analytic Amount'),34 'analytic_amount': fields.float('Minimum Analytic Amount'),
35 'name': fields.char('Employee\'s Name', size=32, required=True, readonly=True),35 'name': fields.char('Employee\'s Name', required=True, readonly=True),
36 'state': fields.related('emp_id', 'state', string='Current Status', type='selection', selection=[('present', 'Present'), ('absent', 'Absent')], required=True, readonly=True),36 'state': fields.related('emp_id', 'state', string='Current Status', type='selection', selection=[('present', 'Present'), ('absent', 'Absent')], required=True, readonly=True),
37 'server_date': fields.datetime('Current Date', required=True, readonly=True),37 'server_date': fields.datetime('Current Date', required=True, readonly=True),
38 'emp_id': fields.many2one('hr.employee', 'Employee ID')38 'emp_id': fields.many2one('hr.employee', 'Employee ID')
@@ -109,7 +109,7 @@
109 _name = 'hr.sign.in.project'109 _name = 'hr.sign.in.project'
110 _description = 'Sign In By Project'110 _description = 'Sign In By Project'
111 _columns = {111 _columns = {
112 'name': fields.char('Employee\'s Name', size=32, readonly=True),112 'name': fields.char('Employee\'s Name', readonly=True),
113 'state': fields.related('emp_id', 'state', string='Current Status', type='selection', selection=[('present', 'Present'), ('absent', 'Absent')], required=True, readonly=True),113 'state': fields.related('emp_id', 'state', string='Current Status', type='selection', selection=[('present', 'Present'), ('absent', 'Absent')], required=True, readonly=True),
114 'date': fields.datetime('Starting Date'),114 'date': fields.datetime('Starting Date'),
115 'server_date': fields.datetime('Current Date', readonly=True),115 'server_date': fields.datetime('Current Date', readonly=True),
116116
=== modified file 'hr_timesheet_invoice/hr_timesheet_invoice.py'
--- hr_timesheet_invoice/hr_timesheet_invoice.py 2014-01-15 21:44:54 +0000
+++ hr_timesheet_invoice/hr_timesheet_invoice.py 2014-05-12 18:39:30 +0000
@@ -29,8 +29,8 @@
29 _description = "Invoice Rate"29 _description = "Invoice Rate"
30 _order = 'factor'30 _order = 'factor'
31 _columns = {31 _columns = {
32 'name': fields.char('Internal Name', size=128, required=True, translate=True),32 'name': fields.char('Internal Name', required=True, translate=True),
33 'customer_name': fields.char('Name', size=128, help="Label for the customer"),33 'customer_name': fields.char('Name', help="Label for the customer"),
34 'factor': fields.float('Discount (%)', required=True, help="Discount in percentage"),34 'factor': fields.float('Discount (%)', required=True, help="Discount in percentage"),
35 }35 }
36 _defaults = {36 _defaults = {
3737
=== modified file 'hr_timesheet_invoice/report/hr_timesheet_invoice_report.py'
--- hr_timesheet_invoice/report/hr_timesheet_invoice_report.py 2013-10-27 12:31:04 +0000
+++ hr_timesheet_invoice/report/hr_timesheet_invoice_report.py 2014-05-12 18:39:30 +0000
@@ -27,7 +27,7 @@
27 _description = "Timesheet Line"27 _description = "Timesheet Line"
28 _auto = False28 _auto = False
29 _columns = {29 _columns = {
30 'name': fields.char('Year',size=64,required=False, readonly=True),30 'name': fields.char('Year', required=False, readonly=True),
31 'user_id': fields.many2one('res.users', 'User', readonly=True),31 'user_id': fields.many2one('res.users', 'User', readonly=True),
32 'date': fields.date('Date', readonly=True),32 'date': fields.date('Date', readonly=True),
33 'day': fields.char('Day', size=128, readonly=True),33 'day': fields.char('Day', size=128, readonly=True),
@@ -38,7 +38,7 @@
38 'general_account_id': fields.many2one('account.account', 'General Account', readonly=True),38 'general_account_id': fields.many2one('account.account', 'General Account', readonly=True),
39 'invoice_id': fields.many2one('account.invoice', 'Invoiced', readonly=True),39 'invoice_id': fields.many2one('account.invoice', 'Invoiced', readonly=True),
40 'month': fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'), ('05','May'), ('06','June'),40 'month': fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'), ('05','May'), ('06','June'),
41 ('07','July'), ('08','August'), ('09','September'), ('10','October'), ('11','November'), ('12','December')],'Month',readonly=True),41 ('07','July'), ('08','August'), ('09','September'), ('10','October'), ('11','November'), ('12','December')],'Month', size=2, readonly=True),
42 }42 }
43 _order = 'name desc,user_id desc'43 _order = 'name desc,user_id desc'
44 def init(self, cr):44 def init(self, cr):
@@ -80,12 +80,12 @@
80 _description = "Timesheet per day"80 _description = "Timesheet per day"
81 _auto = False81 _auto = False
82 _columns = {82 _columns = {
83 'name': fields.char('Year',size=64,required=False, readonly=True),83 'name': fields.char('Year', required=False, readonly=True),
84 'user_id':fields.many2one('res.users', 'User', readonly=True),84 'user_id':fields.many2one('res.users', 'User', readonly=True),
85 'quantity': fields.float('Time', readonly=True),85 'quantity': fields.float('Time', readonly=True),
86 'cost': fields.float('Cost', readonly=True),86 'cost': fields.float('Cost', readonly=True),
87 'month':fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'), ('05','May'), ('06','June'),87 'month':fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'), ('05','May'), ('06','June'),
88 ('07','July'), ('08','August'), ('09','September'), ('10','October'), ('11','November'), ('12','December')],'Month',readonly=True),88 ('07','July'), ('08','August'), ('09','September'), ('10','October'), ('11','November'), ('12','December')],'Month', size=2, readonly=True),
89 }89 }
90 _order = 'name desc,user_id desc'90 _order = 'name desc,user_id desc'
91 def init(self, cr):91 def init(self, cr):
@@ -112,12 +112,12 @@
112 _description = "Timesheet per account"112 _description = "Timesheet per account"
113 _auto = False113 _auto = False
114 _columns = {114 _columns = {
115 'name': fields.char('Year',size=64,required=False, readonly=True),115 'name': fields.char('Year', required=False, readonly=True),
116 'user_id':fields.many2one('res.users', 'User', readonly=True),116 'user_id':fields.many2one('res.users', 'User', readonly=True),
117 'account_id':fields.many2one('account.analytic.account', 'Analytic Account', readonly=True),117 'account_id':fields.many2one('account.analytic.account', 'Analytic Account', readonly=True),
118 'quantity': fields.float('Time', readonly=True),118 'quantity': fields.float('Time', readonly=True),
119 'month':fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'), ('05','May'), ('06','June'),119 'month':fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'), ('05','May'), ('06','June'),
120 ('07','July'), ('08','August'), ('09','September'), ('10','October'), ('11','November'), ('12','December')],'Month',readonly=True),120 ('07','July'), ('08','August'), ('09','September'), ('10','October'), ('11','November'), ('12','December')],'Month', size=2, readonly=True),
121121
122 }122 }
123 _order = 'name desc,account_id desc,user_id desc'123 _order = 'name desc,account_id desc,user_id desc'
@@ -145,12 +145,12 @@
145 _description = "Daily timesheet per account"145 _description = "Daily timesheet per account"
146 _auto = False146 _auto = False
147 _columns = {147 _columns = {
148 'name': fields.char('Year',size=64,required=False, readonly=True),148 'name': fields.char('Year', required=False, readonly=True),
149 'user_id':fields.many2one('res.users', 'User', readonly=True),149 'user_id':fields.many2one('res.users', 'User', readonly=True),
150 'account_id':fields.many2one('account.analytic.account', 'Analytic Account', readonly=True),150 'account_id':fields.many2one('account.analytic.account', 'Analytic Account', readonly=True),
151 'quantity': fields.float('Time', readonly=True),151 'quantity': fields.float('Time', readonly=True),
152 'month':fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'), ('05','May'), ('06','June'),152 'month':fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'), ('05','May'), ('06','June'),
153 ('07','July'), ('08','August'), ('09','September'), ('10','October'), ('11','November'), ('12','December')],'Month',readonly=True),153 ('07','July'), ('08','August'), ('09','September'), ('10','October'), ('11','November'), ('12','December')],'Month', size=2, readonly=True),
154 }154 }
155 _order = 'name desc,account_id desc,user_id desc'155 _order = 'name desc,account_id desc,user_id desc'
156156
157157
=== modified file 'hr_timesheet_invoice/report/report_analytic.py'
--- hr_timesheet_invoice/report/report_analytic.py 2013-10-27 12:31:04 +0000
+++ hr_timesheet_invoice/report/report_analytic.py 2014-05-12 18:39:30 +0000
@@ -30,7 +30,7 @@
30 _auto = False30 _auto = False
31 _columns = {31 _columns = {
32 'name': fields.many2one('account.analytic.account', 'Analytic account', readonly=True),32 'name': fields.many2one('account.analytic.account', 'Analytic account', readonly=True),
33 'state': fields.char('Status', size=32, readonly=True),33 'state': fields.char('Status', readonly=True),
34 'partner_id': fields.many2one('res.partner', 'Partner', readonly=True),34 'partner_id': fields.many2one('res.partner', 'Partner', readonly=True),
35 'quantity': fields.float('Quantity', readonly=True),35 'quantity': fields.float('Quantity', readonly=True),
36 'quantity_max': fields.float('Max. Quantity', readonly=True),36 'quantity_max': fields.float('Max. Quantity', readonly=True),
@@ -66,7 +66,7 @@
66 _description = "Analytic lines to invoice report"66 _description = "Analytic lines to invoice report"
67 _auto = False67 _auto = False
68 _columns = {68 _columns = {
69 'name': fields.char('Year',size=64,required=False, readonly=True),69 'name': fields.char('Year', required=False, readonly=True),
70 'product_id':fields.many2one('product.product', 'Product', readonly=True),70 'product_id':fields.many2one('product.product', 'Product', readonly=True),
71 'account_id':fields.many2one('account.analytic.account', 'Analytic account', readonly=True),71 'account_id':fields.many2one('account.analytic.account', 'Analytic account', readonly=True),
72 'product_uom_id':fields.many2one('product.uom', 'Unit of Measure', readonly=True),72 'product_uom_id':fields.many2one('product.uom', 'Unit of Measure', readonly=True),
@@ -74,7 +74,7 @@
74 'sale_price': fields.float('Sale price', readonly=True, digits_compute=dp.get_precision('Product Price')),74 'sale_price': fields.float('Sale price', readonly=True, digits_compute=dp.get_precision('Product Price')),
75 'amount': fields.float('Amount', readonly=True, digits_compute=dp.get_precision('Account')),75 'amount': fields.float('Amount', readonly=True, digits_compute=dp.get_precision('Account')),
76 'month':fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'), ('05','May'), ('06','June'),76 'month':fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'), ('05','May'), ('06','June'),
77 ('07','July'), ('08','August'), ('09','September'), ('10','October'), ('11','November'), ('12','December')],'Month',readonly=True),77 ('07','July'), ('08','August'), ('09','September'), ('10','October'), ('11','November'), ('12','December')],'Month', size=2, readonly=True),
78 }78 }
79 _order = 'name desc, product_id asc, account_id asc'79 _order = 'name desc, product_id asc, account_id asc'
8080
8181
=== modified file 'hr_timesheet_sheet/hr_timesheet_sheet.py'
--- hr_timesheet_sheet/hr_timesheet_sheet.py 2014-05-07 17:01:12 +0000
+++ hr_timesheet_sheet/hr_timesheet_sheet.py 2014-05-12 18:39:30 +0000
@@ -147,7 +147,7 @@
147 }147 }
148148
149 _columns = {149 _columns = {
150 'name': fields.char('Note', size=64, select=1,150 'name': fields.char('Note', select=1,
151 states={'confirm':[('readonly', True)], 'done':[('readonly', True)]}),151 states={'confirm':[('readonly', True)], 'done':[('readonly', True)]}),
152 'employee_id': fields.many2one('hr.employee', 'Employee', required=True),152 'employee_id': fields.many2one('hr.employee', 'Employee', required=True),
153 'user_id': fields.related('employee_id', 'user_id', type="many2one", relation="res.users", store=True, string="User", required=False, readonly=True),#fields.many2one('res.users', 'User', required=True, select=1, states={'confirm':[('readonly', True)], 'done':[('readonly', True)]}),153 'user_id': fields.related('employee_id', 'user_id', type="many2one", relation="res.users", store=True, string="User", required=False, readonly=True),#fields.many2one('res.users', 'User', required=True, select=1, states={'confirm':[('readonly', True)], 'done':[('readonly', True)]}),
@@ -164,7 +164,7 @@
164 ('new', 'New'),164 ('new', 'New'),
165 ('draft','Open'),165 ('draft','Open'),
166 ('confirm','Waiting Approval'),166 ('confirm','Waiting Approval'),
167 ('done','Approved')], 'Status', select=True, required=True, readonly=True,167 ('done','Approved')], 'Status', size=7, select=True, required=True, readonly=True,
168 help=' * The \'Draft\' status is used when a user is encoding a new and unconfirmed timesheet. \168 help=' * The \'Draft\' status is used when a user is encoding a new and unconfirmed timesheet. \
169 \n* The \'Confirmed\' status is used for to confirm the timesheet by user. \169 \n* The \'Confirmed\' status is used for to confirm the timesheet by user. \
170 \n* The \'Done\' status is used when users timesheet is accepted by his/her senior.'),170 \n* The \'Done\' status is used when users timesheet is accepted by his/her senior.'),
@@ -628,7 +628,7 @@
628 _inherit = 'res.company'628 _inherit = 'res.company'
629 _columns = {629 _columns = {
630 'timesheet_range': fields.selection(630 'timesheet_range': fields.selection(
631 [('day','Day'),('week','Week'),('month','Month')], 'Timesheet range',631 [('day','Day'),('week','Week'),('month','Month')], 'Timesheet range', size=5,
632 help="Periodicity on which you validate your timesheets."),632 help="Periodicity on which you validate your timesheets."),
633 'timesheet_max_difference': fields.float('Timesheet allowed difference(Hours)',633 'timesheet_max_difference': fields.float('Timesheet allowed difference(Hours)',
634 help="Allowed difference in hours between the sign in/out and the timesheet " \634 help="Allowed difference in hours between the sign in/out and the timesheet " \
635635
=== modified file 'hr_timesheet_sheet/report/hr_timesheet_report.py'
--- hr_timesheet_sheet/report/hr_timesheet_report.py 2014-01-27 13:03:51 +0000
+++ hr_timesheet_sheet/report/hr_timesheet_report.py 2014-05-12 18:39:30 +0000
@@ -30,7 +30,7 @@
30 _auto = False30 _auto = False
31 _columns = {31 _columns = {
32 'date': fields.date('Date', readonly=True),32 'date': fields.date('Date', readonly=True),
33 'name': fields.char('Description', size=64,readonly=True),33 'name': fields.char('Description',readonly=True),
34 'product_id' : fields.many2one('product.product', 'Product',readonly=True),34 'product_id' : fields.many2one('product.product', 'Product',readonly=True),
35 'journal_id' : fields.many2one('account.analytic.journal', 'Journal',readonly=True),35 'journal_id' : fields.many2one('account.analytic.journal', 'Journal',readonly=True),
36 'general_account_id' : fields.many2one('account.account', 'General Account', readonly=True),36 'general_account_id' : fields.many2one('account.account', 'General Account', readonly=True),
3737
=== modified file 'hr_timesheet_sheet/report/timesheet_report.py'
--- hr_timesheet_sheet/report/timesheet_report.py 2013-11-27 15:32:57 +0000
+++ hr_timesheet_sheet/report/timesheet_report.py 2014-05-12 18:39:30 +0000
@@ -27,13 +27,13 @@
27 _description = "Timesheet"27 _description = "Timesheet"
28 _auto = False28 _auto = False
29 _columns = {29 _columns = {
30 'year': fields.char('Year',size=64,required=False, readonly=True),30 'year': fields.char('Year', size=4, required=False, readonly=True),
31 'month':fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'),31 'month':fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'),
32 ('05','May'), ('06','June'), ('07','July'), ('08','August'), ('09','September'),32 ('05','May'), ('06','June'), ('07','July'), ('08','August'), ('09','September'),
33 ('10','October'), ('11','November'), ('12','December')], 'Month',readonly=True),33 ('10','October'), ('11','November'), ('12','December')], 'Month', size=2, readonly=True),
34 'day': fields.char('Day', size=128, readonly=True),34 'day': fields.char('Day', size=128, readonly=True),
35 'date': fields.date('Date', readonly=True),35 'date': fields.date('Date', readonly=True),
36 'name': fields.char('Description', size=64,readonly=True),36 'name': fields.char('Description', readonly=True),
37 'product_id' : fields.many2one('product.product', 'Product'),37 'product_id' : fields.many2one('product.product', 'Product'),
38 'general_account_id' : fields.many2one('account.account', 'General Account', readonly=True),38 'general_account_id' : fields.many2one('account.account', 'General Account', readonly=True),
39 'user_id': fields.many2one('res.users', 'User',readonly=True),39 'user_id': fields.many2one('res.users', 'User',readonly=True),
@@ -52,7 +52,7 @@
52 ('new', 'New'),52 ('new', 'New'),
53 ('draft','Draft'),53 ('draft','Draft'),
54 ('confirm','Confirmed'),54 ('confirm','Confirmed'),
55 ('done','Done')], 'Status', readonly=True),55 ('done','Done')], 'Status', size=7, readonly=True),
56 'quantity': fields.float('Time',readonly=True),56 'quantity': fields.float('Time',readonly=True),
57 'cost': fields.float('#Cost',readonly=True),57 'cost': fields.float('#Cost',readonly=True),
58 }58 }
5959
=== modified file 'hr_timesheet_sheet/res_config.py'
--- hr_timesheet_sheet/res_config.py 2013-10-27 12:31:04 +0000
+++ hr_timesheet_sheet/res_config.py 2014-05-12 18:39:30 +0000
@@ -26,7 +26,7 @@
2626
27 _columns = {27 _columns = {
28 'timesheet_range': fields.selection([('day','Day'),('week','Week'),('month','Month')],28 'timesheet_range': fields.selection([('day','Day'),('week','Week'),('month','Month')],
29 'Validate timesheets every', help="Periodicity on which you validate your timesheets."),29 'Validate timesheets every', size=5, help="Periodicity on which you validate your timesheets."),
30 'timesheet_max_difference': fields.float('Allow a difference of time between timesheets and attendances of (in hours)',30 'timesheet_max_difference': fields.float('Allow a difference of time between timesheets and attendances of (in hours)',
31 help='Allowed difference in hours between the sign in/out and the timesheet '31 help='Allowed difference in hours between the sign in/out and the timesheet '
32 'computation for one sheet. Set this to 0 if you do not want any control.'),32 'computation for one sheet. Set this to 0 if you do not want any control.'),
3333
=== modified file 'im_livechat/im_livechat.py'
--- im_livechat/im_livechat.py 2014-01-29 19:08:34 +0000
+++ im_livechat/im_livechat.py 2014-05-12 18:39:30 +0000
@@ -120,14 +120,14 @@
120 return res120 return res
121121
122 _columns = {122 _columns = {
123 'name': fields.char(string="Channel Name", size=200, required=True),123 'name': fields.char(string="Channel Name", required=True),
124 'user_ids': fields.many2many('res.users', 'im_livechat_channel_im_user', 'channel_id', 'user_id', string="Users"),124 'user_ids': fields.many2many('res.users', 'im_livechat_channel_im_user', 'channel_id', 'user_id', string="Users"),
125 'are_you_inside': fields.function(_are_you_inside, type='boolean', string='Are you inside the matrix?', store=False),125 'are_you_inside': fields.function(_are_you_inside, type='boolean', string='Are you inside the matrix?', store=False),
126 'script': fields.function(_script, type='text', string='Script', store=False),126 'script': fields.function(_script, type='text', string='Script', store=False),
127 'web_page': fields.function(_web_page, type='url', string='Web Page', store=False, size="200"),127 'web_page': fields.function(_web_page, type='url', string='Web Page', store=False, size="200"),
128 'button_text': fields.char(string="Text of the Button", size=200),128 'button_text': fields.char(string="Text of the Button"),
129 'input_placeholder': fields.char(string="Chat Input Placeholder", size=200),129 'input_placeholder': fields.char(string="Chat Input Placeholder"),
130 'default_message': fields.char(string="Welcome Message", size=200, help="This is an automated 'welcome' message that your visitor will see when they initiate a new chat session."),130 'default_message': fields.char(string="Welcome Message", help="This is an automated 'welcome' message that your visitor will see when they initiate a new chat session."),
131 # image: all image fields are base64 encoded and PIL-supported131 # image: all image fields are base64 encoded and PIL-supported
132 'image': fields.binary("Photo",132 'image': fields.binary("Photo",
133 help="This field holds the image used as photo for the group, limited to 1024x1024px."),133 help="This field holds the image used as photo for the group, limited to 1024x1024px."),
134134
=== modified file 'l10n_be/wizard/l10n_be_account_vat_declaration.py'
--- l10n_be/wizard/l10n_be_account_vat_declaration.py 2013-11-27 15:32:57 +0000
+++ l10n_be/wizard/l10n_be_account_vat_declaration.py 2014-05-12 18:39:30 +0000
@@ -40,10 +40,10 @@
40 return ''40 return ''
4141
42 _columns = {42 _columns = {
43 'name': fields.char('File Name', size=32),43 'name': fields.char('File Name'),
44 'period_id': fields.many2one('account.period','Period', required=True),44 'period_id': fields.many2one('account.period','Period', required=True),
45 'tax_code_id': fields.many2one('account.tax.code', 'Tax Code', domain=[('parent_id', '=', False)], required=True),45 'tax_code_id': fields.many2one('account.tax.code', 'Tax Code', domain=[('parent_id', '=', False)], required=True),
46 'msg': fields.text('File created', size=64, readonly=True),46 'msg': fields.text('File created', readonly=True),
47 'file_save': fields.binary('Save File'),47 'file_save': fields.binary('Save File'),
48 'ask_restitution': fields.boolean('Ask Restitution',help='It indicates whether a restitution is to make or not?'),48 'ask_restitution': fields.boolean('Ask Restitution',help='It indicates whether a restitution is to make or not?'),
49 'ask_payment': fields.boolean('Ask Payment',help='It indicates whether a payment is to make or not?'),49 'ask_payment': fields.boolean('Ask Payment',help='It indicates whether a payment is to make or not?'),
5050
=== modified file 'l10n_be/wizard/l10n_be_partner_vat_listing.py'
--- l10n_be/wizard/l10n_be_partner_vat_listing.py 2014-04-22 12:11:05 +0000
+++ l10n_be/wizard/l10n_be_partner_vat_listing.py 2014-05-12 18:39:30 +0000
@@ -33,8 +33,8 @@
33class vat_listing_clients(osv.osv_memory):33class vat_listing_clients(osv.osv_memory):
34 _name = 'vat.listing.clients'34 _name = 'vat.listing.clients'
35 _columns = {35 _columns = {
36 'name': fields.char('Client Name', size=32),36 'name': fields.char('Client Name'),
37 'vat': fields.char('VAT', size=64),37 'vat': fields.char('VAT'),
38 'turnover': fields.float('Base Amount'),38 'turnover': fields.float('Base Amount'),
39 'vat_amount': fields.float('VAT Amount'),39 'vat_amount': fields.float('VAT Amount'),
40 }40 }
@@ -121,7 +121,7 @@
121 _name = "partner.vat.list"121 _name = "partner.vat.list"
122 _columns = {122 _columns = {
123 'partner_ids': fields.many2many('vat.listing.clients', 'vat_partner_rel', 'vat_id', 'partner_id', 'Clients', help='You can remove clients/partners which you do not want to show in xml file'),123 'partner_ids': fields.many2many('vat.listing.clients', 'vat_partner_rel', 'vat_id', 'partner_id', 'Clients', help='You can remove clients/partners which you do not want to show in xml file'),
124 'name': fields.char('File Name', size=32),124 'name': fields.char('File Name'),
125 'file_save' : fields.binary('Save File', readonly=True),125 'file_save' : fields.binary('Save File', readonly=True),
126 'comments': fields.text('Comments'),126 'comments': fields.text('Comments'),
127 }127 }
128128
=== modified file 'l10n_be/wizard/l10n_be_vat_intra.py'
--- l10n_be/wizard/l10n_be_vat_intra.py 2014-04-22 12:11:05 +0000
+++ l10n_be/wizard/l10n_be_vat_intra.py 2014-05-12 18:39:30 +0000
@@ -46,8 +46,8 @@
46 return self.pool.get('res.country').search(cursor, user, [('code', 'in', ['AT', 'BG', 'CY', 'CZ', 'DK', 'EE', 'FI', 'FR', 'DE', 'GR', 'HU', 'IE', 'IT', 'LV', 'LT', 'LU', 'MT', 'NL', 'PL', 'PT', 'RO', 'SK', 'SI', 'ES', 'SE', 'GB'])])46 return self.pool.get('res.country').search(cursor, user, [('code', 'in', ['AT', 'BG', 'CY', 'CZ', 'DK', 'EE', 'FI', 'FR', 'DE', 'GR', 'HU', 'IE', 'IT', 'LV', 'LT', 'LU', 'MT', 'NL', 'PL', 'PT', 'RO', 'SK', 'SI', 'ES', 'SE', 'GB'])])
4747
48 _columns = {48 _columns = {
49 'name': fields.char('File Name', size=32),49 'name': fields.char('File Name'),
50 'period_code': fields.char('Period Code',size = 6,required = True, help = '''This is where you have to set the period code for the intracom declaration using the format: ppyyyy50 'period_code': fields.char('Period Code', size=6, required = True, help = '''This is where you have to set the period code for the intracom declaration using the format: ppyyyy
51 PP can stand for a month: from '01' to '12'.51 PP can stand for a month: from '01' to '12'.
52 PP can stand for a trimester: '31','32','33','34'52 PP can stand for a trimester: '31','32','33','34'
53 The first figure means that it is a trimester,53 The first figure means that it is a trimester,
@@ -59,9 +59,9 @@
59 'period_ids': fields.many2many('account.period', 'account_period_rel', 'acc_id', 'period_id', 'Period (s)', help = 'Select here the period(s) you want to include in your intracom declaration'),59 'period_ids': fields.many2many('account.period', 'account_period_rel', 'acc_id', 'period_id', 'Period (s)', help = 'Select here the period(s) you want to include in your intracom declaration'),
60 'tax_code_id': fields.many2one('account.tax.code', 'Company', domain=[('parent_id', '=', False)], help="Keep empty to use the user's company", required=True),60 'tax_code_id': fields.many2one('account.tax.code', 'Company', domain=[('parent_id', '=', False)], help="Keep empty to use the user's company", required=True),
61 'test_xml': fields.boolean('Test XML file', help="Sets the XML output as test file"),61 'test_xml': fields.boolean('Test XML file', help="Sets the XML output as test file"),
62 'mand_id' : fields.char('Reference', size=14, help="Reference given by the Representative of the sending company."),62 'mand_id' : fields.char('Reference', help="Reference given by the Representative of the sending company."),
63 'msg': fields.text('File created', size=14, readonly=True),63 'msg': fields.text('File created', readonly=True),
64 'no_vat': fields.text('Partner With No VAT', size=14, readonly=True, help="The Partner whose VAT number is not defined and they are not included in XML File."),64 'no_vat': fields.text('Partner With No VAT', readonly=True, help="The Partner whose VAT number is not defined and they are not included in XML File."),
65 'file_save' : fields.binary('Save File', readonly=True),65 'file_save' : fields.binary('Save File', readonly=True),
66 'country_ids': fields.many2many('res.country', 'vat_country_rel', 'vat_id', 'country_id', 'European Countries'),66 'country_ids': fields.many2many('res.country', 'vat_country_rel', 'vat_id', 'country_id', 'European Countries'),
67 'comments': fields.text('Comments'),67 'comments': fields.text('Comments'),
6868
=== modified file 'l10n_be_coda/wizard/account_coda_import.py'
--- l10n_be_coda/wizard/account_coda_import.py 2013-10-27 12:31:04 +0000
+++ l10n_be_coda/wizard/account_coda_import.py 2014-05-12 18:39:30 +0000
@@ -35,7 +35,7 @@
35 _description = 'Import CODA File'35 _description = 'Import CODA File'
36 _columns = {36 _columns = {
37 'coda_data': fields.binary('CODA File', required=True),37 'coda_data': fields.binary('CODA File', required=True),
38 'coda_fname': fields.char('CODA Filename', size=128, required=True),38 'coda_fname': fields.char('CODA Filename', required=True),
39 'note': fields.text('Log'),39 'note': fields.text('Log'),
40 'temporary_account_id': fields.many2one('account.account', 'Temporary Account', domain="[('type','!=','view')]", help="It acts as a temporary account for general amount", required=True),40 'temporary_account_id': fields.many2one('account.account', 'Temporary Account', domain="[('type','!=','view')]", help="It acts as a temporary account for general amount", required=True),
41 }41 }
4242
=== modified file 'l10n_be_hr_payroll/l10n_be_hr_payroll.py'
--- l10n_be_hr_payroll/l10n_be_hr_payroll.py 2013-10-27 12:31:04 +0000
+++ l10n_be_hr_payroll/l10n_be_hr_payroll.py 2014-05-12 18:39:30 +0000
@@ -44,7 +44,7 @@
44 _inherit = 'hr.employee'44 _inherit = 'hr.employee'
4545
46 _columns = {46 _columns = {
47 'spouse_fiscal_status': fields.selection([('without income','Without Income'),('with income','With Income')], 'Tax status for spouse'),47 'spouse_fiscal_status': fields.selection([('without income','Without Income'),('with income','With Income')], 'Tax status for spouse', size=14),
48 'disabled_spouse_bool': fields.boolean('Disabled Spouse', help="if recipient spouse is declared disabled by law"),48 'disabled_spouse_bool': fields.boolean('Disabled Spouse', help="if recipient spouse is declared disabled by law"),
49 'disabled_children_bool': fields.boolean('Disabled Children', help="if recipient children is/are declared disabled by law"),49 'disabled_children_bool': fields.boolean('Disabled Children', help="if recipient children is/are declared disabled by law"),
50 'resident_bool': fields.boolean('Nonresident', help="if recipient lives in a foreign country"),50 'resident_bool': fields.boolean('Nonresident', help="if recipient lives in a foreign country"),
5151
=== modified file 'l10n_be_invoice_bba/invoice.py'
--- l10n_be_invoice_bba/invoice.py 2013-10-27 12:31:04 +0000
+++ l10n_be_invoice_bba/invoice.py 2014-05-12 18:39:30 +0000
@@ -221,8 +221,8 @@
221 return super(account_invoice, self).copy(cr, uid, id, default, context=context)221 return super(account_invoice, self).copy(cr, uid, id, default, context=context)
222222
223 _columns = {223 _columns = {
224 'reference': fields.char('Communication', size=64, help="The partner reference of this invoice."),224 'reference': fields.char('Communication', help="The partner reference of this invoice."),
225 'reference_type': fields.selection(_get_reference_type, 'Communication Type',225 'reference_type': fields.selection(_get_reference_type, 'Communication Type', size=4,
226 required=True),226 required=True),
227 }227 }
228 _constraints = [228 _constraints = [
229229
=== modified file 'l10n_be_invoice_bba/partner.py'
--- l10n_be_invoice_bba/partner.py 2013-10-27 12:31:04 +0000
+++ l10n_be_invoice_bba/partner.py 2014-05-12 18:39:30 +0000
@@ -34,13 +34,13 @@
34 return res34 return res
35 35
36 _columns = {36 _columns = {
37 'out_inv_comm_type': fields.selection(_get_comm_type, 'Communication Type', change_default=True,37 'out_inv_comm_type': fields.selection(_get_comm_type, 'Communication Type', size=4, change_default=True,
38 help='Select Default Communication Type for Outgoing Invoices.' ),38 help='Select Default Communication Type for Outgoing Invoices.' ),
39 'out_inv_comm_algorithm': fields.selection([39 'out_inv_comm_algorithm': fields.selection([
40 ('random','Random'),40 ('random','Random'),
41 ('date','Date'),41 ('date','Date'),
42 ('partner_ref','Customer Reference'),42 ('partner_ref','Customer Reference'),
43 ], 'Communication Algorithm',43 ], 'Communication Algorithm', size=11,
44 help='Select Algorithm to generate the Structured Communication on Outgoing Invoices.' ),44 help='Select Algorithm to generate the Structured Communication on Outgoing Invoices.' ),
45 }45 }
4646
4747
=== modified file 'l10n_br/account.py'
--- l10n_br/account.py 2013-10-27 12:31:04 +0000
+++ l10n_br/account.py 2014-05-12 18:39:30 +0000
@@ -21,7 +21,7 @@
21from openerp.osv import fields, osv21from openerp.osv import fields, osv
2222
23TAX_CODE_COLUMNS = {23TAX_CODE_COLUMNS = {
24 'domain':fields.char('Domain', size=32, 24 'domain':fields.char('Domain',
25 help="This field is only used if you develop your own module allowing developers to create specific taxes in a custom domain."),25 help="This field is only used if you develop your own module allowing developers to create specific taxes in a custom domain."),
26 'tax_discount': fields.boolean('Discount this Tax in Prince', 26 'tax_discount': fields.boolean('Discount this Tax in Prince',
27 help="Mark it for (ICMS, PIS, COFINS and others taxes included)."),27 help="Mark it for (ICMS, PIS, COFINS and others taxes included)."),
@@ -115,7 +115,7 @@
115 ('none','None'), 115 ('none','None'),
116 ('code','Python Code'), 116 ('code','Python Code'),
117 ('balance','Balance'), 117 ('balance','Balance'),
118 ('quantity','Quantity')], 'Tax Type', required=True,118 ('quantity','Quantity')], 'Tax Type', size=8, required=True,
119 help="The computation method for the tax amount."),119 help="The computation method for the tax amount."),
120 }120 }
121 _defaults = TAX_DEFAULTS121 _defaults = TAX_DEFAULTS
122122
=== modified file 'l10n_fr/l10n_fr.py'
--- l10n_fr/l10n_fr.py 2013-10-27 12:31:04 +0000
+++ l10n_fr/l10n_fr.py 2014-05-12 18:39:30 +0000
@@ -26,7 +26,7 @@
26 _description = 'Report for l10n_fr'26 _description = 'Report for l10n_fr'
27 _columns = {27 _columns = {
28 'code': fields.char('Code', size=64),28 'code': fields.char('Code', size=64),
29 'name': fields.char('Name', size=128),29 'name': fields.char('Name'),
30 'line_ids': fields.one2many('l10n.fr.line', 'report_id', 'Lines'),30 'line_ids': fields.one2many('l10n.fr.line', 'report_id', 'Lines'),
31 }31 }
32 _sql_constraints = [32 _sql_constraints = [
@@ -39,8 +39,8 @@
39 _description = 'Report Lines for l10n_fr'39 _description = 'Report Lines for l10n_fr'
40 _columns = {40 _columns = {
41 'code': fields.char('Variable Name', size=64),41 'code': fields.char('Variable Name', size=64),
42 'definition': fields.char('Definition', size=512),42 'definition': fields.char('Definition'),
43 'name': fields.char('Name', size=256),43 'name': fields.char('Name'),
44 'report_id': fields.many2one('l10n.fr.report', 'Report'),44 'report_id': fields.many2one('l10n.fr.report', 'Report'),
45 }45 }
46 _sql_constraints = [46 _sql_constraints = [
@@ -52,8 +52,8 @@
52 _inherit = 'res.company'52 _inherit = 'res.company'
5353
54 _columns = {54 _columns = {
55 'siret': fields.char('SIRET', size=64),55 'siret': fields.char('SIRET'),
56 'ape': fields.char('APE', size=64),56 'ape': fields.char('APE'),
57 }57 }
5858
5959
6060
=== modified file 'l10n_fr_hr_payroll/l10n_fr_hr_payroll.py'
--- l10n_fr_hr_payroll/l10n_fr_hr_payroll.py 2013-10-27 12:31:04 +0000
+++ l10n_fr_hr_payroll/l10n_fr_hr_payroll.py 2014-05-12 18:39:30 +0000
@@ -30,8 +30,8 @@
30 'plafond_secu': fields.float('Plafond de la Securite Sociale', digits_compute=dp.get_precision('Payroll')),30 'plafond_secu': fields.float('Plafond de la Securite Sociale', digits_compute=dp.get_precision('Payroll')),
31 'nombre_employes': fields.integer('Nombre d\'employes'),31 'nombre_employes': fields.integer('Nombre d\'employes'),
32 'cotisation_prevoyance': fields.float('Cotisation Patronale Prevoyance', digits_compute=dp.get_precision('Payroll')),32 'cotisation_prevoyance': fields.float('Cotisation Patronale Prevoyance', digits_compute=dp.get_precision('Payroll')),
33 'org_ss': fields.char('Organisme de securite sociale', size=64),33 'org_ss': fields.char('Organisme de securite sociale'),
34 'conv_coll': fields.char('Convention collective', size=64),34 'conv_coll': fields.char('Convention collective'),
35 }35 }
3636
3737
@@ -39,16 +39,16 @@
39 _inherit = 'hr.contract'39 _inherit = 'hr.contract'
4040
41 _columns = {41 _columns = {
42 'qualif': fields.char('Qualification', size=64),42 'qualif': fields.char('Qualification'),
43 'niveau': fields.char('Niveau', size=64),43 'niveau': fields.char('Niveau'),
44 'coef': fields.char('Coefficient', size=64),44 'coef': fields.char('Coefficient'),
45 }45 }
4646
47class hr_payslip(osv.osv):47class hr_payslip(osv.osv):
48 _inherit = 'hr.payslip'48 _inherit = 'hr.payslip'
4949
50 _columns = {50 _columns = {
51 'payment_mode': fields.char('Mode de paiement', size=64),51 'payment_mode': fields.char('Mode de paiement'),
52 }52 }
5353
54# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:54# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
5555
=== modified file 'l10n_fr_rib/bank.py'
--- l10n_fr_rib/bank.py 2013-10-27 12:31:04 +0000
+++ l10n_fr_rib/bank.py 2014-05-12 18:39:30 +0000
@@ -99,7 +99,7 @@
99 return results99 return results
100 100
101 _columns = {101 _columns = {
102 'rib_code': fields.char('RIB Bank Code', size=64),102 'rib_code': fields.char('RIB Bank Code'),
103 }103 }
104# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:104# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
105105
106106
=== modified file 'l10n_in_hr_payroll/l10n_in_hr_payroll.py'
--- l10n_in_hr_payroll/l10n_in_hr_payroll.py 2013-10-27 12:31:04 +0000
+++ l10n_in_hr_payroll/l10n_in_hr_payroll.py 2014-05-12 18:39:30 +0000
@@ -56,17 +56,17 @@
56 _name = 'hr.payroll.advice'56 _name = 'hr.payroll.advice'
57 _description = 'Bank Advice'57 _description = 'Bank Advice'
58 _columns = {58 _columns = {
59 'name':fields.char('Name', size=32, readonly=True, required=True, states={'draft': [('readonly', False)]},),59 'name':fields.char('Name', readonly=True, required=True, states={'draft': [('readonly', False)]},),
60 'note': fields.text('Description'),60 'note': fields.text('Description'),
61 'date': fields.date('Date', readonly=True, required=True, states={'draft': [('readonly', False)]}, help="Advice Date is used to search Payslips"),61 'date': fields.date('Date', readonly=True, required=True, states={'draft': [('readonly', False)]}, help="Advice Date is used to search Payslips"),
62 'state':fields.selection([62 'state':fields.selection([
63 ('draft', 'Draft'),63 ('draft', 'Draft'),
64 ('confirm', 'Confirmed'),64 ('confirm', 'Confirmed'),
65 ('cancel', 'Cancelled'),65 ('cancel', 'Cancelled'),
66 ], 'Status', select=True, readonly=True),66 ], 'Status', size=7, select=True, readonly=True),
67 'number':fields.char('Reference', size=16, readonly=True),67 'number':fields.char('Reference', readonly=True),
68 'line_ids':fields.one2many('hr.payroll.advice.line', 'advice_id', 'Employee Salary', states={'draft': [('readonly', False)]}, readonly=True),68 'line_ids':fields.one2many('hr.payroll.advice.line', 'advice_id', 'Employee Salary', states={'draft': [('readonly', False)]}, readonly=True),
69 'chaque_nos':fields.char('Cheque Numbers', size=256),69 'chaque_nos':fields.char('Cheque Numbers'),
70 'neft': fields.boolean('NEFT Transaction', help="Check this box if your company use online transfer for salary"),70 'neft': fields.boolean('NEFT Transaction', help="Check this box if your company use online transfer for salary"),
71 'company_id':fields.many2one('res.company', 'Company', required=True, readonly=True, states={'draft': [('readonly', False)]}),71 'company_id':fields.many2one('res.company', 'Company', required=True, readonly=True, states={'draft': [('readonly', False)]}),
72 'bank_id':fields.many2one('res.bank', 'Bank', readonly=True, states={'draft': [('readonly', False)]}, help="Select the Bank from which the salary is going to be paid"),72 'bank_id':fields.many2one('res.bank', 'Bank', readonly=True, states={'draft': [('readonly', False)]}, help="Select the Bank from which the salary is going to be paid"),
7373
=== modified file 'l10n_in_hr_payroll/report/payment_advice_report.py'
--- l10n_in_hr_payroll/report/payment_advice_report.py 2013-10-27 12:31:04 +0000
+++ l10n_in_hr_payroll/report/payment_advice_report.py 2014-05-12 18:39:30 +0000
@@ -27,28 +27,28 @@
27 _description = "Payment Advice Analysis"27 _description = "Payment Advice Analysis"
28 _auto = False28 _auto = False
29 _columns = {29 _columns = {
30 'name':fields.char('Name', size=32, readonly=True),30 'name':fields.char('Name', readonly=True),
31 'date': fields.date('Date', readonly=True,),31 'date': fields.date('Date', readonly=True,),
32 'year': fields.char('Year', size=4, readonly=True),32 'year': fields.char('Year', size=4, readonly=True),
33 'month': fields.selection([('01', 'January'), ('02', 'February'), ('03', 'March'), ('04', 'April'),33 'month': fields.selection([('01', 'January'), ('02', 'February'), ('03', 'March'), ('04', 'April'),
34 ('05', 'May'), ('06', 'June'), ('07', 'July'), ('08', 'August'), ('09', 'September'),34 ('05', 'May'), ('06', 'June'), ('07', 'July'), ('08', 'August'), ('09', 'September'),
35 ('10', 'October'), ('11', 'November'), ('12', 'December')], 'Month', readonly=True),35 ('10', 'October'), ('11', 'November'), ('12', 'December')], 'Month', size=2, readonly=True),
36 'day': fields.char('Day', size=128, readonly=True),36 'day': fields.char('Day', size=128, readonly=True),
37 'state':fields.selection([37 'state':fields.selection([
38 ('draft', 'Draft'),38 ('draft', 'Draft'),
39 ('confirm', 'Confirmed'),39 ('confirm', 'Confirmed'),
40 ('cancel', 'Cancelled'),40 ('cancel', 'Cancelled'),
41 ], 'Status', select=True, readonly=True),41 ], 'Status', size=7, select=True, readonly=True),
42 'employee_id': fields.many2one('hr.employee', 'Employee', readonly=True),42 'employee_id': fields.many2one('hr.employee', 'Employee', readonly=True),
43 'nbr': fields.integer('# Payment Lines', readonly=True),43 'nbr': fields.integer('# Payment Lines', readonly=True),
44 'number':fields.char('Number', size=16, readonly=True),44 'number':fields.char('Number', readonly=True),
45 'bysal': fields.float('By Salary', readonly=True),45 'bysal': fields.float('By Salary', readonly=True),
46 'bank_id':fields.many2one('res.bank', 'Bank', readonly=True),46 'bank_id':fields.many2one('res.bank', 'Bank', readonly=True),
47 'company_id':fields.many2one('res.company', 'Company', readonly=True),47 'company_id':fields.many2one('res.company', 'Company', readonly=True),
48 'cheque_nos':fields.char('Cheque Numbers', size=256, readonly=True),48 'cheque_nos':fields.char('Cheque Numbers', readonly=True),
49 'neft': fields.boolean('NEFT Transaction', readonly=True),49 'neft': fields.boolean('NEFT Transaction', readonly=True),
50 'ifsc_code': fields.char('IFSC Code', size=32, readonly=True),50 'ifsc_code': fields.char('IFSC Code', size=32, readonly=True),
51 'employee_bank_no': fields.char('Employee Bank Account', size=32, required=True),51 'employee_bank_no': fields.char('Employee Bank Account', required=True),
52 }52 }
53 def init(self, cr):53 def init(self, cr):
54 tools.drop_view_if_exists(cr, 'payment_advice_report')54 tools.drop_view_if_exists(cr, 'payment_advice_report')
5555
=== modified file 'l10n_in_hr_payroll/report/payslip_report.py'
--- l10n_in_hr_payroll/report/payslip_report.py 2013-10-27 12:31:04 +0000
+++ l10n_in_hr_payroll/report/payslip_report.py 2014-05-12 18:39:30 +0000
@@ -27,22 +27,22 @@
27 _description = "Payslip Analysis"27 _description = "Payslip Analysis"
28 _auto = False28 _auto = False
29 _columns = {29 _columns = {
30 'name':fields.char('Name', size=32, readonly=True),30 'name':fields.char('Name', readonly=True),
31 'date_from': fields.date('Date From', readonly=True,),31 'date_from': fields.date('Date From', readonly=True,),
32 'date_to': fields.date('Date To', readonly=True,),32 'date_to': fields.date('Date To', readonly=True,),
33 'year': fields.char('Year', size=4, readonly=True),33 'year': fields.char('Year', size=4, readonly=True),
34 'month': fields.selection([('01', 'January'), ('02', 'February'), ('03', 'March'), ('04', 'April'),34 'month': fields.selection([('01', 'January'), ('02', 'February'), ('03', 'March'), ('04', 'April'),
35 ('05', 'May'), ('06', 'June'), ('07', 'July'), ('08', 'August'), ('09', 'September'),35 ('05', 'May'), ('06', 'June'), ('07', 'July'), ('08', 'August'), ('09', 'September'),
36 ('10', 'October'), ('11', 'November'), ('12', 'December')], 'Month', readonly=True),36 ('10', 'October'), ('11', 'November'), ('12', 'December')], 'Month', size=2, readonly=True),
37 'day': fields.char('Day', size=128, readonly=True),37 'day': fields.char('Day', size=128, readonly=True),
38 'state': fields.selection([38 'state': fields.selection([
39 ('draft', 'Draft'),39 ('draft', 'Draft'),
40 ('done', 'Done'),40 ('done', 'Done'),
41 ('cancel', 'Rejected'),41 ('cancel', 'Rejected'),
42 ], 'Status', readonly=True),42 ], 'Status', size=6, readonly=True),
43 'employee_id': fields.many2one('hr.employee', 'Employee', readonly=True),43 'employee_id': fields.many2one('hr.employee', 'Employee', readonly=True),
44 'nbr': fields.integer('# Payslip lines', readonly=True),44 'nbr': fields.integer('# Payslip lines', readonly=True),
45 'number': fields.char('Number', size=16, readonly=True),45 'number': fields.char('Number', readonly=True),
46 'struct_id': fields.many2one('hr.payroll.structure', 'Structure', readonly=True),46 'struct_id': fields.many2one('hr.payroll.structure', 'Structure', readonly=True),
47 'company_id':fields.many2one('res.company', 'Company', readonly=True),47 'company_id':fields.many2one('res.company', 'Company', readonly=True),
48 'paid': fields.boolean('Made Payment Order ? ', readonly=True),48 'paid': fields.boolean('Made Payment Order ? ', readonly=True),
4949
=== modified file 'l10n_ma/l10n_ma.py'
--- l10n_ma/l10n_ma.py 2013-10-27 12:31:04 +0000
+++ l10n_ma/l10n_ma.py 2014-05-12 18:39:30 +0000
@@ -27,7 +27,7 @@
27 _description = 'Report for l10n_ma_kzc'27 _description = 'Report for l10n_ma_kzc'
28 _columns = {28 _columns = {
29 'code': fields.char('Code', size=64),29 'code': fields.char('Code', size=64),
30 'name': fields.char('Name', size=128),30 'name': fields.char('Name'),
31 'line_ids': fields.one2many('l10n.ma.line', 'report_id', 'Lines'),31 'line_ids': fields.one2many('l10n.ma.line', 'report_id', 'Lines'),
32 }32 }
33 _sql_constraints = [33 _sql_constraints = [
@@ -39,8 +39,8 @@
39 _description = 'Report Lines for l10n_ma'39 _description = 'Report Lines for l10n_ma'
40 _columns = {40 _columns = {
41 'code': fields.char('Variable Name', size=64),41 'code': fields.char('Variable Name', size=64),
42 'definition': fields.char('Definition', size=512),42 'definition': fields.char('Definition'),
43 'name': fields.char('Name', size=256),43 'name': fields.char('Name'),
44 'report_id': fields.many2one('l10n.ma.report', 'Report'),44 'report_id': fields.many2one('l10n.ma.report', 'Report'),
45 }45 }
46 _sql_constraints = [46 _sql_constraints = [
4747
=== modified file 'l10n_multilang/account.py'
--- l10n_multilang/account.py 2013-10-27 12:31:04 +0000
+++ l10n_multilang/account.py 2014-05-12 18:39:30 +0000
@@ -29,41 +29,41 @@
29class account_account_template(osv.osv):29class account_account_template(osv.osv):
30 _inherit = 'account.account.template'30 _inherit = 'account.account.template'
31 _columns = {31 _columns = {
32 'name': fields.char('Name', size=128, required=True, select=True, translate=True),32 'name': fields.char('Name', required=True, select=True, translate=True),
33 }33 }
3434
35class account_account(osv.osv):35class account_account(osv.osv):
36 _inherit = 'account.account'36 _inherit = 'account.account'
37 _columns = {37 _columns = {
38 'name': fields.char('Name', size=128, required=True, select=True, translate=True),38 'name': fields.char('Name', required=True, select=True, translate=True),
39 }39 }
4040
41class account_tax(osv.osv):41class account_tax(osv.osv):
42 _inherit = 'account.tax'42 _inherit = 'account.tax'
43 _columns = {43 _columns = {
44 'name': fields.char('Tax Name', size=128, required=True, select=True, translate=True),44 'name': fields.char('Tax Name', required=True, select=True, translate=True),
45 }45 }
4646
4747
48class account_tax_template(osv.osv):48class account_tax_template(osv.osv):
49 _inherit = 'account.tax.template'49 _inherit = 'account.tax.template'
50 _columns = {50 _columns = {
51 'name': fields.char('Tax Name', size=128, required=True, select=True, translate=True),51 'name': fields.char('Tax Name', required=True, select=True, translate=True),
52 }52 }
5353
5454
55class account_tax_code_template(osv.osv):55class account_tax_code_template(osv.osv):
56 _inherit = 'account.tax.code.template'56 _inherit = 'account.tax.code.template'
57 _columns = {57 _columns = {
58 'name': fields.char('Tax Case Name', size=64, required=True, translate=True),58 'name': fields.char('Tax Case Name', required=True, translate=True),
59 }59 }
6060
6161
62class account_chart_template(osv.osv):62class account_chart_template(osv.osv):
63 _inherit = 'account.chart.template'63 _inherit = 'account.chart.template'
64 _columns={64 _columns={
65 'name': fields.char('Name', size=64, required=True, translate=True),65 'name': fields.char('Name', required=True, translate=True),
66 'spoken_languages': fields.char('Spoken Languages', size=64, help="State here the languages for which the translations of templates could be loaded at the time of installation of this localization module and copied in the final object when generating them from templates. You must provide the language codes separated by ';'"),66 'spoken_languages': fields.char('Spoken Languages', help="State here the languages for which the translations of templates could be loaded at the time of installation of this localization module and copied in the final object when generating them from templates. You must provide the language codes separated by ';'"),
67 }67 }
68 _order = 'name'68 _order = 'name'
6969
@@ -71,33 +71,33 @@
71class account_fiscal_position(osv.osv):71class account_fiscal_position(osv.osv):
72 _inherit = 'account.fiscal.position'72 _inherit = 'account.fiscal.position'
73 _columns = {73 _columns = {
74 'name': fields.char('Fiscal Position', size=64, required=True, translate=True),74 'name': fields.char('Fiscal Position', required=True, translate=True),
75 }75 }
7676
7777
78class account_fiscal_position_template(osv.osv):78class account_fiscal_position_template(osv.osv):
79 _inherit = 'account.fiscal.position.template'79 _inherit = 'account.fiscal.position.template'
80 _columns = {80 _columns = {
81 'name': fields.char('Fiscal Position Template', size=64, required=True, translate=True),81 'name': fields.char('Fiscal Position Template', required=True, translate=True),
82 }82 }
8383
8484
85class account_journal(osv.osv):85class account_journal(osv.osv):
86 _inherit = 'account.journal'86 _inherit = 'account.journal'
87 _columns = {87 _columns = {
88 'name': fields.char('Journal Name', size=64, required=True, translate=True),88 'name': fields.char('Journal Name', required=True, translate=True),
89 }89 }
9090
9191
92class account_analytic_account(osv.osv):92class account_analytic_account(osv.osv):
93 _inherit = 'account.analytic.account'93 _inherit = 'account.analytic.account'
94 _columns = {94 _columns = {
95 'name': fields.char('Account Name', size=128, required=True, translate=True),95 'name': fields.char('Account Name', required=True, translate=True),
96 }96 }
9797
9898
99class account_analytic_journal(osv.osv):99class account_analytic_journal(osv.osv):
100 _inherit = 'account.analytic.journal'100 _inherit = 'account.analytic.journal'
101 _columns = {101 _columns = {
102 'name': fields.char('Journal Name', size=64, required=True, translate=True),102 'name': fields.char('Journal Name', required=True, translate=True),
103 }103 }
104104
=== modified file 'l10n_ro/res_partner.py'
--- l10n_ro/res_partner.py 2013-10-27 12:31:04 +0000
+++ l10n_ro/res_partner.py 2014-05-12 18:39:30 +0000
@@ -25,7 +25,7 @@
25 _name = "res.partner"25 _name = "res.partner"
26 _inherit = "res.partner"26 _inherit = "res.partner"
27 _columns = {27 _columns = {
28 'nrc' : fields.char('NRC', size=16, help='Registration number at the Registry of Commerce'),28 'nrc' : fields.char('NRC', help='Registration number at the Registry of Commerce'),
29 }29 }
3030
31 # The SQL constraints are no-ops but present only to display the right error message to the31 # The SQL constraints are no-ops but present only to display the right error message to the
3232
=== modified file 'lunch/lunch.py'
--- lunch/lunch.py 2013-10-27 12:31:04 +0000
+++ lunch/lunch.py 2014-05-12 18:39:30 +0000
@@ -307,7 +307,7 @@
307 ('confirmed','Confirmed'), \307 ('confirmed','Confirmed'), \
308 ('cancelled','Cancelled'), \308 ('cancelled','Cancelled'), \
309 ('partially','Partially Confirmed')] \309 ('partially','Partially Confirmed')] \
310 ,'Status', readonly=True, select=True),310 ,'Status', size=9, readonly=True, select=True),
311 'alerts': fields.function(_alerts_get, string="Alerts", type='text'),311 'alerts': fields.function(_alerts_get, string="Alerts", type='text'),
312 }312 }
313313
@@ -416,7 +416,7 @@
416 ('confirmed', 'Received'), \416 ('confirmed', 'Received'), \
417 ('ordered', 'Ordered'), \417 ('ordered', 'Ordered'), \
418 ('cancelled', 'Cancelled')], \418 ('cancelled', 'Cancelled')], \
419 'Status', readonly=True, select=True),419 'Status', size=9, readonly=True, select=True),
420 'cashmove': fields.one2many('lunch.cashmove', 'order_id', 'Cash Move', ondelete='cascade'),420 'cashmove': fields.one2many('lunch.cashmove', 'order_id', 'Cash Move', ondelete='cascade'),
421421
422 }422 }
@@ -432,7 +432,7 @@
432 _name = 'lunch.product'432 _name = 'lunch.product'
433 _description = 'lunch product'433 _description = 'lunch product'
434 _columns = {434 _columns = {
435 'name': fields.char('Product', required=True, size=64),435 'name': fields.char('Product', required=True),
436 'category_id': fields.many2one('lunch.product.category', 'Category', required=True),436 'category_id': fields.many2one('lunch.product.category', 'Category', required=True),
437 'description': fields.text('Description', size=256),437 'description': fields.text('Description', size=256),
438 'price': fields.float('Price', digits=(16,2)), #TODO: use decimal precision of 'Account', move it from product to decimal_precision438 'price': fields.float('Price', digits=(16,2)), #TODO: use decimal precision of 'Account', move it from product to decimal_precision
@@ -461,7 +461,7 @@
461 'amount': fields.float('Amount', required=True), #depending on the kind of cashmove, the amount will be positive or negative461 'amount': fields.float('Amount', required=True), #depending on the kind of cashmove, the amount will be positive or negative
462 'description': fields.text('Description'), #the description can be an order or a payment462 'description': fields.text('Description'), #the description can be an order or a payment
463 'order_id': fields.many2one('lunch.order.line', 'Order', ondelete='cascade'),463 'order_id': fields.many2one('lunch.order.line', 'Order', ondelete='cascade'),
464 'state': fields.selection([('order','Order'), ('payment','Payment')], 'Is an order or a Payment'),464 'state': fields.selection([('order','Order'), ('payment','Payment')], 'Is an order or a Payment', size=7),
465 }465 }
466 _defaults = {466 _defaults = {
467 'user_id': lambda self, cr, uid, context: uid,467 'user_id': lambda self, cr, uid, context: uid,
@@ -480,7 +480,7 @@
480 'alter_type': fields.selection([('specific', 'Specific Day'), \480 'alter_type': fields.selection([('specific', 'Specific Day'), \
481 ('week', 'Every Week'), \481 ('week', 'Every Week'), \
482 ('days', 'Every Day')], \482 ('days', 'Every Day')], \
483 string='Recurrency', required=True, select=True),483 string='Recurrency', size=8, required=True, select=True),
484 'specific_day': fields.date('Day'),484 'specific_day': fields.date('Day'),
485 'monday': fields.boolean('Monday'),485 'monday': fields.boolean('Monday'),
486 'tuesday': fields.boolean('Tuesday'),486 'tuesday': fields.boolean('Tuesday'),
487487
=== modified file 'lunch/report/report_lunch_order.py'
--- lunch/report/report_lunch_order.py 2013-10-27 12:31:04 +0000
+++ lunch/report/report_lunch_order.py 2014-05-12 18:39:30 +0000
@@ -32,11 +32,11 @@
32 'year': fields.char('Year', size=4, readonly=True),32 'year': fields.char('Year', size=4, readonly=True),
33 'month':fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'),33 'month':fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'),
34 ('05','May'), ('06','June'), ('07','July'), ('08','August'), ('09','September'),34 ('05','May'), ('06','June'), ('07','July'), ('08','August'), ('09','September'),
35 ('10','October'), ('11','November'), ('12','December')], 'Month',readonly=True),35 ('10','October'), ('11','November'), ('12','December')], 'Month', size=2, readonly=True),
36 'day': fields.char('Day', size=128, readonly=True),36 'day': fields.char('Day', size=128, readonly=True),
37 'user_id': fields.many2one('res.users', 'User Name'),37 'user_id': fields.many2one('res.users', 'User Name'),
38 'price_total':fields.float('Total Price', readonly=True),38 'price_total':fields.float('Total Price', readonly=True),
39 'note' : fields.text('Note',size=256,readonly=True),39 'note' : fields.text('Note', readonly=True),
40 }40 }
41 _order = 'date desc'41 _order = 'date desc'
42 def init(self, cr):42 def init(self, cr):
4343
=== modified file 'mail/mail_alias.py'
--- mail/mail_alias.py 2014-05-09 10:23:55 +0000
+++ mail/mail_alias.py 2014-05-12 18:39:30 +0000
@@ -87,7 +87,7 @@
87 help="Optional ID of a thread (record) to which all incoming "87 help="Optional ID of a thread (record) to which all incoming "
88 "messages will be attached, even if they did not reply to it. "88 "messages will be attached, even if they did not reply to it. "
89 "If set, this will disable the creation of new records completely."),89 "If set, this will disable the creation of new records completely."),
90 'alias_domain': fields.function(_get_alias_domain, string="Alias domain", type='char', size=None),90 'alias_domain': fields.function(_get_alias_domain, string="Alias domain", type='char'),
91 'alias_parent_model_id': fields.many2one('ir.model', 'Parent Model',91 'alias_parent_model_id': fields.many2one('ir.model', 'Parent Model',
92 help="Parent model holding the alias. The model holding the alias reference\n"92 help="Parent model holding the alias. The model holding the alias reference\n"
93 "is not necessarily the model given by alias_model_id\n"93 "is not necessarily the model given by alias_model_id\n"
@@ -98,7 +98,7 @@
98 ('everyone', 'Everyone'),98 ('everyone', 'Everyone'),
99 ('partners', 'Authenticated Partners'),99 ('partners', 'Authenticated Partners'),
100 ('followers', 'Followers only'),100 ('followers', 'Followers only'),
101 ], string='Alias Contact Security', required=True,101 ], string='Alias Contact Security', size=9, required=True,
102 help="Policy to post a message on the document using the mailgateway.\n"102 help="Policy to post a message on the document using the mailgateway.\n"
103 "- everyone: everyone can post\n"103 "- everyone: everyone can post\n"
104 "- partners: only authenticated partners\n"104 "- partners: only authenticated partners\n"
105105
=== modified file 'mail/mail_followers.py'
--- mail/mail_followers.py 2014-04-23 12:53:19 +0000
+++ mail/mail_followers.py 2014-05-12 18:39:30 +0000
@@ -37,7 +37,7 @@
37 _log_access = False37 _log_access = False
38 _description = 'Document Followers'38 _description = 'Document Followers'
39 _columns = {39 _columns = {
40 'res_model': fields.char('Related Document Model', size=128,40 'res_model': fields.char('Related Document Model',
41 required=True, select=1,41 required=True, select=1,
42 help='Model of the followed resource'),42 help='Model of the followed resource'),
43 'res_id': fields.integer('Related Document ID', select=1,43 'res_id': fields.integer('Related Document ID', select=1,
4444
=== modified file 'mail/mail_group.py'
--- mail/mail_group.py 2014-03-20 15:08:55 +0000
+++ mail/mail_group.py 2014-05-12 18:39:30 +0000
@@ -45,10 +45,10 @@
45 return self.write(cr, uid, [id], {'image': tools.image_resize_image_big(value)}, context=context)45 return self.write(cr, uid, [id], {'image': tools.image_resize_image_big(value)}, context=context)
4646
47 _columns = {47 _columns = {
48 'name': fields.char('Name', size=64, required=True, translate=True),48 'name': fields.char('Name', required=True, translate=True),
49 'description': fields.text('Description'),49 'description': fields.text('Description'),
50 'menu_id': fields.many2one('ir.ui.menu', string='Related Menu', required=True, ondelete="cascade"),50 'menu_id': fields.many2one('ir.ui.menu', string='Related Menu', required=True, ondelete="cascade"),
51 'public': fields.selection([('public', 'Public'), ('private', 'Private'), ('groups', 'Selected Group Only')], 'Privacy', required=True,51 'public': fields.selection([('public', 'Public'), ('private', 'Private'), ('groups', 'Selected Group Only')], 'Privacy', size=8, required=True,
52 help='This group is visible by non members. \52 help='This group is visible by non members. \
53 Invisible groups can add members through the invite button.'),53 Invisible groups can add members through the invite button.'),
54 'group_public_id': fields.many2one('res.groups', string='Authorized Group'),54 'group_public_id': fields.many2one('res.groups', string='Authorized Group'),
5555
=== modified file 'mail/mail_mail.py'
--- mail/mail_mail.py 2014-05-09 10:23:55 +0000
+++ mail/mail_mail.py 2014-05-12 18:39:30 +0000
@@ -51,7 +51,7 @@
51 ('received', 'Received'),51 ('received', 'Received'),
52 ('exception', 'Delivery Failed'),52 ('exception', 'Delivery Failed'),
53 ('cancel', 'Cancelled'),53 ('cancel', 'Cancelled'),
54 ], 'Status', readonly=True),54 ], 'Status', size=9, readonly=True),
55 'auto_delete': fields.boolean('Auto Delete',55 'auto_delete': fields.boolean('Auto Delete',
56 help="Permanently delete this email after sending it, to save space"),56 help="Permanently delete this email after sending it, to save space"),
57 'references': fields.text('References', help='Message references, such as identifiers of previous messages', readonly=1),57 'references': fields.text('References', help='Message references, such as identifiers of previous messages', readonly=1),
5858
=== modified file 'mail/mail_message.py'
--- mail/mail_message.py 2014-05-09 10:23:55 +0000
+++ mail/mail_message.py 2014-05-12 18:39:30 +0000
@@ -124,7 +124,7 @@
124 ('email', 'Email'),124 ('email', 'Email'),
125 ('comment', 'Comment'),125 ('comment', 'Comment'),
126 ('notification', 'System notification'),126 ('notification', 'System notification'),
127 ], 'Type',127 ], 'Type', size=12,
128 help="Message type: email for email message, notification for system "\128 help="Message type: email for email message, notification for system "\
129 "message, comment for other messages such as user replies"),129 "message, comment for other messages such as user replies"),
130 'email_from': fields.char('From',130 'email_from': fields.char('From',
131131
=== modified file 'mail/res_partner.py'
--- mail/res_partner.py 2014-04-17 09:41:33 +0000
+++ mail/res_partner.py 2014-05-12 18:39:30 +0000
@@ -34,7 +34,7 @@
34 'notify_email': fields.selection([34 'notify_email': fields.selection([
35 ('none', 'Never'),35 ('none', 'Never'),
36 ('always', 'All Messages'),36 ('always', 'All Messages'),
37 ], 'Receive Inbox Notifications by Email', required=True,37 ], 'Receive Inbox Notifications by Email', size=6, required=True,
38 oldname='notification_email_send',38 oldname='notification_email_send',
39 help="Policy to receive emails for new messages pushed to your personal Inbox:\n"39 help="Policy to receive emails for new messages pushed to your personal Inbox:\n"
40 "- Never: no emails are sent\n"40 "- Never: no emails are sent\n"
4141
=== modified file 'mail/wizard/invite.py'
--- mail/wizard/invite.py 2014-03-10 14:36:00 +0000
+++ mail/wizard/invite.py 2014-05-12 18:39:30 +0000
@@ -48,7 +48,7 @@
48 return result48 return result
4949
50 _columns = {50 _columns = {
51 'res_model': fields.char('Related Document Model', size=128,51 'res_model': fields.char('Related Document Model',
52 required=True, select=1,52 required=True, select=1,
53 help='Model of the followed resource'),53 help='Model of the followed resource'),
54 'res_id': fields.integer('Related Document ID', select=1,54 'res_id': fields.integer('Related Document ID', select=1,
5555
=== modified file 'marketing_campaign/marketing_campaign.py'
--- marketing_campaign/marketing_campaign.py 2014-03-26 12:34:57 +0000
+++ marketing_campaign/marketing_campaign.py 2014-05-12 18:39:30 +0000
@@ -96,7 +96,7 @@
96 return res96 return res
9797
98 _columns = {98 _columns = {
99 'name': fields.char('Name', size=64, required=True),99 'name': fields.char('Name', required=True),
100 'object_id': fields.many2one('ir.model', 'Resource', required=True,100 'object_id': fields.many2one('ir.model', 'Resource', required=True,
101 help="Choose the resource on which you want \101 help="Choose the resource on which you want \
102this campaign to be run"),102this campaign to be run"),
@@ -117,7 +117,7 @@
117 ('test_realtime', 'Test in Realtime'),117 ('test_realtime', 'Test in Realtime'),
118 ('manual', 'With Manual Confirmation'),118 ('manual', 'With Manual Confirmation'),
119 ('active', 'Normal')],119 ('active', 'Normal')],
120 'Mode', required=True, help= \120 'Mode', size=13, required=True, help= \
121"""Test - It creates and process all the activities directly (without waiting for the delay on transitions) but does not send emails or produce reports.121"""Test - It creates and process all the activities directly (without waiting for the delay on transitions) but does not send emails or produce reports.
122Test in Realtime - It creates and processes all the activities directly but does not send emails or produce reports.122Test in Realtime - It creates and processes all the activities directly but does not send emails or produce reports.
123With Manual Confirmation - the campaigns runs normally, but the user has to validate all workitem manually.123With Manual Confirmation - the campaigns runs normally, but the user has to validate all workitem manually.
@@ -126,7 +126,7 @@
126 ('running', 'Running'),126 ('running', 'Running'),
127 ('cancelled', 'Cancelled'),127 ('cancelled', 'Cancelled'),
128 ('done', 'Done')],128 ('done', 'Done')],
129 'Status',),129 'Status', size=9),
130 'activity_ids': fields.one2many('marketing.campaign.activity',130 'activity_ids': fields.one2many('marketing.campaign.activity',
131 'campaign_id', 'Activities'),131 'campaign_id', 'Activities'),
132 'fixed_cost': fields.float('Fixed Cost', help="Fixed cost for running this campaign. You may also specify variable cost and revenue on each campaign activity. Cost and Revenue statistics are included in Campaign Reporting.", digits_compute=dp.get_precision('Product Price')),132 'fixed_cost': fields.float('Fixed Cost', help="Fixed cost for running this campaign. You may also specify variable cost and revenue on each campaign activity. Cost and Revenue statistics are included in Campaign Reporting.", digits_compute=dp.get_precision('Product Price')),
@@ -261,7 +261,7 @@
261 return dict.fromkeys(ids, next_sync)261 return dict.fromkeys(ids, next_sync)
262262
263 _columns = {263 _columns = {
264 'name': fields.char('Name', size=64,required=True),264 'name': fields.char('Name', required=True),
265 'campaign_id': fields.many2one('marketing.campaign', 'Campaign', required=True, select=1, ondelete="cascade"),265 'campaign_id': fields.many2one('marketing.campaign', 'Campaign', required=True, select=1, ondelete="cascade"),
266 'object_id': fields.related('campaign_id','object_id', type='many2one', relation='ir.model', string='Resource'),266 'object_id': fields.related('campaign_id','object_id', type='many2one', relation='ir.model', string='Resource'),
267 'ir_filter_id': fields.many2one('ir.filters', 'Filter', ondelete="restrict",267 'ir_filter_id': fields.many2one('ir.filters', 'Filter', ondelete="restrict",
@@ -273,7 +273,7 @@
273 'sync_mode': fields.selection([('create_date', 'Only records created after last sync'),273 'sync_mode': fields.selection([('create_date', 'Only records created after last sync'),
274 ('write_date', 'Only records modified after last sync (no duplicates)'),274 ('write_date', 'Only records modified after last sync (no duplicates)'),
275 ('all', 'All records (no duplicates)')],275 ('all', 'All records (no duplicates)')],
276 'Synchronization mode',276 'Synchronization mode', size=11,
277 help="Determines an additional criterion to add to the filter when selecting new records to inject in the campaign. "\277 help="Determines an additional criterion to add to the filter when selecting new records to inject in the campaign. "\
278 '"No duplicates" prevents selecting records which have already entered the campaign previously.'\278 '"No duplicates" prevents selecting records which have already entered the campaign previously.'\
279 'If the campaign has a "unique field" set, "no duplicates" will also prevent selecting records which have '\279 'If the campaign has a "unique field" set, "no duplicates" will also prevent selecting records which have '\
@@ -282,7 +282,7 @@
282 ('cancelled', 'Cancelled'),282 ('cancelled', 'Cancelled'),
283 ('running', 'Running'),283 ('running', 'Running'),
284 ('done', 'Done')],284 ('done', 'Done')],
285 'Status',),285 'Status', size=9),
286 'date_run': fields.datetime('Launch Date', help="Initial start date of this segment."),286 'date_run': fields.datetime('Launch Date', help="Initial start date of this segment."),
287 'date_done': fields.datetime('End Date', help="Date this segment was last closed or cancelled."),287 'date_done': fields.datetime('End Date', help="Date this segment was last closed or cancelled."),
288 'date_next_sync': fields.function(_get_next_sync, string='Next Synchronization', type='datetime', help="Next time the synchronization job is scheduled to run automatically"),288 'date_next_sync': fields.function(_get_next_sync, string='Next Synchronization', type='datetime', help="Next time the synchronization job is scheduled to run automatically"),
@@ -411,7 +411,7 @@
411 ]411 ]
412412
413 _columns = {413 _columns = {
414 'name': fields.char('Name', size=128, required=True),414 'name': fields.char('Name', required=True),
415 'campaign_id': fields.many2one('marketing.campaign', 'Campaign',415 'campaign_id': fields.many2one('marketing.campaign', 'Campaign',
416 required = True, ondelete='cascade', select=1),416 required = True, ondelete='cascade', select=1),
417 'object_id': fields.related('campaign_id','object_id',417 'object_id': fields.related('campaign_id','object_id',
@@ -426,7 +426,7 @@
426 " - resource: the resource object this campaign item represents\n"426 " - resource: the resource object this campaign item represents\n"
427 " - transitions: list of campaign transitions outgoing from this activity\n"427 " - transitions: list of campaign transitions outgoing from this activity\n"
428 "...- re: Python regular expression module"),428 "...- re: Python regular expression module"),
429 'type': fields.selection(_action_types, 'Type', required=True,429 'type': fields.selection(_action_types, 'Type', required=True, size=6,
430 help="""The type of action to execute when an item enters this activity, such as:430 help="""The type of action to execute when an item enters this activity, such as:
431 - Email: send an email using a predefined email template431 - Email: send an email using a predefined email template
432 - Report: print an existing Report defined on the resource item and save it into a specific directory432 - Report: print an existing Report defined on the resource item and save it into a specific directory
@@ -446,7 +446,7 @@
446 'Previous Activities'),446 'Previous Activities'),
447 'variable_cost': fields.float('Variable Cost', help="Set a variable cost if you consider that every campaign item that has reached this point has entailed a certain cost. You can get cost statistics in the Reporting section", digits_compute=dp.get_precision('Product Price')),447 'variable_cost': fields.float('Variable Cost', help="Set a variable cost if you consider that every campaign item that has reached this point has entailed a certain cost. You can get cost statistics in the Reporting section", digits_compute=dp.get_precision('Product Price')),
448 'revenue': fields.float('Revenue', help="Set an expected revenue if you consider that every campaign item that has reached this point has generated a certain revenue. You can get revenue statistics in the Reporting section", digits_compute=dp.get_precision('Account')),448 'revenue': fields.float('Revenue', help="Set an expected revenue if you consider that every campaign item that has reached this point has generated a certain revenue. You can get revenue statistics in the Reporting section", digits_compute=dp.get_precision('Account')),
449 'signal': fields.char('Signal', size=128,449 'signal': fields.char('Signal',
450 help='An activity with a signal can be called programmatically. Be careful, the workitem is always created when a signal is sent'),450 help='An activity with a signal can be called programmatically. Be careful, the workitem is always created when a signal is sent'),
451 'keep_if_condition_not_met': fields.boolean("Don't Delete Workitems",451 'keep_if_condition_not_met': fields.boolean("Don't Delete Workitems",
452 help="By activating this option, workitems that aren't executed because the condition is not met are marked as cancelled instead of being deleted.")452 help="By activating this option, workitems that aren't executed because the condition is not met are marked as cancelled instead of being deleted.")
@@ -560,14 +560,14 @@
560 'Next Activity',560 'Next Activity',
561 required=True, ondelete="cascade"),561 required=True, ondelete="cascade"),
562 'interval_nbr': fields.integer('Interval Value', required=True),562 'interval_nbr': fields.integer('Interval Value', required=True),
563 'interval_type': fields.selection(_interval_units, 'Interval Unit',563 'interval_type': fields.selection(_interval_units, 'Interval Unit', size=6,
564 required=True),564 required=True),
565565
566 'trigger': fields.selection([('auto', 'Automatic'),566 'trigger': fields.selection([('auto', 'Automatic'),
567 ('time', 'Time'),567 ('time', 'Time'),
568 ('cosmetic', 'Cosmetic'), # fake plastic transition568 ('cosmetic', 'Cosmetic'), # fake plastic transition
569 ],569 ],
570 'Trigger', required=True,570 'Trigger', required=True, size=8,
571 help="How is the destination workitem triggered"),571 help="How is the destination workitem triggered"),
572 }572 }
573573
@@ -658,7 +658,7 @@
658 ('cancelled', 'Cancelled'),658 ('cancelled', 'Cancelled'),
659 ('exception', 'Exception'),659 ('exception', 'Exception'),
660 ('done', 'Done'),660 ('done', 'Done'),
661 ], 'Status', readonly=True),661 ], 'Status', size=9, readonly=True),
662 'error_msg' : fields.text('Error Message', readonly=True)662 'error_msg' : fields.text('Error Message', readonly=True)
663 }663 }
664 _defaults = {664 _defaults = {
665665
=== modified file 'marketing_campaign/report/campaign_analysis.py'
--- marketing_campaign/report/campaign_analysis.py 2013-10-27 12:31:04 +0000
+++ marketing_campaign/report/campaign_analysis.py 2014-05-12 18:39:30 +0000
@@ -50,7 +50,7 @@
50 ('03','March'), ('04','April'),('05','May'), ('06','June'),50 ('03','March'), ('04','April'),('05','May'), ('06','June'),
51 ('07','July'), ('08','August'), ('09','September'),51 ('07','July'), ('08','August'), ('09','September'),
52 ('10','October'), ('11','November'), ('12','December')],52 ('10','October'), ('11','November'), ('12','December')],
53 'Month', readonly=True),53 'Month', size=2, readonly=True),
54 'day': fields.char('Day', size=10, readonly=True),54 'day': fields.char('Day', size=10, readonly=True),
55 'date': fields.date('Date', readonly=True, select=True),55 'date': fields.date('Date', readonly=True, select=True),
56 'campaign_id': fields.many2one('marketing.campaign', 'Campaign',56 'campaign_id': fields.many2one('marketing.campaign', 'Campaign',
@@ -68,7 +68,7 @@
68 'count' : fields.integer('# of Actions', readonly=True),68 'count' : fields.integer('# of Actions', readonly=True),
69 'state': fields.selection([('todo', 'To Do'),69 'state': fields.selection([('todo', 'To Do'),
70 ('exception', 'Exception'), ('done', 'Done'),70 ('exception', 'Exception'), ('done', 'Done'),
71 ('cancelled', 'Cancelled')], 'Status', readonly=True),71 ('cancelled', 'Cancelled')], 'Status', size=9, readonly=True),
72 }72 }
73 def init(self, cr):73 def init(self, cr):
74 tools.drop_view_if_exists(cr, 'campaign_analysis')74 tools.drop_view_if_exists(cr, 'campaign_analysis')
7575
=== modified file 'mass_mailing/models/mass_mailing.py'
--- mass_mailing/models/mass_mailing.py 2014-04-29 16:54:30 +0000
+++ mass_mailing/models/mass_mailing.py 2014-05-12 18:39:30 +0000
@@ -326,7 +326,7 @@
326 ),326 ),
327 'state': fields.selection(327 'state': fields.selection(
328 [('draft', 'Draft'), ('test', 'Tested'), ('done', 'Sent')],328 [('draft', 'Draft'), ('test', 'Tested'), ('done', 'Sent')],
329 string='Status', required=True,329 string='Status', size=5, required=True,
330 ),330 ),
331 'color': fields.related(331 'color': fields.related(
332 'mass_mailing_campaign_id', 'color',332 'mass_mailing_campaign_id', 'color',
@@ -335,7 +335,7 @@
335 # mailing options335 # mailing options
336 'reply_to_mode': fields.selection(336 'reply_to_mode': fields.selection(
337 [('thread', 'In Document'), ('email', 'Specified Email Address')],337 [('thread', 'In Document'), ('email', 'Specified Email Address')],
338 string='Reply-To Mode', required=True,338 string='Reply-To Mode', size=6, required=True,
339 ),339 ),
340 'reply_to': fields.char('Reply To', help='Preferred Reply-To Address'),340 'reply_to': fields.char('Reply To', help='Preferred Reply-To Address'),
341 # recipients341 # recipients
342342
=== modified file 'membership/report/report_membership.py'
--- membership/report/report_membership.py 2013-10-27 12:31:04 +0000
+++ membership/report/report_membership.py 2014-05-12 18:39:30 +0000
@@ -47,7 +47,7 @@
47 ('05', 'May'), ('06', 'June'), \47 ('05', 'May'), ('06', 'June'), \
48 ('07', 'July'), ('08', 'August'),\48 ('07', 'July'), ('08', 'August'),\
49 ('09', 'September'), ('10', 'October'),\49 ('09', 'September'), ('10', 'October'),\
50 ('11', 'November'), ('12', 'December')], 'Month', readonly=True),50 ('11', 'November'), ('12', 'December')], 'Month', size=2, readonly=True),
51 'date_from': fields.datetime('Start Date', readonly=True, help="Start membership date"),51 'date_from': fields.datetime('Start Date', readonly=True, help="Start membership date"),
52 'date_to': fields.datetime('End Date', readonly=True, help="End membership date"),52 'date_to': fields.datetime('End Date', readonly=True, help="End membership date"),
53 'num_waiting': fields.integer('# Waiting', readonly=True),53 'num_waiting': fields.integer('# Waiting', readonly=True),
@@ -58,7 +58,7 @@
58 'partner_id': fields.many2one('res.partner', 'Member', readonly=True),58 'partner_id': fields.many2one('res.partner', 'Member', readonly=True),
59 'associate_member_id': fields.many2one('res.partner', 'Associate Member', readonly=True),59 'associate_member_id': fields.many2one('res.partner', 'Associate Member', readonly=True),
60 'membership_id': fields.many2one('product.product', 'Membership Product', readonly=True),60 'membership_id': fields.many2one('product.product', 'Membership Product', readonly=True),
61 'membership_state': fields.selection(STATE, 'Current Membership State', readonly=True),61 'membership_state': fields.selection(STATE, 'Current Membership State', size=9, readonly=True),
62 'user_id': fields.many2one('res.users', 'Salesperson', readonly=True),62 'user_id': fields.many2one('res.users', 'Salesperson', readonly=True),
63 'company_id': fields.many2one('res.company', 'Company', readonly=True)63 'company_id': fields.many2one('res.company', 'Company', readonly=True)
64 }64 }
6565
=== modified file 'mrp/mrp.py'
--- mrp/mrp.py 2014-05-08 11:59:17 +0000
+++ mrp/mrp.py 2014-05-12 18:39:30 +0000
@@ -36,7 +36,7 @@
36 _name = 'mrp.property.group'36 _name = 'mrp.property.group'
37 _description = 'Property Group'37 _description = 'Property Group'
38 _columns = {38 _columns = {
39 'name': fields.char('Property Group', size=64, required=True),39 'name': fields.char('Property Group', required=True),
40 'description': fields.text('Description'),40 'description': fields.text('Description'),
41 }41 }
4242
@@ -47,8 +47,8 @@
47 _name = 'mrp.property'47 _name = 'mrp.property'
48 _description = 'Property'48 _description = 'Property'
49 _columns = {49 _columns = {
50 'name': fields.char('Name', size=64, required=True),50 'name': fields.char('Name', required=True),
51 'composition': fields.selection([('min','min'),('max','max'),('plus','plus')], 'Properties composition', required=True, help="Not used in computations, for information purpose only."),51 'composition': fields.selection([('min','min'),('max','max'),('plus','plus')], 'Properties composition', size=4, required=True, help="Not used in computations, for information purpose only."),
52 'group_id': fields.many2one('mrp.property.group', 'Property Group', required=True),52 'group_id': fields.many2one('mrp.property.group', 'Property Group', required=True),
53 'description': fields.text('Description'),53 'description': fields.text('Description'),
54 }54 }
@@ -103,7 +103,7 @@
103 _name = 'mrp.routing'103 _name = 'mrp.routing'
104 _description = 'Routing'104 _description = 'Routing'
105 _columns = {105 _columns = {
106 'name': fields.char('Name', size=64, required=True),106 'name': fields.char('Name', required=True),
107 'active': fields.boolean('Active', help="If the active field is set to False, it will allow you to hide the routing without removing it."),107 'active': fields.boolean('Active', help="If the active field is set to False, it will allow you to hide the routing without removing it."),
108 'code': fields.char('Code', size=8),108 'code': fields.char('Code', size=8),
109109
@@ -131,7 +131,7 @@
131 _order = 'sequence'131 _order = 'sequence'
132 _columns = {132 _columns = {
133 'workcenter_id': fields.many2one('mrp.workcenter', 'Work Center', required=True),133 'workcenter_id': fields.many2one('mrp.workcenter', 'Work Center', required=True),
134 'name': fields.char('Name', size=64, required=True),134 'name': fields.char('Name', required=True),
135 'sequence': fields.integer('Sequence', help="Gives the sequence order when displaying a list of routing Work Centers."),135 'sequence': fields.integer('Sequence', help="Gives the sequence order when displaying a list of routing Work Centers."),
136 'cycle_nbr': fields.float('Number of Cycles', required=True,136 'cycle_nbr': fields.float('Number of Cycles', required=True,
137 help="Number of iterations this work center has to do in the specified operation of the routing."),137 help="Number of iterations this work center has to do in the specified operation of the routing."),
@@ -193,7 +193,7 @@
193 return result193 return result
194194
195 _columns = {195 _columns = {
196 'name': fields.char('Name', size=64),196 'name': fields.char('Name'),
197 'code': fields.char('Reference', size=16),197 'code': fields.char('Reference', size=16),
198 'active': fields.boolean('Active', help="If the active field is set to False, it will allow you to hide the bills of material without removing it."),198 'active': fields.boolean('Active', help="If the active field is set to False, it will allow you to hide the bills of material without removing it."),
199 'type': fields.selection([('normal', 'Normal BoM'), ('phantom', 'Sets / Phantom')], 'BoM Type', required=True,199 'type': fields.selection([('normal', 'Normal BoM'), ('phantom', 'Sets / Phantom')], 'BoM Type', required=True,
@@ -203,7 +203,7 @@
203 'date_start': fields.date('Valid From', help="Validity of this BoM or component. Keep empty if it's always valid."),203 'date_start': fields.date('Valid From', help="Validity of this BoM or component. Keep empty if it's always valid."),
204 'date_stop': fields.date('Valid Until', help="Validity of this BoM or component. Keep empty if it's always valid."),204 'date_stop': fields.date('Valid Until', help="Validity of this BoM or component. Keep empty if it's always valid."),
205 'sequence': fields.integer('Sequence', help="Gives the sequence order when displaying a list of bills of material."),205 'sequence': fields.integer('Sequence', help="Gives the sequence order when displaying a list of bills of material."),
206 'position': fields.char('Internal Reference', size=64, help="Reference to a position in an external plan."),206 'position': fields.char('Internal Reference', help="Reference to a position in an external plan."),
207 'product_id': fields.many2one('product.product', 'Product', required=True),207 'product_id': fields.many2one('product.product', 'Product', required=True),
208 'product_uos_qty': fields.float('Product UOS Qty'),208 'product_uos_qty': fields.float('Product UOS Qty'),
209 'product_uos': fields.many2one('product.uom', 'Product UOS', help="Product UOS (Unit of Sale) is the unit of measurement for the invoicing and promotion of stock."),209 'product_uos': fields.many2one('product.uom', 'Product UOS', help="Product UOS (Unit of Sale) is the unit of measurement for the invoicing and promotion of stock."),
@@ -452,11 +452,11 @@
452 return res452 return res
453453
454 _columns = {454 _columns = {
455 'name': fields.char('Reference', size=64, required=True, readonly=True, states={'draft': [('readonly', False)]}),455 'name': fields.char('Reference', required=True, readonly=True, states={'draft': [('readonly', False)]}),
456 'origin': fields.char('Source Document', size=64, readonly=True, states={'draft': [('readonly', False)]},456 'origin': fields.char('Source Document', readonly=True, states={'draft': [('readonly', False)]},
457 help="Reference of the document that generated this production order request."),457 help="Reference of the document that generated this production order request."),
458 'priority': fields.selection([('0', 'Not urgent'), ('1', 'Normal'), ('2', 'Urgent'), ('3', 'Very Urgent')], 'Priority',458 'priority': fields.selection([('0', 'Not urgent'), ('1', 'Normal'), ('2', 'Urgent'), ('3', 'Very Urgent')], 'Priority',
459 select=True, readonly=True, states=dict.fromkeys(['draft', 'confirmed'], [('readonly', False)])),459 size=1, select=True, readonly=True, states=dict.fromkeys(['draft', 'confirmed'], [('readonly', False)])),
460460
461 'product_id': fields.many2one('product.product', 'Product', required=True, readonly=True, states={'draft': [('readonly', False)]}),461 'product_id': fields.many2one('product.product', 'Product', required=True, readonly=True, states={'draft': [('readonly', False)]}),
462 'product_qty': fields.float('Product Quantity', digits_compute=dp.get_precision('Product Unit of Measure'), required=True, readonly=True, states={'draft': [('readonly', False)]}),462 'product_qty': fields.float('Product Quantity', digits_compute=dp.get_precision('Product Unit of Measure'), required=True, readonly=True, states={'draft': [('readonly', False)]}),
@@ -495,7 +495,7 @@
495 'state': fields.selection(495 'state': fields.selection(
496 [('draft', 'New'), ('cancel', 'Cancelled'), ('confirmed', 'Awaiting Raw Materials'),496 [('draft', 'New'), ('cancel', 'Cancelled'), ('confirmed', 'Awaiting Raw Materials'),
497 ('ready', 'Ready to Produce'), ('in_production', 'Production Started'), ('done', 'Done')],497 ('ready', 'Ready to Produce'), ('in_production', 'Production Started'), ('done', 'Done')],
498 string='Status', readonly=True,498 string='Status', size=13, readonly=True,
499 track_visibility='onchange',499 track_visibility='onchange',
500 help="When the production order is created the status is set to 'Draft'.\n\500 help="When the production order is created the status is set to 'Draft'.\n\
501 If the order is confirmed the status is set to 'Waiting Goods'.\n\501 If the order is confirmed the status is set to 'Waiting Goods'.\n\
@@ -1084,7 +1084,7 @@
1084 _inherit = ['mail.thread']1084 _inherit = ['mail.thread']
10851085
1086 _columns = {1086 _columns = {
1087 'name': fields.char('Work Order', size=64, required=True),1087 'name': fields.char('Work Order', required=True),
1088 'workcenter_id': fields.many2one('mrp.workcenter', 'Work Center', required=True),1088 'workcenter_id': fields.many2one('mrp.workcenter', 'Work Center', required=True),
1089 'cycle': fields.float('Number of Cycles', digits=(16, 2)),1089 'cycle': fields.float('Number of Cycles', digits=(16, 2)),
1090 'hour': fields.float('Number of Hours', digits=(16, 2)),1090 'hour': fields.float('Number of Hours', digits=(16, 2)),
@@ -1102,7 +1102,7 @@
1102 _name = 'mrp.production.product.line'1102 _name = 'mrp.production.product.line'
1103 _description = 'Production Scheduled Product'1103 _description = 'Production Scheduled Product'
1104 _columns = {1104 _columns = {
1105 'name': fields.char('Name', size=64, required=True),1105 'name': fields.char('Name', required=True),
1106 'product_id': fields.many2one('product.product', 'Product', required=True),1106 'product_id': fields.many2one('product.product', 'Product', required=True),
1107 'product_qty': fields.float('Product Quantity', digits_compute=dp.get_precision('Product Unit of Measure'), required=True),1107 'product_qty': fields.float('Product Quantity', digits_compute=dp.get_precision('Product Unit of Measure'), required=True),
1108 'product_uom': fields.many2one('product.uom', 'Product Unit of Measure', required=True),1108 'product_uom': fields.many2one('product.uom', 'Product Unit of Measure', required=True),
11091109
=== modified file 'mrp/report/mrp_report.py'
--- mrp/report/mrp_report.py 2013-11-29 16:56:44 +0000
+++ mrp/report/mrp_report.py 2014-05-12 18:39:30 +0000
@@ -28,7 +28,7 @@
28 _auto = False28 _auto = False
29 _log_access = False29 _log_access = False
30 _columns = {30 _columns = {
31 'name': fields.char('Week', size=64, required=True),31 'name': fields.char('Week', required=True),
32 'workcenter_id': fields.many2one('mrp.workcenter', 'Work Center', required=True),32 'workcenter_id': fields.many2one('mrp.workcenter', 'Work Center', required=True),
33 'cycle': fields.float('Number of Cycles'),33 'cycle': fields.float('Number of Cycles'),
34 'hour': fields.float('Number of Hours'),34 'hour': fields.float('Number of Hours'),
@@ -61,7 +61,7 @@
61 _log_access = False61 _log_access = False
62 _rec_name = 'date'62 _rec_name = 'date'
63 _columns = {63 _columns = {
64 'date': fields.char('Week', size=64, required=True),64 'date': fields.char('Week', required=True),
65 'value': fields.float('Stock value', required=True, digits=(16,2)),65 'value': fields.float('Stock value', required=True, digits=(16,2)),
66 'company_id': fields.many2one('res.company', 'Company', required=True),66 'company_id': fields.many2one('res.company', 'Company', required=True),
67 }67 }
6868
=== modified file 'mrp/wizard/mrp_product_produce.py'
--- mrp/wizard/mrp_product_produce.py 2014-05-07 16:59:51 +0000
+++ mrp/wizard/mrp_product_produce.py 2014-05-12 18:39:30 +0000
@@ -43,7 +43,7 @@
43 'product_id': fields.many2one('product.product', type='many2one'),43 'product_id': fields.many2one('product.product', type='many2one'),
44 'product_qty': fields.float('Select Quantity', digits_compute=dp.get_precision('Product Unit of Measure'), required=True),44 'product_qty': fields.float('Select Quantity', digits_compute=dp.get_precision('Product Unit of Measure'), required=True),
45 'mode': fields.selection([('consume_produce', 'Consume & Produce'),45 'mode': fields.selection([('consume_produce', 'Consume & Produce'),
46 ('consume', 'Consume Only')], 'Mode', required=True,46 ('consume', 'Consume Only')], 'Mode', size=15, required=True,
47 help="'Consume only' mode will only consume the products with the quantity selected.\n"47 help="'Consume only' mode will only consume the products with the quantity selected.\n"
48 "'Consume & Produce' mode will consume as well as produce the products with the quantity selected "48 "'Consume & Produce' mode will consume as well as produce the products with the quantity selected "
49 "and it will finish the production order when total ordered quantities are produced."),49 "and it will finish the production order when total ordered quantities are produced."),
5050
=== modified file 'mrp/wizard/mrp_workcenter_load.py'
--- mrp/wizard/mrp_workcenter_load.py 2013-10-27 12:31:04 +0000
+++ mrp/wizard/mrp_workcenter_load.py 2014-05-12 18:39:30 +0000
@@ -26,8 +26,8 @@
26 _description = 'Work Center Load'26 _description = 'Work Center Load'
2727
28 _columns = {28 _columns = {
29 'time_unit': fields.selection([('day', 'Day by day'),('week', 'Per week'),('month', 'Per month')],'Type of period', required=True),29 'time_unit': fields.selection([('day', 'Day by day'),('week', 'Per week'),('month', 'Per month')],'Type of period', size=5, required=True),
30 'measure_unit': fields.selection([('hours', 'Amount in hours'),('cycles', 'Amount in cycles')],'Amount measuring unit', required=True),30 'measure_unit': fields.selection([('hours', 'Amount in hours'),('cycles', 'Amount in cycles')],'Amount measuring unit', size=6, required=True),
31 }31 }
3232
33 def print_report(self, cr, uid, ids, context=None):33 def print_report(self, cr, uid, ids, context=None):
3434
=== modified file 'mrp_byproduct/mrp_byproduct.py'
--- mrp_byproduct/mrp_byproduct.py 2014-04-22 12:16:25 +0000
+++ mrp_byproduct/mrp_byproduct.py 2014-05-12 18:39:30 +0000
@@ -31,7 +31,7 @@
31 'product_id': fields.many2one('product.product', 'Product', required=True),31 'product_id': fields.many2one('product.product', 'Product', required=True),
32 'product_qty': fields.float('Product Qty', digits_compute=dp.get_precision('Product Unit of Measure'), required=True),32 'product_qty': fields.float('Product Qty', digits_compute=dp.get_precision('Product Unit of Measure'), required=True),
33 'product_uom': fields.many2one('product.uom', 'Product Unit of Measure', required=True),33 'product_uom': fields.many2one('product.uom', 'Product Unit of Measure', required=True),
34 'subproduct_type': fields.selection([('fixed','Fixed'),('variable','Variable')], 'Quantity Type', required=True, help="Define how the quantity of byproducts will be set on the production orders using this BoM.\34 'subproduct_type': fields.selection([('fixed','Fixed'),('variable','Variable')], 'Quantity Type', size=8, required=True, help="Define how the quantity of byproducts will be set on the production orders using this BoM.\
35 'Fixed' depicts a situation where the quantity of created byproduct is always equal to the quantity set on the BoM, regardless of how many are created in the production order.\35 'Fixed' depicts a situation where the quantity of created byproduct is always equal to the quantity set on the BoM, regardless of how many are created in the production order.\
36 By opposition, 'Variable' means that the quantity will be computed as\36 By opposition, 'Variable' means that the quantity will be computed as\
37 '(quantity of byproduct set on the BoM / quantity of manufactured product set on the BoM * quantity of manufactured product in the production order.)'"),37 '(quantity of byproduct set on the BoM / quantity of manufactured product set on the BoM * quantity of manufactured product in the production order.)'"),
3838
=== modified file 'mrp_operations/mrp_operations.py'
--- mrp_operations/mrp_operations.py 2014-04-23 09:48:07 +0000
+++ mrp_operations/mrp_operations.py 2014-05-12 18:39:30 +0000
@@ -84,7 +84,7 @@
84 _order = "sequence, date_planned"84 _order = "sequence, date_planned"
8585
86 _columns = {86 _columns = {
87 'state': fields.selection([('draft','Draft'),('cancel','Cancelled'),('pause','Pending'),('startworking', 'In Progress'),('done','Finished')],'Status', readonly=True,87 'state': fields.selection([('draft','Draft'),('cancel','Cancelled'),('pause','Pending'),('startworking', 'In Progress'),('done','Finished')],'Status', size=12, readonly=True,
88 help="* When a work order is created it is set in 'Draft' status.\n" \88 help="* When a work order is created it is set in 'Draft' status.\n" \
89 "* When user sets work order in start mode that time it will be set in 'In Progress' status.\n" \89 "* When user sets work order in start mode that time it will be set in 'In Progress' status.\n" \
90 "* When work order is in running mode, during that time if user wants to stop or to make changes in order then can set in 'Pending' status.\n" \90 "* When work order is in running mode, during that time if user wants to stop or to make changes in order then can set in 'Pending' status.\n" \
@@ -98,6 +98,7 @@
98 'production_state':fields.related('production_id','state',98 'production_state':fields.related('production_id','state',
99 type='selection',99 type='selection',
100 selection=[('draft','Draft'),('confirmed','Waiting Goods'),('ready','Ready to Produce'),('in_production','In Production'),('cancel','Canceled'),('done','Done')],100 selection=[('draft','Draft'),('confirmed','Waiting Goods'),('ready','Ready to Produce'),('in_production','In Production'),('cancel','Canceled'),('done','Done')],
101 size=13,
101 string='Production Status', readonly=True),102 string='Production Status', readonly=True),
102 'product':fields.related('production_id','product_id',type='many2one',relation='product.product',string='Product',103 'product':fields.related('production_id','product_id',type='many2one',relation='product.product',string='Product',
103 readonly=True),104 readonly=True),
@@ -376,9 +377,9 @@
376class mrp_operations_operation_code(osv.osv):377class mrp_operations_operation_code(osv.osv):
377 _name="mrp_operations.operation.code"378 _name="mrp_operations.operation.code"
378 _columns={379 _columns={
379 'name': fields.char('Operation Name',size=64, required=True),380 'name': fields.char('Operation Name', required=True),
380 'code': fields.char('Code', size=16, required=True),381 'code': fields.char('Code', size=16, required=True),
381 'start_stop': fields.selection([('start','Start'),('pause','Pause'),('resume','Resume'),('cancel','Cancelled'),('done','Done')], 'Status', required=True),382 'start_stop': fields.selection([('start','Start'),('pause','Pause'),('resume','Resume'),('cancel','Cancelled'),('done','Done')], 'Status', size=6, required=True),
382 }383 }
383384
384class mrp_operations_operation(osv.osv):385class mrp_operations_operation(osv.osv):
385386
=== modified file 'mrp_operations/report/mrp_workorder_analysis.py'
--- mrp_operations/report/mrp_workorder_analysis.py 2014-01-29 14:30:55 +0000
+++ mrp_operations/report/mrp_workorder_analysis.py 2014-05-12 18:39:30 +0000
@@ -32,7 +32,7 @@
32 'date': fields.date('Date', readonly=True),32 'date': fields.date('Date', readonly=True),
33 'product_id': fields.many2one('product.product', 'Product', readonly=True),33 'product_id': fields.many2one('product.product', 'Product', readonly=True),
34 'product_qty': fields.float('Product Qty', digits_compute=dp.get_precision('Product Unit of Measure'), readonly=True),34 'product_qty': fields.float('Product Qty', digits_compute=dp.get_precision('Product Unit of Measure'), readonly=True),
35 'state': fields.selection([('draft','Draft'),('startworking', 'In Progress'),('pause','Pause'),('cancel','Cancelled'),('done','Finished')],'Status', readonly=True),35 'state': fields.selection([('draft','Draft'),('startworking', 'In Progress'),('pause','Pause'),('cancel','Cancelled'),('done','Finished')], 'Status', size=12, readonly=True),
36 'total_hours': fields.float('Total Hours', readonly=True),36 'total_hours': fields.float('Total Hours', readonly=True),
37 'total_cycles': fields.float('Total Cycles', readonly=True),37 'total_cycles': fields.float('Total Cycles', readonly=True),
38 'delay': fields.float('Delay', readonly=True),38 'delay': fields.float('Delay', readonly=True),
3939
=== modified file 'mrp_repair/mrp_repair.py'
--- mrp_repair/mrp_repair.py 2014-05-08 14:39:40 +0000
+++ mrp_repair/mrp_repair.py 2014-05-12 18:39:30 +0000
@@ -113,7 +113,7 @@
113 return self.pool['mrp.repair'].search(cr, uid, [('fees_lines', 'in', ids)], context=context)113 return self.pool['mrp.repair'].search(cr, uid, [('fees_lines', 'in', ids)], context=context)
114114
115 _columns = {115 _columns = {
116 'name': fields.char('Repair Reference', size=24, required=True, states={'confirmed': [('readonly', True)]}),116 'name': fields.char('Repair Reference', required=True, states={'confirmed': [('readonly', True)]}),
117 'product_id': fields.many2one('product.product', string='Product to Repair', required=True, readonly=True, states={'draft': [('readonly', False)]}),117 'product_id': fields.many2one('product.product', string='Product to Repair', required=True, readonly=True, states={'draft': [('readonly', False)]}),
118 'product_qty': fields.float('Product Quantity', digits_compute=dp.get_precision('Product Unit of Measure'),118 'product_qty': fields.float('Product Quantity', digits_compute=dp.get_precision('Product Unit of Measure'),
119 required=True, readonly=True, states={'draft': [('readonly', False)]}),119 required=True, readonly=True, states={'draft': [('readonly', False)]}),
@@ -130,7 +130,7 @@
130 ('2binvoiced', 'To be Invoiced'),130 ('2binvoiced', 'To be Invoiced'),
131 ('invoice_except', 'Invoice Exception'),131 ('invoice_except', 'Invoice Exception'),
132 ('done', 'Repaired')132 ('done', 'Repaired')
133 ], 'Status', readonly=True, track_visibility='onchange',133 ], 'Status', size=14, readonly=True, track_visibility='onchange',
134 help=' * The \'Draft\' status is used when a user is encoding a new and unconfirmed repair order. \134 help=' * The \'Draft\' status is used when a user is encoding a new and unconfirmed repair order. \
135 \n* The \'Confirmed\' status is used when a user confirms the repair order. \135 \n* The \'Confirmed\' status is used when a user confirms the repair order. \
136 \n* The \'Ready to Repair\' status is used to start to repairing, user can start repairing only after repair order is confirmed. \136 \n* The \'Ready to Repair\' status is used to start to repairing, user can start repairing only after repair order is confirmed. \
@@ -149,7 +149,7 @@
149 ("b4repair", "Before Repair"),149 ("b4repair", "Before Repair"),
150 ("after_repair", "After Repair")150 ("after_repair", "After Repair")
151 ], "Invoice Method",151 ], "Invoice Method",
152 select=True, required=True, states={'draft': [('readonly', False)]}, readonly=True, help='Selecting \'Before Repair\' or \'After Repair\' will allow you to generate invoice before or after the repair is done respectively. \'No invoice\' means you don\'t want to generate invoice for this repair order.'),152 select=True, size=12, required=True, states={'draft': [('readonly', False)]}, readonly=True, help='Selecting \'Before Repair\' or \'After Repair\' will allow you to generate invoice before or after the repair is done respectively. \'No invoice\' means you don\'t want to generate invoice for this repair order.'),
153 'invoice_id': fields.many2one('account.invoice', 'Invoice', readonly=True, track_visibility="onchange"),153 'invoice_id': fields.many2one('account.invoice', 'Invoice', readonly=True, track_visibility="onchange"),
154 'move_id': fields.many2one('stock.move', 'Move', readonly=True, help="Move created by the repair order", track_visibility="onchange"),154 'move_id': fields.many2one('stock.move', 'Move', readonly=True, help="Move created by the repair order", track_visibility="onchange"),
155 'fees_lines': fields.one2many('mrp.repair.fee', 'repair_id', 'Fees', readonly=True, states={'draft': [('readonly', False)]}),155 'fees_lines': fields.one2many('mrp.repair.fee', 'repair_id', 'Fees', readonly=True, states={'draft': [('readonly', False)]}),
@@ -583,9 +583,9 @@
583 return res583 return res
584584
585 _columns = {585 _columns = {
586 'name': fields.char('Description', size=64, required=True),586 'name': fields.char('Description', required=True),
587 'repair_id': fields.many2one('mrp.repair', 'Repair Order Reference', ondelete='cascade', select=True),587 'repair_id': fields.many2one('mrp.repair', 'Repair Order Reference', ondelete='cascade', select=True),
588 'type': fields.selection([('add', 'Add'), ('remove', 'Remove')], 'Type', required=True),588 'type': fields.selection([('add', 'Add'), ('remove', 'Remove')], 'Type', size=6, required=True),
589 'to_invoice': fields.boolean('To Invoice'),589 'to_invoice': fields.boolean('To Invoice'),
590 'product_id': fields.many2one('product.product', 'Product', required=True),590 'product_id': fields.many2one('product.product', 'Product', required=True),
591 'invoiced': fields.boolean('Invoiced', readonly=True),591 'invoiced': fields.boolean('Invoiced', readonly=True),
@@ -603,7 +603,7 @@
603 ('draft', 'Draft'),603 ('draft', 'Draft'),
604 ('confirmed', 'Confirmed'),604 ('confirmed', 'Confirmed'),
605 ('done', 'Done'),605 ('done', 'Done'),
606 ('cancel', 'Cancelled')], 'Status', required=True, readonly=True,606 ('cancel', 'Cancelled')], 'Status', size=9, required=True, readonly=True,
607 help=' * The \'Draft\' status is set automatically as draft when repair order in draft status. \607 help=' * The \'Draft\' status is set automatically as draft when repair order in draft status. \
608 \n* The \'Confirmed\' status is set automatically as confirm when repair order in confirm status. \608 \n* The \'Confirmed\' status is set automatically as confirm when repair order in confirm status. \
609 \n* The \'Done\' status is set automatically when repair order is completed.\609 \n* The \'Done\' status is set automatically when repair order is completed.\
@@ -681,7 +681,7 @@
681681
682 _columns = {682 _columns = {
683 'repair_id': fields.many2one('mrp.repair', 'Repair Order Reference', required=True, ondelete='cascade', select=True),683 'repair_id': fields.many2one('mrp.repair', 'Repair Order Reference', required=True, ondelete='cascade', select=True),
684 'name': fields.char('Description', size=64, select=True, required=True),684 'name': fields.char('Description', select=True, required=True),
685 'product_id': fields.many2one('product.product', 'Product'),685 'product_id': fields.many2one('product.product', 'Product'),
686 'product_uom_qty': fields.float('Quantity', digits_compute=dp.get_precision('Product Unit of Measure'), required=True),686 'product_uom_qty': fields.float('Quantity', digits_compute=dp.get_precision('Product Unit of Measure'), required=True),
687 'price_unit': fields.float('Unit Price', required=True),687 'price_unit': fields.float('Unit Price', required=True),
688688
=== modified file 'payment/models/payment_acquirer.py'
--- payment/models/payment_acquirer.py 2014-04-16 12:10:55 +0000
+++ payment/models/payment_acquirer.py 2014-05-12 18:39:30 +0000
@@ -67,11 +67,12 @@
67 'validation': fields.selection(67 'validation': fields.selection(
68 [('manual', 'Manual'), ('automatic', 'Automatic')],68 [('manual', 'Manual'), ('automatic', 'Automatic')],
69 string='Process Method',69 string='Process Method',
70 size=9,
70 help='Static payments are payments like transfer, that require manual steps.'),71 help='Static payments are payments like transfer, that require manual steps.'),
71 'view_template_id': fields.many2one('ir.ui.view', 'Form Button Template', required=True),72 'view_template_id': fields.many2one('ir.ui.view', 'Form Button Template', required=True),
72 'environment': fields.selection(73 'environment': fields.selection(
73 [('test', 'Test'), ('prod', 'Production')],74 [('test', 'Test'), ('prod', 'Production')],
74 string='Environment', oldname='env'),75 size=4, string='Environment', oldname='env'),
75 'website_published': fields.boolean(76 'website_published': fields.boolean(
76 'Visible in Portal / Website',77 'Visible in Portal / Website',
77 help="Make this payment acquirer available (Customer invoices, etc.)"),78 help="Make this payment acquirer available (Customer invoices, etc.)"),
@@ -332,12 +333,12 @@
332 ),333 ),
333 'type': fields.selection(334 'type': fields.selection(
334 [('server2server', 'Server To Server'), ('form', 'Form')],335 [('server2server', 'Server To Server'), ('form', 'Form')],
335 string='Type', required=True),336 string='Type', size=13, required=True),
336 'state': fields.selection(337 'state': fields.selection(
337 [('draft', 'Draft'), ('pending', 'Pending'),338 [('draft', 'Draft'), ('pending', 'Pending'),
338 ('done', 'Done'), ('error', 'Error'),339 ('done', 'Done'), ('error', 'Error'),
339 ('cancel', 'Canceled')340 ('cancel', 'Canceled')
340 ], 'Status', required=True,341 ], 'Status', size=7, required=True,
341 track_visiblity='onchange'),342 track_visiblity='onchange'),
342 'state_message': fields.text('Message',343 'state_message': fields.text('Message',
343 help='Field used to store error and/or validation messages for information'),344 help='Field used to store error and/or validation messages for information'),
344345
=== modified file 'payment_ogone/models/ogone.py'
--- payment_ogone/models/ogone.py 2014-04-16 12:10:55 +0000
+++ payment_ogone/models/ogone.py 2014-05-12 18:39:30 +0000
@@ -45,8 +45,8 @@
45 'ogone_pspid': fields.char('PSPID', required_if_provider='ogone'),45 'ogone_pspid': fields.char('PSPID', required_if_provider='ogone'),
46 'ogone_userid': fields.char('API User ID', required_if_provider='ogone'),46 'ogone_userid': fields.char('API User ID', required_if_provider='ogone'),
47 'ogone_password': fields.char('API User Password', required_if_provider='ogone'),47 'ogone_password': fields.char('API User Password', required_if_provider='ogone'),
48 'ogone_shakey_in': fields.char('SHA Key IN', size=32, required_if_provider='ogone'),48 'ogone_shakey_in': fields.char('SHA Key IN', required_if_provider='ogone'),
49 'ogone_shakey_out': fields.char('SHA Key OUT', size=32, required_if_provider='ogone'),49 'ogone_shakey_out': fields.char('SHA Key OUT', required_if_provider='ogone'),
50 }50 }
5151
52 def _ogone_generate_shasign(self, acquirer, inout, values):52 def _ogone_generate_shasign(self, acquirer, inout, values):
5353
=== modified file 'plugin_outlook/plugin_outlook.py'
--- plugin_outlook/plugin_outlook.py 2012-12-06 14:56:32 +0000
+++ plugin_outlook/plugin_outlook.py 2014-05-12 18:39:30 +0000
@@ -28,8 +28,8 @@
28 _name = 'outlook.installer'28 _name = 'outlook.installer'
29 _inherit = 'res.config.installer'29 _inherit = 'res.config.installer'
30 _columns = {30 _columns = {
31 'plugin32': fields.char('Outlook Plug-in 32bits', size=256, readonly=True, help="Outlook plug-in file. Save this file and install it in Outlook."),31 'plugin32': fields.char('Outlook Plug-in 32bits', readonly=True, help="Outlook plug-in file. Save this file and install it in Outlook."),
32 'plugin64': fields.char('Outlook Plug-in 64bits', size=256, readonly=True, help="Outlook plug-in file. Save this file and install it in Outlook."),32 'plugin64': fields.char('Outlook Plug-in 64bits', readonly=True, help="Outlook plug-in file. Save this file and install it in Outlook."),
33 }33 }
3434
35 def default_get(self, cr, uid, fields, context=None):35 def default_get(self, cr, uid, fields, context=None):
3636
=== modified file 'plugin_thunderbird/plugin_thunderbird.py'
--- plugin_thunderbird/plugin_thunderbird.py 2012-12-06 14:56:32 +0000
+++ plugin_thunderbird/plugin_thunderbird.py 2014-05-12 18:39:30 +0000
@@ -27,8 +27,8 @@
2727
28 _columns = {28 _columns = {
29 'thunderbird': fields.boolean('Thunderbird Plug-in', help="Allows you to select an object that you would like to add to your email and its attachments."),29 'thunderbird': fields.boolean('Thunderbird Plug-in', help="Allows you to select an object that you would like to add to your email and its attachments."),
30 'plugin_name': fields.char('File name', size=64),30 'plugin_name': fields.char('File name'),
31 'plugin_file': fields.char('Thunderbird Plug-in', size=256, readonly=True, help="Thunderbird plug-in file. Save this file and install it in Thunderbird."),31 'plugin_file': fields.char('Thunderbird Plug-in', readonly=True, help="Thunderbird plug-in file. Save this file and install it in Thunderbird."),
32 }32 }
3333
34 _defaults = {34 _defaults = {
3535
=== modified file 'point_of_sale/point_of_sale.py'
--- point_of_sale/point_of_sale.py 2014-05-08 14:39:40 +0000
+++ point_of_sale/point_of_sale.py 2014-05-12 18:39:30 +0000
@@ -56,7 +56,7 @@
56 return result56 return result
5757
58 _columns = {58 _columns = {
59 'name' : fields.char('Point of Sale Name', size=32, select=1,59 'name' : fields.char('Point of Sale Name', select=1,
60 required=True, help="An internal identification of the point of sale"),60 required=True, help="An internal identification of the point of sale"),
61 'journal_ids' : fields.many2many('account.journal', 'pos_config_journal_rel', 61 'journal_ids' : fields.many2many('account.journal', 'pos_config_journal_rel',
62 'pos_config_id', 'journal_id', 'Available Payment Methods',62 'pos_config_id', 'journal_id', 'Available Payment Methods',
@@ -81,7 +81,7 @@
81 'receipt_footer': fields.text('Receipt Footer',help="A short text that will be inserted as a footer in the printed receipt"),81 'receipt_footer': fields.text('Receipt Footer',help="A short text that will be inserted as a footer in the printed receipt"),
82 'proxy_ip': fields.char('IP Address', help='The hostname or ip address of the hardware proxy, Will be autodetected if left empty', size=45),82 'proxy_ip': fields.char('IP Address', help='The hostname or ip address of the hardware proxy, Will be autodetected if left empty', size=45),
8383
84 'state' : fields.selection(POS_CONFIG_STATE, 'Status', required=True, readonly=True),84 'state' : fields.selection(POS_CONFIG_STATE, 'Status', size=10, required=True, readonly=True),
85 'sequence_id' : fields.many2one('ir.sequence', 'Order IDs Sequence', readonly=True,85 'sequence_id' : fields.many2one('ir.sequence', 'Order IDs Sequence', readonly=True,
86 help="This sequence is automatically created by OpenERP but you can change it "\86 help="This sequence is automatically created by OpenERP but you can change it "\
87 "to customize the reference numbers of your orders."),87 "to customize the reference numbers of your orders."),
@@ -227,7 +227,7 @@
227 domain="[('state', '=', 'active')]",227 domain="[('state', '=', 'active')]",
228 ),228 ),
229229
230 'name' : fields.char('Session ID', size=32, required=True, readonly=True),230 'name' : fields.char('Session ID', required=True, readonly=True),
231 'user_id' : fields.many2one('res.users', 'Responsible',231 'user_id' : fields.many2one('res.users', 'Responsible',
232 required=True,232 required=True,
233 select=1,233 select=1,
@@ -238,7 +238,7 @@
238 'start_at' : fields.datetime('Opening Date', readonly=True), 238 'start_at' : fields.datetime('Opening Date', readonly=True),
239 'stop_at' : fields.datetime('Closing Date', readonly=True),239 'stop_at' : fields.datetime('Closing Date', readonly=True),
240240
241 'state' : fields.selection(POS_SESSION_STATE, 'Status',241 'state' : fields.selection(POS_SESSION_STATE, 'Status', size=15,
242 required=True, readonly=True,242 required=True, readonly=True,
243 select=1),243 select=1),
244244
@@ -656,7 +656,7 @@
656 return super(pos_order, self).copy(cr, uid, id, d, context=context)656 return super(pos_order, self).copy(cr, uid, id, d, context=context)
657657
658 _columns = {658 _columns = {
659 'name': fields.char('Order Ref', size=64, required=True, readonly=True),659 'name': fields.char('Order Ref', required=True, readonly=True),
660 'company_id':fields.many2one('res.company', 'Company', required=True, readonly=True),660 'company_id':fields.many2one('res.company', 'Company', required=True, readonly=True),
661 'date_order': fields.datetime('Order Date', readonly=True, select=True),661 'date_order': fields.datetime('Order Date', readonly=True, select=True),
662 'user_id': fields.many2one('res.users', 'Salesman', help="Person who uses the the cash register. It can be a reliever, a student or an interim employee."),662 'user_id': fields.many2one('res.users', 'Salesman', help="Person who uses the the cash register. It can be a reliever, a student or an interim employee."),
@@ -681,7 +681,7 @@
681 ('paid', 'Paid'),681 ('paid', 'Paid'),
682 ('done', 'Posted'),682 ('done', 'Posted'),
683 ('invoiced', 'Invoiced')],683 ('invoiced', 'Invoiced')],
684 'Status', readonly=True),684 'Status', size=8, readonly=True),
685685
686 'invoice_id': fields.many2one('account.invoice', 'Invoice'),686 'invoice_id': fields.many2one('account.invoice', 'Invoice'),
687 'account_move': fields.many2one('account.move', 'Journal Entry', readonly=True),687 'account_move': fields.many2one('account.move', 'Journal Entry', readonly=True),
@@ -690,7 +690,7 @@
690 'location_id': fields.related('session_id', 'config_id', 'stock_location_id', string="Location", type='many2one', store=True, relation='stock.location'),690 'location_id': fields.related('session_id', 'config_id', 'stock_location_id', string="Location", type='many2one', store=True, relation='stock.location'),
691 'note': fields.text('Internal Notes'),691 'note': fields.text('Internal Notes'),
692 'nb_print': fields.integer('Number of Print', readonly=True),692 'nb_print': fields.integer('Number of Print', readonly=True),
693 'pos_reference': fields.char('Receipt Ref', size=64, readonly=True),693 'pos_reference': fields.char('Receipt Ref', readonly=True),
694 'sale_journal': fields.related('session_id', 'config_id', 'journal_id', relation='account.journal', type='many2one', string='Sale Journal', store=True, readonly=True),694 'sale_journal': fields.related('session_id', 'config_id', 'journal_id', relation='account.journal', type='many2one', string='Sale Journal', store=True, readonly=True),
695 }695 }
696696
@@ -1276,8 +1276,8 @@
12761276
1277 _columns = {1277 _columns = {
1278 'company_id': fields.many2one('res.company', 'Company', required=True),1278 'company_id': fields.many2one('res.company', 'Company', required=True),
1279 'name': fields.char('Line No', size=32, required=True),1279 'name': fields.char('Line No', required=True),
1280 'notice': fields.char('Discount Notice', size=128),1280 'notice': fields.char('Discount Notice'),
1281 'product_id': fields.many2one('product.product', 'Product', domain=[('sale_ok', '=', True)], required=True, change_default=True),1281 'product_id': fields.many2one('product.product', 'Product', domain=[('sale_ok', '=', True)], required=True, change_default=True),
1282 'price_unit': fields.float(string='Unit Price', digits_compute=dp.get_precision('Account')),1282 'price_unit': fields.float(string='Unit Price', digits_compute=dp.get_precision('Account')),
1283 'qty': fields.float('Quantity', digits_compute=dp.get_precision('Product UoS')),1283 'qty': fields.float('Quantity', digits_compute=dp.get_precision('Product UoS')),
@@ -1308,7 +1308,7 @@
1308class ean_wizard(osv.osv_memory):1308class ean_wizard(osv.osv_memory):
1309 _name = 'pos.ean_wizard'1309 _name = 'pos.ean_wizard'
1310 _columns = {1310 _columns = {
1311 'ean13_pattern': fields.char('Reference', size=32, required=True, translate=True),1311 'ean13_pattern': fields.char('Reference', size=13, required=True, translate=True),
1312 }1312 }
1313 def sanitize_ean13(self, cr, uid, ids, context):1313 def sanitize_ean13(self, cr, uid, ids, context):
1314 for r in self.browse(cr,uid,ids):1314 for r in self.browse(cr,uid,ids):
13151315
=== modified file 'point_of_sale/report/pos_order_report.py'
--- point_of_sale/report/pos_order_report.py 2014-03-24 15:22:11 +0000
+++ point_of_sale/report/pos_order_report.py 2014-05-12 18:39:30 +0000
@@ -31,7 +31,7 @@
31 'partner_id':fields.many2one('res.partner', 'Partner', readonly=True),31 'partner_id':fields.many2one('res.partner', 'Partner', readonly=True),
32 'product_id':fields.many2one('product.product', 'Product', readonly=True),32 'product_id':fields.many2one('product.product', 'Product', readonly=True),
33 'state': fields.selection([('draft', 'New'), ('paid', 'Closed'), ('done', 'Synchronized'), ('invoiced', 'Invoiced'), ('cancel', 'Cancelled')],33 'state': fields.selection([('draft', 'New'), ('paid', 'Closed'), ('done', 'Synchronized'), ('invoiced', 'Invoiced'), ('cancel', 'Cancelled')],
34 'Status'),34 'Status', size=8),
35 'user_id':fields.many2one('res.users', 'Salesperson', readonly=True),35 'user_id':fields.many2one('res.users', 'Salesperson', readonly=True),
36 'price_total':fields.float('Total Price', readonly=True),36 'price_total':fields.float('Total Price', readonly=True),
37 'total_discount':fields.float('Total Discount', readonly=True),37 'total_discount':fields.float('Total Discount', readonly=True),
3838
=== modified file 'point_of_sale/wizard/pos_payment.py'
--- point_of_sale/wizard/pos_payment.py 2014-04-14 10:49:54 +0000
+++ point_of_sale/wizard/pos_payment.py 2014-05-12 18:39:30 +0000
@@ -118,7 +118,7 @@
118 _columns = {118 _columns = {
119 'journal_id' : fields.many2one('account.journal', 'Payment Mode', required=True),119 'journal_id' : fields.many2one('account.journal', 'Payment Mode', required=True),
120 'amount': fields.float('Amount', digits=(16,2), required= True),120 'amount': fields.float('Amount', digits=(16,2), required= True),
121 'payment_name': fields.char('Payment Reference', size=32),121 'payment_name': fields.char('Payment Reference'),
122 'payment_date': fields.date('Payment Date', required=True),122 'payment_date': fields.date('Payment Date', required=True),
123 }123 }
124 _defaults = {124 _defaults = {
125125
=== modified file 'point_of_sale/wizard/pos_session_opening.py'
--- point_of_sale/wizard/pos_session_opening.py 2013-12-07 17:00:14 +0000
+++ point_of_sale/wizard/pos_session_opening.py 2014-05-12 18:39:30 +0000
@@ -15,7 +15,7 @@
15 type='selection',15 type='selection',
16 selection=pos_session.POS_SESSION_STATE,16 selection=pos_session.POS_SESSION_STATE,
17 string='Session Status', readonly=True),17 string='Session Status', readonly=True),
18 'pos_state_str' : fields.char('Status', 32, readonly=True),18 'pos_state_str' : fields.char('Status', readonly=True),
19 'show_config' : fields.boolean('Show Config', readonly=True),19 'show_config' : fields.boolean('Show Config', readonly=True),
20 'pos_session_name' : fields.related('pos_session_id', 'name',20 'pos_session_name' : fields.related('pos_session_id', 'name',
21 type='char', size=64, readonly=True),21 type='char', size=64, readonly=True),
2222
=== modified file 'portal/wizard/portal_wizard.py'
--- portal/wizard/portal_wizard.py 2014-03-24 14:35:58 +0000
+++ portal/wizard/portal_wizard.py 2014-05-12 18:39:30 +0000
@@ -118,7 +118,7 @@
118 _columns = {118 _columns = {
119 'wizard_id': fields.many2one('portal.wizard', string='Wizard', required=True, ondelete='cascade'),119 'wizard_id': fields.many2one('portal.wizard', string='Wizard', required=True, ondelete='cascade'),
120 'partner_id': fields.many2one('res.partner', string='Contact', required=True, readonly=True),120 'partner_id': fields.many2one('res.partner', string='Contact', required=True, readonly=True),
121 'email': fields.char(size=240, string='Email'),121 'email': fields.char(string='Email', size=240),
122 'in_portal': fields.boolean('In Portal'),122 'in_portal': fields.boolean('In Portal'),
123 }123 }
124124
125125
=== modified file 'procurement/procurement.py'
--- procurement/procurement.py 2014-05-07 18:29:17 +0000
+++ procurement/procurement.py 2014-05-12 18:39:30 +0000
@@ -57,7 +57,7 @@
57 'name': fields.char('Reference', required=True),57 'name': fields.char('Reference', required=True),
58 'move_type': fields.selection([58 'move_type': fields.selection([
59 ('direct', 'Partial'), ('one', 'All at once')],59 ('direct', 'Partial'), ('one', 'All at once')],
60 'Delivery Method', required=True),60 'Delivery Method', size=6, required=True),
61 'procurement_ids': fields.one2many('procurement.order', 'group_id', 'Procurements'),61 'procurement_ids': fields.one2many('procurement.order', 'group_id', 'Procurements'),
62 }62 }
63 _defaults = {63 _defaults = {
@@ -107,13 +107,13 @@
107 _columns = {107 _columns = {
108 'name': fields.text('Description', required=True),108 'name': fields.text('Description', required=True),
109109
110 'origin': fields.char('Source Document', size=64,110 'origin': fields.char('Source Document',
111 help="Reference of the document that created this Procurement.\n"111 help="Reference of the document that created this Procurement.\n"
112 "This is automatically completed by OpenERP."),112 "This is automatically completed by OpenERP."),
113 'company_id': fields.many2one('res.company', 'Company', required=True),113 'company_id': fields.many2one('res.company', 'Company', required=True),
114114
115 # These two fields are used for shceduling115 # These two fields are used for shceduling
116 'priority': fields.selection([('0', 'Not urgent'), ('1', 'Normal'), ('2', 'Urgent'), ('3', 'Very Urgent')], 'Priority', required=True, select=True, track_visibility='onchange'),116 'priority': fields.selection([('0', 'Not urgent'), ('1', 'Normal'), ('2', 'Urgent'), ('3', 'Very Urgent')], 'Priority', size=1, required=True, select=True, track_visibility='onchange'),
117 'date_planned': fields.datetime('Scheduled Date', required=True, select=True, track_visibility='onchange'),117 'date_planned': fields.datetime('Scheduled Date', required=True, select=True, track_visibility='onchange'),
118118
119 'group_id': fields.many2one('procurement.group', 'Procurement Group'),119 'group_id': fields.many2one('procurement.group', 'Procurement Group'),
@@ -132,7 +132,7 @@
132 ('exception', 'Exception'),132 ('exception', 'Exception'),
133 ('running', 'Running'),133 ('running', 'Running'),
134 ('done', 'Done')134 ('done', 'Done')
135 ], 'Status', required=True, track_visibility='onchange'),135 ], 'Status', size=9, required=True, track_visibility='onchange'),
136 }136 }
137137
138 _defaults = {138 _defaults = {
139139
=== modified file 'product/pricelist.py'
--- product/pricelist.py 2014-03-17 12:01:26 +0000
+++ product/pricelist.py 2014-05-12 18:39:30 +0000
@@ -53,7 +53,7 @@
53 _name = "product.price.type"53 _name = "product.price.type"
54 _description = "Price Type"54 _description = "Price Type"
55 _columns = {55 _columns = {
56 "name" : fields.char("Price Name", size=32, required=True, translate=True, help="Name of this kind of price."),56 "name" : fields.char("Price Name", required=True, translate=True, help="Name of this kind of price."),
57 "active" : fields.boolean("Active"),57 "active" : fields.boolean("Active"),
58 "field" : fields.selection(_price_field_get, "Product Field", size=32, required=True, help="Associated field in the product form."),58 "field" : fields.selection(_price_field_get, "Product Field", size=32, required=True, help="Associated field in the product form."),
59 "currency_id" : fields.many2one('res.currency', "Currency", required=True, help="The currency the field is expressed in."),59 "currency_id" : fields.many2one('res.currency', "Currency", required=True, help="The currency the field is expressed in."),
@@ -72,8 +72,8 @@
72 _name = "product.pricelist.type"72 _name = "product.pricelist.type"
73 _description = "Pricelist Type"73 _description = "Pricelist Type"
74 _columns = {74 _columns = {
75 'name': fields.char('Name',size=64, required=True, translate=True),75 'name': fields.char('Name', required=True, translate=True),
76 'key': fields.char('Key', size=64, required=True, help="Used in the code to select specific prices based on the context. Keep unchanged."),76 'key': fields.char('Key', required=True, help="Used in the code to select specific prices based on the context. Keep unchanged."),
77 }77 }
7878
7979
@@ -94,9 +94,9 @@
94 _description = "Pricelist"94 _description = "Pricelist"
95 _order = 'name'95 _order = 'name'
96 _columns = {96 _columns = {
97 'name': fields.char('Pricelist Name',size=64, required=True, translate=True),97 'name': fields.char('Pricelist Name', required=True, translate=True),
98 'active': fields.boolean('Active', help="If unchecked, it will allow you to hide the pricelist without removing it."),98 'active': fields.boolean('Active', help="If unchecked, it will allow you to hide the pricelist without removing it."),
99 'type': fields.selection(_pricelist_type_get, 'Pricelist Type', required=True),99 'type': fields.selection(_pricelist_type_get, 'Pricelist Type', size=32, required=True),
100 'version_id': fields.one2many('product.pricelist.version', 'pricelist_id', 'Pricelist Versions'),100 'version_id': fields.one2many('product.pricelist.version', 'pricelist_id', 'Pricelist Versions'),
101 'currency_id': fields.many2one('res.currency', 'Currency', required=True),101 'currency_id': fields.many2one('res.currency', 'Currency', required=True),
102 'company_id': fields.many2one('res.company', 'Company'),102 'company_id': fields.many2one('res.company', 'Company'),
@@ -317,7 +317,7 @@
317 _columns = {317 _columns = {
318 'pricelist_id': fields.many2one('product.pricelist', 'Price List',318 'pricelist_id': fields.many2one('product.pricelist', 'Price List',
319 required=True, select=True, ondelete='cascade'),319 required=True, select=True, ondelete='cascade'),
320 'name': fields.char('Name', size=64, required=True, translate=True),320 'name': fields.char('Name', required=True, translate=True),
321 'active': fields.boolean('Active',321 'active': fields.boolean('Active',
322 help="When a version is duplicated it is set to non active, so that the " \322 help="When a version is duplicated it is set to non active, so that the " \
323 "dates do not overlaps with original version. You should change the dates " \323 "dates do not overlaps with original version. You should change the dates " \
@@ -420,7 +420,7 @@
420 return True420 return True
421421
422 _columns = {422 _columns = {
423 'name': fields.char('Rule Name', size=64, help="Explicit rule name for this pricelist line."),423 'name': fields.char('Rule Name', help="Explicit rule name for this pricelist line."),
424 'price_version_id': fields.many2one('product.pricelist.version', 'Price List Version', required=True, select=True, ondelete='cascade'),424 'price_version_id': fields.many2one('product.pricelist.version', 'Price List Version', required=True, select=True, ondelete='cascade'),
425 'product_tmpl_id': fields.many2one('product.template', 'Product Template', ondelete='cascade', help="Specify a template if this rule only applies to one product template. Keep empty otherwise."),425 'product_tmpl_id': fields.many2one('product.template', 'Product Template', ondelete='cascade', help="Specify a template if this rule only applies to one product template. Keep empty otherwise."),
426 'product_id': fields.many2one('product.product', 'Product', ondelete='cascade', help="Specify a product if this rule only applies to one product. Keep empty otherwise."),426 'product_id': fields.many2one('product.product', 'Product', ondelete='cascade', help="Specify a product if this rule only applies to one product. Keep empty otherwise."),
427427
=== modified file 'product/product.py'
--- product/product.py 2014-05-09 07:33:15 +0000
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches

to all changes: