Many label changes, one functional (spelling) fix in passing.

bzr revid: gsg@pinot-grigio-20090127111546-96d4h0r74pvs43qu
This commit is contained in:
Geoff Gardiner 2009-01-27 11:15:46 +00:00
parent 78e7b89475
commit 9049abc55c
55 changed files with 255 additions and 255 deletions

View File

@ -101,7 +101,7 @@ class account_account_type(osv.osv):
'sequence': fields.integer('Sequence', help="Gives the sequence order when displaying a list of account types."), 'sequence': fields.integer('Sequence', help="Gives the sequence order when displaying a list of account types."),
'partner_account': fields.boolean('Partner account'), 'partner_account': fields.boolean('Partner account'),
'close_method': fields.selection([('none','None'), ('balance','Balance'), ('detail','Detail'),('unreconciled','Unreconciled')], 'Deferral Method', required=True), 'close_method': fields.selection([('none','None'), ('balance','Balance'), ('detail','Detail'),('unreconciled','Unreconciled')], 'Deferral Method', required=True),
'sign': fields.selection([(-1, 'Negative'), (1, 'Positive')], 'Sign on Reports', required=True, help='Allows to change the displayed amount of the balance in the reports, in order to see positive results instead of negative ones in expenses accounts.'), 'sign': fields.selection([(-1, 'Negative'), (1, 'Positive')], 'Sign on Reports', required=True, help='Allows you to change the sign of the balance amount displayed in the reports, so that you can see positive figures instead of negative ones in expenses accounts.'),
} }
_defaults = { _defaults = {
'close_method': lambda *a: 'none', 'close_method': lambda *a: 'none',
@ -267,11 +267,11 @@ class account_account(osv.osv):
'parent_id': fields.many2one('account.account','Parent', ondelete='cascade'), 'parent_id': fields.many2one('account.account','Parent', ondelete='cascade'),
'child_parent_ids':fields.one2many('account.account','parent_id','Children'), 'child_parent_ids':fields.one2many('account.account','parent_id','Children'),
'child_consol_ids':fields.many2many('account.account', 'account_account_consol_rel', 'child_id', 'parent_id', 'Consolidated Children'), 'child_consol_ids':fields.many2many('account.account', 'account_account_consol_rel', 'child_id', 'parent_id', 'Consolidated Children'),
'child_id': fields.function(_get_child_ids, method=True, type='many2many',relation="account.account",string="Children Accounts"), 'child_id': fields.function(_get_child_ids, method=True, type='many2many',relation="account.account",string="Child Accounts"),
'balance': fields.function(__compute, digits=(16,2), method=True, string='Balance', multi='balance'), 'balance': fields.function(__compute, digits=(16,2), method=True, string='Balance', multi='balance'),
'credit': fields.function(__compute, digits=(16,2), method=True, string='Credit', multi='balance'), 'credit': fields.function(__compute, digits=(16,2), method=True, string='Credit', multi='balance'),
'debit': fields.function(__compute, digits=(16,2), method=True, string='Debit', multi='balance'), 'debit': fields.function(__compute, digits=(16,2), method=True, string='Debit', multi='balance'),
'reconcile': fields.boolean('Reconcile', help="Check this account if the user can make a reconciliation of the entries in this account."), 'reconcile': fields.boolean('Reconcile', help="Check this if the user is allowed to reconcile entries in this account."),
'shortcut': fields.char('Shortcut', size=12), 'shortcut': fields.char('Shortcut', size=12),
'tax_ids': fields.many2many('account.tax', 'account_account_tax_default_rel', 'tax_ids': fields.many2many('account.tax', 'account_account_tax_default_rel',
'account_id','tax_id', 'Default Taxes'), 'account_id','tax_id', 'Default Taxes'),
@ -284,10 +284,10 @@ class account_account(osv.osv):
'parent_right': fields.integer('Parent Right', select=1), 'parent_right': fields.integer('Parent Right', select=1),
'currency_mode': fields.selection([('current','At Date'),('average','Average Rate')], 'Outgoing Currencies Rate', 'currency_mode': fields.selection([('current','At Date'),('average','Average Rate')], 'Outgoing Currencies Rate',
help= help=
'This will select how is computed the current currency rate for outgoing transactions. '\ 'This will select how the current currency rate for outgoing transactions is computed. '\
'In most countries the legal method is "average" but only a few softwares are able to '\ 'In most countries the legal method is "average" but only a few software systems are able to '\
'manage this. So if you import from another software, you may have to use the rate at date. ' \ 'manage this. So if you import from another software system you may have to use the rate at date. ' \
'Incoming transactions, always use the rate at date.', \ 'Incoming transactions always use the rate at date.', \
required=True), required=True),
'check_history': fields.boolean('Display History', 'check_history': fields.boolean('Display History',
help="Check this box if you want to print all entries when printing the General Ledger, "\ help="Check this box if you want to print all entries when printing the General Ledger, "\
@ -451,14 +451,14 @@ class account_journal(osv.osv):
'view_id': fields.many2one('account.journal.view', 'View', required=True, help="Gives the view used when writing or browsing entries in this journal. The view tell Open ERP which fields should be visible, required or readonly and in which order. You can create your own view for a faster encoding in each journal."), 'view_id': fields.many2one('account.journal.view', 'View', required=True, help="Gives the view used when writing or browsing entries in this journal. The view tell Open ERP which fields should be visible, required or readonly and in which order. You can create your own view for a faster encoding in each journal."),
'default_credit_account_id': fields.many2one('account.account', 'Default Credit Account', domain="[('type','!=','view')]"), 'default_credit_account_id': fields.many2one('account.account', 'Default Credit Account', domain="[('type','!=','view')]"),
'default_debit_account_id': fields.many2one('account.account', 'Default Debit Account', domain="[('type','!=','view')]"), 'default_debit_account_id': fields.many2one('account.account', 'Default Debit Account', domain="[('type','!=','view')]"),
'centralisation': fields.boolean('Centralised counterpart', help="Check this box if you want that each entry doesn't create a counterpart but share the same counterpart for each entry of this journal. This is used in fiscal year closing."), 'centralisation': fields.boolean('Centralised counterpart', help="Check this box to determine that each entry of this journal won't create a new counterpart but will share the same counterpart. This is used in fiscal year closing."),
'update_posted': fields.boolean('Allow Cancelling Entries'), 'update_posted': fields.boolean('Allow Cancelling Entries'),
'group_invoice_lines': fields.boolean('Group invoice lines', help="If this box is cheked, the system will try to group the accouting lines when generating them from invoices."), 'group_invoice_lines': fields.boolean('Group invoice lines', help="If this box is checked, the system will try to group the accounting lines when generating them from invoices."),
'sequence_id': fields.many2one('ir.sequence', 'Entry Sequence', help="The sequence gives the display order for a list of journals", required=True), 'sequence_id': fields.many2one('ir.sequence', 'Entry Sequence', help="The sequence gives the display order for a list of journals", required=True),
'user_id': fields.many2one('res.users', 'User', help="The responsible user of this journal"), 'user_id': fields.many2one('res.users', 'User', help="The user responsible for this journal"),
'groups_id': fields.many2many('res.groups', 'account_journal_group_rel', 'journal_id', 'group_id', 'Groups'), 'groups_id': fields.many2many('res.groups', 'account_journal_group_rel', 'journal_id', 'group_id', 'Groups'),
'currency': fields.many2one('res.currency', 'Currency', help='The currency used to enter statement'), 'currency': fields.many2one('res.currency', 'Currency', help='The currency used to enter statement'),
'entry_posted': fields.boolean('Skip \'Draft\' State for Created Entries', help='Check this box if you don\'t want that new account moves pass through the \'draft\' state and goes direclty to the \'posted state\' without any manual validation.'), 'entry_posted': fields.boolean('Skip \'Draft\' State for Created Entries', help='Check this box if you don\'t want new account moves to pass through the \'draft\' state and instead goes directly to the \'posted state\' without any manual validation.'),
'company_id': fields.related('default_credit_account_id','company_id',type='many2one', relation="res.company", string="Company"), 'company_id': fields.related('default_credit_account_id','company_id',type='many2one', relation="res.company", string="Company"),
'invoice_sequence_id': fields.many2one('ir.sequence', 'Invoice Sequence', \ 'invoice_sequence_id': fields.many2one('ir.sequence', 'Invoice Sequence', \
help="The sequence used for invoice numbers in this journal."), help="The sequence used for invoice numbers in this journal."),
@ -501,10 +501,10 @@ class account_fiscalyear(osv.osv):
'code': fields.char('Code', size=6, required=True), 'code': fields.char('Code', size=6, required=True),
'company_id': fields.many2one('res.company', 'Company', 'company_id': fields.many2one('res.company', 'Company',
help="Keep empty if the fiscal year belongs to several companies."), help="Keep empty if the fiscal year belongs to several companies."),
'date_start': fields.date('Start date', required=True), 'date_start': fields.date('Start Date', required=True),
'date_stop': fields.date('End date', required=True), 'date_stop': fields.date('End Date', required=True),
'period_ids': fields.one2many('account.period', 'fiscalyear_id', 'Periods'), 'period_ids': fields.one2many('account.period', 'fiscalyear_id', 'Periods'),
'state': fields.selection([('draft','Draft'), ('done','Done')], 'Status', redonly=True), 'state': fields.selection([('draft','Draft'), ('done','Done')], 'Status', readonly=True),
} }
_defaults = { _defaults = {
@ -519,7 +519,7 @@ class account_fiscalyear(osv.osv):
return True return True
_constraints = [ _constraints = [
(_check_duration, 'Error ! The date duration of the Fiscal Year is invalid. ', ['date_stop']) (_check_duration, 'Error ! The duration of the Fiscal Year is invalid. ', ['date_stop'])
] ]
def create_period3(self,cr, uid, ids, context={}): def create_period3(self,cr, uid, ids, context={}):
@ -565,8 +565,8 @@ class account_period(osv.osv):
'code': fields.char('Code', size=12), 'code': fields.char('Code', size=12),
'special': fields.boolean('Opening/Closing Period', size=12, 'special': fields.boolean('Opening/Closing Period', size=12,
help="These periods can overlap."), help="These periods can overlap."),
'date_start': fields.date('Start of period', required=True, states={'done':[('readonly',True)]}), 'date_start': fields.date('Start of Period', required=True, states={'done':[('readonly',True)]}),
'date_stop': fields.date('End of period', required=True, states={'done':[('readonly',True)]}), 'date_stop': fields.date('End of Period', required=True, states={'done':[('readonly',True)]}),
'fiscalyear_id': fields.many2one('account.fiscalyear', 'Fiscal Year', required=True, states={'done':[('readonly',True)]}, select=True), 'fiscalyear_id': fields.many2one('account.fiscalyear', 'Fiscal Year', required=True, states={'done':[('readonly',True)]}, select=True),
'state': fields.selection([('draft','Draft'), ('done','Done')], 'Status', readonly=True) 'state': fields.selection([('draft','Draft'), ('done','Done')], 'Status', readonly=True)
} }
@ -595,8 +595,8 @@ class account_period(osv.osv):
return True return True
_constraints = [ _constraints = [
(_check_duration, 'Error ! The date duration of the Period(s) is invalid. ', ['date_stop']), (_check_duration, 'Error ! The duration of the Period(s) is/are invalid. ', ['date_stop']),
(_check_year_limit, 'Invalid period ! Some periods overlap or the date duration is not in the limit of the fiscal year. ', ['date_stop']) (_check_year_limit, 'Invalid period ! Some periods overlap or the date period is not in the scope of the fiscal year. ', ['date_stop'])
] ]
def next(self, cr, uid, period, step, context={}): def next(self, cr, uid, period, step, context={}):
@ -777,10 +777,10 @@ class account_move(osv.osv):
_constraints = [ _constraints = [
(_check_centralisation, (_check_centralisation,
'You can not create more than one move per period on centralized journal', 'You cannot create more than one move per period on centralized journal',
['journal_id']), ['journal_id']),
(_check_period_journal, (_check_period_journal,
'You can not create entries on different period/journal in the same move', 'You cannot create entries on different periods/journals in the same move',
['line_id']), ['line_id']),
] ]
def post(self, cr, uid, ids, context=None): def post(self, cr, uid, ids, context=None):
@ -799,7 +799,7 @@ class account_move(osv.osv):
cr.execute('update account_move set state=%s where id in ('+','.join(map(str,ids))+')', ('posted',)) cr.execute('update account_move set state=%s where id in ('+','.join(map(str,ids))+')', ('posted',))
else: else:
raise osv.except_osv(_('Integrity Error !'), _('You can not validate a non balanced entry !')) raise osv.except_osv(_('Integrity Error !'), _('You can not validate a non-balanced entry !'))
return True return True
def button_validate(self, cursor, user, ids, context=None): def button_validate(self, cursor, user, ids, context=None):
@ -808,7 +808,7 @@ class account_move(osv.osv):
def button_cancel(self, cr, uid, ids, context={}): def button_cancel(self, cr, uid, ids, context={}):
for line in self.browse(cr, uid, ids, context): for line in self.browse(cr, uid, ids, context):
if not line.journal_id.update_posted: if not line.journal_id.update_posted:
raise osv.except_osv(_('Error !'), _('You can not modify a posted entry of this journal !\nYou should mark the journal to allow canceling entries.')) raise osv.except_osv(_('Error !'), _('You can not modify a posted entry of this journal !\nYou should set the journal to allow cancelling entries if you want to do that.'))
if len(ids): if len(ids):
cr.execute('update account_move set state=%s where id in ('+','.join(map(str,ids))+')', ('draft',)) cr.execute('update account_move set state=%s where id in ('+','.join(map(str,ids))+')', ('draft',))
return True return True
@ -960,7 +960,7 @@ class account_move(osv.osv):
if line.account_id.currency_id: if line.account_id.currency_id:
if line.account_id.currency_id.id != line.currency_id.id and (line.account_id.currency_id.id != line.account_id.company_id.currency_id.id or line.currency_id): if line.account_id.currency_id.id != line.currency_id.id and (line.account_id.currency_id.id != line.account_id.company_id.currency_id.id or line.currency_id):
raise osv.except_osv(_('Error'), _("""Couldn't create move with currency different than the secondary currency of the account "%s - %s". Clear the secondary currency field of the account definition if you want to accept all currencies.""" % (line.account_id.code, line.account_id.name))) raise osv.except_osv(_('Error'), _("""Couldn't create move with currency different from the secondary currency of the account "%s - %s". Clear the secondary currency field of the account definition if you want to accept all currencies.""" % (line.account_id.code, line.account_id.name)))
if abs(amount) < 0.0001: if abs(amount) < 0.0001:
if not len(line_draft_ids): if not len(line_draft_ids):
@ -1024,7 +1024,7 @@ class account_move_reconcile(osv.osv):
_columns = { _columns = {
'name': fields.char('Name', size=64, required=True), 'name': fields.char('Name', size=64, required=True),
'type': fields.char('Type', size=16, required=True), 'type': fields.char('Type', size=16, required=True),
'line_id': fields.one2many('account.move.line', 'reconcile_id', 'Entry lines'), 'line_id': fields.one2many('account.move.line', 'reconcile_id', 'Entry Lines'),
'line_partial_ids': fields.one2many('account.move.line', 'reconcile_partial_id', 'Partial Entry lines'), 'line_partial_ids': fields.one2many('account.move.line', 'reconcile_partial_id', 'Partial Entry lines'),
'create_date': fields.date('Creation date', readonly=True), 'create_date': fields.date('Creation date', readonly=True),
} }
@ -1135,11 +1135,11 @@ class account_tax_code(osv.osv):
'sum': fields.function(_sum_year, method=True, string="Year Sum"), 'sum': fields.function(_sum_year, method=True, string="Year Sum"),
'sum_period': fields.function(_sum_period, method=True, string="Period Sum"), 'sum_period': fields.function(_sum_period, method=True, string="Period Sum"),
'parent_id': fields.many2one('account.tax.code', 'Parent Code', select=True), 'parent_id': fields.many2one('account.tax.code', 'Parent Code', select=True),
'child_ids': fields.one2many('account.tax.code', 'parent_id', 'Childs Codes'), 'child_ids': fields.one2many('account.tax.code', 'parent_id', 'Child Codes'),
'line_ids': fields.one2many('account.move.line', 'tax_code_id', 'Lines'), 'line_ids': fields.one2many('account.move.line', 'tax_code_id', 'Lines'),
'company_id': fields.many2one('res.company', 'Company', required=True), 'company_id': fields.many2one('res.company', 'Company', required=True),
'sign': fields.float('Sign for parent', required=True), 'sign': fields.float('Sign for parent', required=True),
'notprintable':fields.boolean("Not Printable in Invoice", help="Check this box if you don't want that any vat related to this Tax Code appears on invoices"), 'notprintable':fields.boolean("Not Printable in Invoice", help="Check this box if you don't want any VAT related to this Tax Code to appear on invoices"),
} }
@ -1193,24 +1193,24 @@ class account_tax(osv.osv):
_name = 'account.tax' _name = 'account.tax'
_description = 'Tax' _description = 'Tax'
_columns = { _columns = {
'name': fields.char('Tax Name', size=64, required=True, translate=True, help="This name will be used to be displayed on reports"), 'name': fields.char('Tax Name', size=64, required=True, translate=True, help="This name will be displayed on reports"),
'sequence': fields.integer('Sequence', required=True, help="The sequence field is used to order the taxes lines from the lowest sequences to the higher ones. The order is important if you have a tax that have several tax childs. In this case, the evaluation order is important."), '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."),
'amount': fields.float('Amount', required=True, digits=(14,4)), 'amount': fields.float('Amount', required=True, digits=(14,4)),
'active': fields.boolean('Active'), 'active': fields.boolean('Active'),
'type': fields.selection( [('percent','Percent'), ('fixed','Fixed'), ('none','None'), ('code','Python Code'),('balance','Balance')], 'Tax Type', required=True, 'type': fields.selection( [('percent','Percent'), ('fixed','Fixed'), ('none','None'), ('code','Python Code'),('balance','Balance')], 'Tax Type', required=True,
help="The computation method for the tax amount."), help="The computation method for the tax amount."),
'applicable_type': fields.selection( [('true','True'), ('code','Python Code')], 'Applicable Type', required=True, 'applicable_type': fields.selection( [('true','True'), ('code','Python Code')], 'Applicable Type', required=True,
help="If not applicable (computed through a Python code), the tax do not appears on the invoice."), help="If not applicable (computed through a Python code), the tax won't appear on the invoice."),
'domain':fields.char('Domain', size=32, help="This field is only used if you develop your own module allowing developpers to create specific taxes in a custom domain."), '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."),
'account_collected_id':fields.many2one('account.account', 'Invoice Tax Account'), 'account_collected_id':fields.many2one('account.account', 'Invoice Tax Account'),
'account_paid_id':fields.many2one('account.account', 'Refund Tax Account'), 'account_paid_id':fields.many2one('account.account', 'Refund Tax Account'),
'parent_id':fields.many2one('account.tax', 'Parent Tax Account', select=True), 'parent_id':fields.many2one('account.tax', 'Parent Tax Account', select=True),
'child_ids':fields.one2many('account.tax', 'parent_id', 'Childs Tax Account'), 'child_ids':fields.one2many('account.tax', 'parent_id', 'Child Tax Accounts'),
'child_depend':fields.boolean('Tax on Childs', help="Indicate if the tax computation is based on the value computed for the computation of child taxes or based on the total amount."), 'child_depend':fields.boolean('Tax on Children', help="Set if the tax computation is based on the computation of child taxes rather than on the total amount."),
'python_compute':fields.text('Python Code'), 'python_compute':fields.text('Python Code'),
'python_compute_inv':fields.text('Python Code (reverse)'), 'python_compute_inv':fields.text('Python Code (reverse)'),
'python_applicable':fields.text('Python Code'), 'python_applicable':fields.text('Python Code'),
'tax_group': fields.selection([('vat','VAT'),('other','Other')], 'Tax Group', help="If a default tax if given in the partner it only override taxes from account (or product) of the same group."), 'tax_group': fields.selection([('vat','VAT'),('other','Other')], 'Tax Group', help="If a default tax is given in the partner it only overrides taxes from accounts (or products) in the same group."),
# #
# Fields used for the VAT declaration # Fields used for the VAT declaration
@ -1229,7 +1229,7 @@ class account_tax(osv.osv):
'include_base_amount': fields.boolean('Include in base amount', help="Indicate if the amount of tax must be included in the base amount for the computation of the next taxes"), 'include_base_amount': fields.boolean('Include in base amount', help="Indicate if the amount of tax must be included in the base amount for the computation of the next taxes"),
'company_id': fields.many2one('res.company', 'Company', required=True), 'company_id': fields.many2one('res.company', 'Company', required=True),
'description': fields.char('Tax Code',size=32), 'description': fields.char('Tax Code',size=32),
'price_include': fields.boolean('Tax Included in Price', help="Check this is the price you use on the product and invoices is including this tax."), 'price_include': fields.boolean('Tax Included in Price', help="Check this if the price you use on the product and invoices includes this tax."),
'type_tax_use': fields.selection([('sale','Sale'),('purchase','Purchase'),('all','All')], 'Tax Application', required=True) 'type_tax_use': fields.selection([('sale','Sale'),('purchase','Purchase'),('all','All')], 'Tax Application', required=True)
} }
@ -1527,8 +1527,8 @@ class account_model_line(osv.osv):
_description = "Account Model Entries" _description = "Account Model Entries"
_columns = { _columns = {
'name': fields.char('Name', size=64, required=True), 'name': fields.char('Name', size=64, required=True),
'sequence': fields.integer('Sequence', required=True, help="The sequence field is used to order the resources from the lowest sequences to the higher ones"), 'sequence': fields.integer('Sequence', required=True, help="The sequence field is used to order the resources from lower sequences to higher ones"),
'quantity': fields.float('Quantity', digits=(16,2), help="The optionnal quantity on entries"), 'quantity': fields.float('Quantity', digits=(16,2), help="The optional quantity on entries"),
'debit': fields.float('Debit', digits=(16,2)), 'debit': fields.float('Debit', digits=(16,2)),
'credit': fields.float('Credit', digits=(16,2)), 'credit': fields.float('Credit', digits=(16,2)),
@ -1565,11 +1565,11 @@ class account_subscription(osv.osv):
_description = "Account Subscription" _description = "Account Subscription"
_columns = { _columns = {
'name': fields.char('Name', size=64, required=True), 'name': fields.char('Name', size=64, required=True),
'ref': fields.char('Ref.', size=16), 'ref': fields.char('Ref', size=16),
'model_id': fields.many2one('account.model', 'Model', required=True), 'model_id': fields.many2one('account.model', 'Model', required=True),
'date_start': fields.date('Starting date', required=True), 'date_start': fields.date('Start Date', required=True),
'period_total': fields.integer('Number of period', required=True), 'period_total': fields.integer('Number of Periods', required=True),
'period_nbr': fields.integer('Period', required=True), 'period_nbr': fields.integer('Period', required=True),
'period_type': fields.selection([('day','days'),('month','month'),('year','year')], 'Period Type', required=True), 'period_type': fields.selection([('day','days'),('month','month'),('year','year')], 'Period Type', required=True),
'state': fields.selection([('draft','Draft'),('running','Running'),('done','Done')], 'Status', required=True, readonly=True), 'state': fields.selection([('draft','Draft'),('running','Running'),('done','Done')], 'Status', required=True, readonly=True),
@ -1670,8 +1670,8 @@ class account_config_wizard(osv.osv_memory):
_columns = { _columns = {
'name':fields.char('Name', required=True, size=64, help="Name of the fiscal year as displayed on screens."), 'name':fields.char('Name', required=True, size=64, help="Name of the fiscal year as displayed on screens."),
'code':fields.char('Code', required=True, size=64, help="Name of the fiscal year as displayed in reports."), 'code':fields.char('Code', required=True, size=64, help="Name of the fiscal year as displayed in reports."),
'date1': fields.date('Starting Date', required=True), 'date1': fields.date('Start Date', required=True),
'date2': fields.date('Ending Date', required=True), 'date2': fields.date('End Date', required=True),
'period':fields.selection([('month','Month'),('3months','3 Months')], 'Periods', required=True), 'period':fields.selection([('month','Month'),('3months','3 Months')], 'Periods', required=True),
'charts' : fields.selection(_get_charts, 'Charts of Account',required=True) 'charts' : fields.selection(_get_charts, 'Charts of Account',required=True)
} }
@ -1758,7 +1758,7 @@ class account_account_template(osv.osv):
('closed','Closed'), ('closed','Closed'),
], 'Internal Type', required=True,), ], 'Internal Type', required=True,),
'user_type': fields.many2one('account.account.type', 'Account Type', required=True), 'user_type': fields.many2one('account.account.type', 'Account Type', required=True),
'reconcile': fields.boolean('Allow Reconciliation', help="Check this option if the user can make a reconciliation of the entries in this account."), 'reconcile': fields.boolean('Allow Reconciliation', help="Check this option if you want the user to reconcile entries in this account."),
'shortcut': fields.char('Shortcut', size=12), 'shortcut': fields.char('Shortcut', size=12),
'note': fields.text('Note'), 'note': fields.text('Note'),
'parent_id': fields.many2one('account.account.template','Parent Account Template', ondelete='cascade'), 'parent_id': fields.many2one('account.account.template','Parent Account Template', ondelete='cascade'),
@ -1811,9 +1811,9 @@ class account_tax_code_template(osv.osv):
'code': fields.char('Case Code', size=64), 'code': fields.char('Case Code', size=64),
'info': fields.text('Description'), 'info': fields.text('Description'),
'parent_id': fields.many2one('account.tax.code.template', 'Parent Code', select=True), 'parent_id': fields.many2one('account.tax.code.template', 'Parent Code', select=True),
'child_ids': fields.one2many('account.tax.code.template', 'parent_id', 'Childs Codes'), 'child_ids': fields.one2many('account.tax.code.template', 'parent_id', 'Child Codes'),
'sign': fields.float('Sign for parent', required=True), 'sign': fields.float('Sign for parent', required=True),
'notprintable':fields.boolean("Not Printable in Invoice", help="Check this box if you don't want that any vat related to this Tax Code appears on invoices"), 'notprintable':fields.boolean("Not Printable in Invoice", help="Check this box if you don't want any VAT related to this Tax Code to appear on invoices"),
} }
_defaults = { _defaults = {
@ -1875,7 +1875,7 @@ class account_tax_template(osv.osv):
_columns = { _columns = {
'chart_template_id': fields.many2one('account.chart.template', 'Chart Template', required=True), 'chart_template_id': fields.many2one('account.chart.template', 'Chart Template', required=True),
'name': fields.char('Tax Name', size=64, required=True), 'name': fields.char('Tax Name', size=64, required=True),
'sequence': fields.integer('Sequence', required=True, help="The sequence field is used to order the taxes lines from the lowest sequences to the higher ones. The order is important if you have a tax that have several tax children. In this case, the evaluation order is important."), '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."),
'amount': fields.float('Amount', required=True, digits=(14,4)), 'amount': fields.float('Amount', required=True, digits=(14,4)),
'type': fields.selection( [('percent','Percent'), ('fixed','Fixed'), ('none','None'), ('code','Python Code')], 'Tax Type', required=True), 'type': fields.selection( [('percent','Percent'), ('fixed','Fixed'), ('none','None'), ('code','Python Code')], 'Tax Type', required=True),
'applicable_type': fields.selection( [('true','True'), ('code','Python Code')], 'Applicable Type', required=True), 'applicable_type': fields.selection( [('true','True'), ('code','Python Code')], 'Applicable Type', required=True),
@ -1883,7 +1883,7 @@ class account_tax_template(osv.osv):
'account_collected_id':fields.many2one('account.account.template', 'Invoice Tax Account'), 'account_collected_id':fields.many2one('account.account.template', 'Invoice Tax Account'),
'account_paid_id':fields.many2one('account.account.template', 'Refund Tax Account'), 'account_paid_id':fields.many2one('account.account.template', 'Refund Tax Account'),
'parent_id':fields.many2one('account.tax.template', 'Parent Tax Account', select=True), 'parent_id':fields.many2one('account.tax.template', 'Parent Tax Account', select=True),
'child_depend':fields.boolean('Tax on Childs', help="Indicate if the tax computation is based on the value computed for the computation of child taxes or based on the total amount."), 'child_depend':fields.boolean('Tax on Children', help="Indicate if the tax computation is based on the value computed for the computation of child taxes or based on the total amount."),
'python_compute':fields.text('Python Code'), 'python_compute':fields.text('Python Code'),
'python_compute_inv':fields.text('Python Code (reverse)'), 'python_compute_inv':fields.text('Python Code (reverse)'),
'python_applicable':fields.text('Python Code'), 'python_applicable':fields.text('Python Code'),
@ -1903,9 +1903,9 @@ class account_tax_template(osv.osv):
'ref_tax_code_id': fields.many2one('account.tax.code.template', 'Refund Tax Code', help="Use this code for the VAT declaration."), 'ref_tax_code_id': fields.many2one('account.tax.code.template', 'Refund Tax Code', help="Use this code for the VAT declaration."),
'ref_base_sign': fields.float('Base Code Sign', help="Usually 1 or -1."), 'ref_base_sign': fields.float('Base Code Sign', help="Usually 1 or -1."),
'ref_tax_sign': fields.float('Tax Code Sign', help="Usually 1 or -1."), 'ref_tax_sign': fields.float('Tax Code Sign', help="Usually 1 or -1."),
'include_base_amount': fields.boolean('Include in base amount', help="Indicate if the amount of tax must be included in the base amount for the computation of the next taxes."), '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."),
'description': fields.char('Internal Name', size=32), 'description': fields.char('Internal Name', size=32),
'type_tax_use': fields.selection([('sale','Sale'),('purchase','Purchase')], 'Tax Use in') 'type_tax_use': fields.selection([('sale','Sale'),('purchase','Purchase')], 'Tax Use In')
} }
def name_get(self, cr, uid, ids, context={}): def name_get(self, cr, uid, ids, context={}):
@ -1951,15 +1951,15 @@ class account_fiscal_position_template(osv.osv):
_columns = { _columns = {
'name': fields.char('Fiscal Position Template', size=64, translate=True, required=True), 'name': fields.char('Fiscal Position Template', size=64, translate=True, required=True),
'chart_template_id': fields.many2one('account.chart.template', 'Chart Template', required=True), 'chart_template_id': fields.many2one('account.chart.template', 'Chart Template', required=True),
'account_ids': fields.one2many('account.fiscal.position.account.template', 'position_id', 'Accounts Mapping'), 'account_ids': fields.one2many('account.fiscal.position.account.template', 'position_id', 'Account Mapping'),
'tax_ids': fields.one2many('account.fiscal.position.tax.template', 'position_id', 'Taxes Mapping') 'tax_ids': fields.one2many('account.fiscal.position.tax.template', 'position_id', 'Tax Mapping')
} }
account_fiscal_position_template() account_fiscal_position_template()
class account_fiscal_position_tax_template(osv.osv): class account_fiscal_position_tax_template(osv.osv):
_name = 'account.fiscal.position.tax.template' _name = 'account.fiscal.position.tax.template'
_description = 'Fiscal Position Template Taxes Mapping' _description = 'Fiscal Position Template Tax Mapping'
_rec_name = 'position_id' _rec_name = 'position_id'
_columns = { _columns = {
@ -1972,7 +1972,7 @@ account_fiscal_position_tax_template()
class account_fiscal_position_account_template(osv.osv): class account_fiscal_position_account_template(osv.osv):
_name = 'account.fiscal.position.account.template' _name = 'account.fiscal.position.account.template'
_description = 'Fiscal Position Template Accounts Mapping' _description = 'Fiscal Position Template Account Mapping'
_rec_name = 'position_id' _rec_name = 'position_id'
_columns = { _columns = {
'position_id': fields.many2one('account.fiscal.position.template', 'Fiscal Position', required=True, ondelete='cascade'), 'position_id': fields.many2one('account.fiscal.position.template', 'Fiscal Position', required=True, ondelete='cascade'),
@ -1987,15 +1987,15 @@ account_fiscal_position_account_template()
class wizard_multi_charts_accounts(osv.osv_memory): class wizard_multi_charts_accounts(osv.osv_memory):
""" """
Create a new account chart for a company. Create a new account chart for a company.
Wizards ask: Wizards ask for:
* a company * a company
* an account chart template * an account chart template
* a number of digits for formatting code of non-view accounts * a number of digits for formatting code of non-view accounts
* a list of bank account owned by the company * a list of bank accounts owned by the company
Then, the wizard: Then, the wizard:
* generates all accounts from the template and assign them to the right company * generates all accounts from the template and assigns them to the right company
* generates all taxes and tax codes, changing account assignations * generates all taxes and tax codes, changing account assignations
* generates all accounting properties and assign correctly * generates all accounting properties and assigns them correctly
""" """
_name='wizard.multi.charts.accounts' _name='wizard.multi.charts.accounts'

View File

@ -82,7 +82,7 @@ class account_invoice(osv.osv):
tt = type2journal.get(type_inv, 'sale') tt = type2journal.get(type_inv, 'sale')
result = self.pool.get('account.analytic.journal').search(cr, uid, [('type','=',tt)], context=context) result = self.pool.get('account.analytic.journal').search(cr, uid, [('type','=',tt)], context=context)
if not result: if not result:
raise osv.except_osv(_('No Analytic Journal !'),_("You have to define an analytic journal of type '%s' !") % (tt,)) raise osv.except_osv(_('No Analytic Journal !'),_("You must define an analytic journal of type '%s' !") % (tt,))
return result[0] return result[0]
def _get_type(self, cr, uid, context=None): def _get_type(self, cr, uid, context=None):
@ -221,7 +221,7 @@ class account_invoice(osv.osv):
'payment_term': fields.many2one('account.payment.term', 'Payment Term',readonly=True, states={'draft':[('readonly',False)]}, 'payment_term': fields.many2one('account.payment.term', 'Payment Term',readonly=True, states={'draft':[('readonly',False)]},
help="If you use payment terms, the due date will be computed automatically at the generation "\ help="If you use payment terms, the due date will be computed automatically at the generation "\
"of accounting entries. If you keep the payment term and the due date empty, it means direct payment. "\ "of accounting entries. If you keep the payment term and the due date empty, it means direct payment. "\
"The payment term may compute several due dates: 50% now, 50% in one month."), "The payment term may compute several due dates, for example 50% now, 50% in one month."),
'period_id': fields.many2one('account.period', 'Force Period', domain=[('state','<>','done')], help="Keep empty to use the period of the validation date."), 'period_id': fields.many2one('account.period', 'Force Period', domain=[('state','<>','done')], help="Keep empty to use the period of the validation date."),
'account_id': fields.many2one('account.account', 'Account', required=True, readonly=True, states={'draft':[('readonly',False)]}, help="The partner account used for this invoice."), 'account_id': fields.many2one('account.account', 'Account', required=True, readonly=True, states={'draft':[('readonly',False)]}, help="The partner account used for this invoice."),
@ -295,7 +295,7 @@ class account_invoice(osv.osv):
if t['state'] in ('draft', 'cancel'): if t['state'] in ('draft', 'cancel'):
unlink_ids.append(t['id']) unlink_ids.append(t['id'])
else: else:
raise osv.except_osv(_('Invalid action !'), _('Cannot delete invoice(s) which are already opened or paid !')) raise osv.except_osv(_('Invalid action !'), _('Cannot delete invoice(s) that are already opened or paid !'))
osv.osv.unlink(self, cr, uid, unlink_ids, context=context) osv.osv.unlink(self, cr, uid, unlink_ids, context=context)
return True return True
@ -489,7 +489,7 @@ class account_invoice(osv.osv):
continue continue
if inv.type in ('in_invoice', 'in_refund') and abs(inv.check_total - inv.amount_total) >= (inv.currency_id.rounding/2.0): if inv.type in ('in_invoice', 'in_refund') and abs(inv.check_total - inv.amount_total) >= (inv.currency_id.rounding/2.0):
raise osv.except_osv(_('Bad total !'), _('Please verify the price of the invoice !\nThe real total does not match the computed total.')) raise osv.except_osv(_('Bad total !'), _('Please verify the price of the invoice !\nThe actual total does not match the computed total.'))
if not inv.date_invoice: if not inv.date_invoice:
self.write(cr, uid, [inv.id], {'date_invoice':time.strftime('%Y-%m-%d')}) self.write(cr, uid, [inv.id], {'date_invoice':time.strftime('%Y-%m-%d')})
company_currency = inv.company_id.currency_id.id company_currency = inv.company_id.currency_id.id
@ -511,7 +511,7 @@ class account_invoice(osv.osv):
key = (tax.tax_code_id.id, tax.base_code_id.id, tax.account_id.id) key = (tax.tax_code_id.id, tax.base_code_id.id, tax.account_id.id)
tax_key.append(key) tax_key.append(key)
if not key in compute_taxes: if not key in compute_taxes:
raise osv.except_osv(_('Warning !'), _('Global taxes defined, but not in invoice lines !')) raise osv.except_osv(_('Warning !'), _('Global taxes defined, but are not in invoice lines !'))
base = compute_taxes[key]['base'] base = compute_taxes[key]['base']
if abs(base - tax.base) > inv.company_id.currency_id.rounding: if abs(base - tax.base) > inv.company_id.currency_id.rounding:
raise osv.except_osv(_('Warning !'), _('Tax base different !\nClick on compute to update tax base')) raise osv.except_osv(_('Warning !'), _('Tax base different !\nClick on compute to update tax base'))
@ -1085,9 +1085,9 @@ class account_invoice_tax(osv.osv):
'manual': fields.boolean('Manual'), 'manual': fields.boolean('Manual'),
'sequence': fields.integer('Sequence'), 'sequence': fields.integer('Sequence'),
'base_code_id': fields.many2one('account.tax.code', 'Base Code', help="The case of the tax declaration."), 'base_code_id': fields.many2one('account.tax.code', 'Base Code', help="The account basis of the tax declaration."),
'base_amount': fields.float('Base Code Amount', digits=(16,2)), 'base_amount': fields.float('Base Code Amount', digits=(16,2)),
'tax_code_id': fields.many2one('account.tax.code', 'Tax Code', help="The case of the tax declaration."), 'tax_code_id': fields.many2one('account.tax.code', 'Tax Code', help="The tax basis of the tax declaration."),
'tax_amount': fields.float('Tax Code Amount', digits=(16,2)), 'tax_amount': fields.float('Tax Code Amount', digits=(16,2)),
} }
def base_change(self, cr, uid, ids, base): def base_change(self, cr, uid, ids, base):

View File

@ -29,8 +29,8 @@ class account_fiscal_position(osv.osv):
_columns = { _columns = {
'name': fields.char('Fiscal Position', size=64, translate=True, required=True), 'name': fields.char('Fiscal Position', size=64, translate=True, required=True),
'company_id': fields.many2one('res.company', 'Company'), 'company_id': fields.many2one('res.company', 'Company'),
'account_ids': fields.one2many('account.fiscal.position.account', 'position_id', 'Accounts Mapping'), 'account_ids': fields.one2many('account.fiscal.position.account', 'position_id', 'Account Mapping'),
'tax_ids': fields.one2many('account.fiscal.position.tax', 'position_id', 'Taxes Mapping') 'tax_ids': fields.one2many('account.fiscal.position.tax', 'position_id', 'Tax Mapping')
} }
def map_tax(self, cr, uid, fposition_id, taxes, context={}): def map_tax(self, cr, uid, fposition_id, taxes, context={}):
@ -139,7 +139,7 @@ class res_partner(osv.osv):
return [('id','in',map(lambda x:x[0], res))] return [('id','in',map(lambda x:x[0], res))]
_columns = { _columns = {
'credit': fields.function(_credit_debit_get, fnct_search=_credit_search, method=True, string='Total Receivable', multi='dc', help="Total amount this customer owns you."), 'credit': fields.function(_credit_debit_get, fnct_search=_credit_search, method=True, string='Total Receivable', multi='dc', help="Total amount this customer owes you."),
'debit': fields.function(_credit_debit_get, fnct_search=_debit_search, method=True, string='Total Payable', multi='dc', help="Total amount you have to pay to this supplier."), 'debit': fields.function(_credit_debit_get, fnct_search=_debit_search, method=True, string='Total Payable', multi='dc', help="Total amount you have to pay to this supplier."),
'debit_limit': fields.float('Payable Limit'), 'debit_limit': fields.float('Payable Limit'),
'property_account_payable': fields.property( 'property_account_payable': fields.property(
@ -150,7 +150,7 @@ class res_partner(osv.osv):
method=True, method=True,
view_load=True, view_load=True,
domain="[('type', '=', 'payable')]", domain="[('type', '=', 'payable')]",
help="This account will be used, instead of the default one, as the payable account for the current partner", help="This account will be used instead of the default one as the payable account for the current partner",
required=True), required=True),
'property_account_receivable': fields.property( 'property_account_receivable': fields.property(
'account.account', 'account.account',
@ -160,7 +160,7 @@ class res_partner(osv.osv):
method=True, method=True,
view_load=True, view_load=True,
domain="[('type', '=', 'receivable')]", domain="[('type', '=', 'receivable')]",
help="This account will be used, instead of the default one, as the receivable account for the current partner", help="This account will be used instead of the default one as the receivable account for the current partner",
required=True), required=True),
'property_account_position': fields.property( 'property_account_position': fields.property(
'account.fiscal.position', 'account.fiscal.position',
@ -178,7 +178,7 @@ class res_partner(osv.osv):
string ='Payment Term', string ='Payment Term',
method=True, method=True,
view_load=True, view_load=True,
help="This payment term will be used, instead of the default one, for the current partner"), help="This payment term will be used instead of the default one for the current partner"),
'ref_companies': fields.one2many('res.company', 'partner_id', 'ref_companies': fields.one2many('res.company', 'partner_id',
'Companies that refers to partner'), 'Companies that refers to partner'),
} }

View File

@ -12,21 +12,21 @@
<field name="company_id"/> <field name="company_id"/>
<newline/> <newline/>
<field name="tax_ids" colspan="4"> <field name="tax_ids" colspan="4">
<tree string="Taxes Mapping" editable="bottom"> <tree string="Tax Mapping" editable="bottom">
<field name="tax_src_id" domain="[('parent_id','=',False)]"/> <field name="tax_src_id" domain="[('parent_id','=',False)]"/>
<field name="tax_dest_id" domain="[('parent_id','=',False)]"/> <field name="tax_dest_id" domain="[('parent_id','=',False)]"/>
</tree> </tree>
<form string="Taxes Mapping"> <form string="Tax Mapping">
<field name="tax_src_id" domain="[('parent_id','=',False)]"/> <field name="tax_src_id" domain="[('parent_id','=',False)]"/>
<field name="tax_dest_id" domain="[('parent_id','=',False)]"/> <field name="tax_dest_id" domain="[('parent_id','=',False)]"/>
</form> </form>
</field> </field>
<field name="account_ids" colspan="4"> <field name="account_ids" colspan="4">
<tree string="Accounts Mapping" editable="bottom"> <tree string="Account Mapping" editable="bottom">
<field name="account_src_id"/> <field name="account_src_id"/>
<field name="account_dest_id"/> <field name="account_dest_id"/>
</tree> </tree>
<form string="Accounts Mapping"> <form string="Account Mapping">
<field name="account_src_id"/> <field name="account_src_id"/>
<field name="account_dest_id"/> <field name="account_dest_id"/>
</form> </form>

View File

@ -34,7 +34,7 @@ class product_category(osv.osv):
string="Income Account", string="Income Account",
method=True, method=True,
view_load=True, view_load=True,
help="This account will be used, instead of the default one, to value incoming stock for the current product category"), help="This account will be used instead of the default one to value incoming stock for the current product category"),
'property_account_expense_categ': fields.property( 'property_account_expense_categ': fields.property(
'account.account', 'account.account',
type='many2one', type='many2one',
@ -42,7 +42,7 @@ class product_category(osv.osv):
string="Expense Account", string="Expense Account",
method=True, method=True,
view_load=True, view_load=True,
help="This account will be used, instead of the default one, to value outgoing stock for the current product category"), help="This account will be used instead of the default one to value outgoing stock for the current product category"),
} }
product_category() product_category()
@ -65,7 +65,7 @@ class product_template(osv.osv):
string="Income Account", string="Income Account",
method=True, method=True,
view_load=True, view_load=True,
help="This account will be used, instead of the default one, to value incoming stock for the current product"), help="This account will be used instead of the default one to value incoming stock for the current product"),
'property_account_expense': fields.property( 'property_account_expense': fields.property(
'account.account', 'account.account',
type='many2one', type='many2one',
@ -73,7 +73,7 @@ class product_template(osv.osv):
string="Expense Account", string="Expense Account",
method=True, method=True,
view_load=True, view_load=True,
help="This account will be used, instead of the default one, to value outgoing stock for the current product"), help="This account will be used instead of the default one to value outgoing stock for the current product"),
} }
product_template() product_template()

View File

@ -10,7 +10,7 @@
<notebook position="inside"> <notebook position="inside">
<page string="Accounting"> <page string="Accounting">
<separator string="Sales Properties" colspan="2"/> <separator string="Sales Properties" colspan="2"/>
<separator string="Purchases Properties" colspan="2"/> <separator string="Purchase Properties" colspan="2"/>
<field name="property_account_income" attrs="{'readonly':[('sale_ok','=',0)]}" /> <field name="property_account_income" attrs="{'readonly':[('sale_ok','=',0)]}" />
<field name="property_account_expense" attrs="{'readonly':[('purchase_ok','=',0)]}" /> <field name="property_account_expense" attrs="{'readonly':[('purchase_ok','=',0)]}" />
@ -32,7 +32,7 @@
<notebook position="inside"> <notebook position="inside">
<page string="Accounting"> <page string="Accounting">
<separator string="Sales Properties" colspan="2"/> <separator string="Sales Properties" colspan="2"/>
<separator string="Purchases Properties" colspan="2"/> <separator string="Purchase Properties" colspan="2"/>
<field name="property_account_income"/> <field name="property_account_income"/>
<field name="property_account_expense"/> <field name="property_account_expense"/>
<field name="supplier_taxes_id"/> <field name="supplier_taxes_id"/>

View File

@ -23,7 +23,7 @@
<field name="code">102</field> <field name="code">102</field>
</record> </record>
<record id="analytic_journal_trainings" model="account.analytic.account"> <record id="analytic_journal_trainings" model="account.analytic.account">
<field name="name">Trainings</field> <field name="name">Training</field>
<field name="code">4</field> <field name="code">4</field>
<field name="parent_id" ref="analytic_internal"/> <field name="parent_id" ref="analytic_internal"/>
</record> </record>
@ -68,7 +68,7 @@
<field name="parent_id" ref="analytic_our_super_product"/> <field name="parent_id" ref="analytic_our_super_product"/>
</record> </record>
<record id="analytic_super_product_trainings" model="account.analytic.account"> <record id="analytic_super_product_trainings" model="account.analytic.account">
<field name="name">Trainings</field> <field name="name">Training</field>
<field name="code">5</field> <field name="code">5</field>
<field name="parent_id" ref="analytic_our_super_product"/> <field name="parent_id" ref="analytic_our_super_product"/>
</record> </record>
@ -179,7 +179,7 @@
<field name="parent_id" ref="analytic_project_2"/> <field name="parent_id" ref="analytic_project_2"/>
</record> </record>
<record id="analytic_project_1_trainings" model="account.analytic.account"> <record id="analytic_project_1_trainings" model="account.analytic.account">
<field name="name">Trainings</field> <field name="name">Training</field>
<field name="code">1</field> <field name="code">1</field>
<field name="parent_id" ref="analytic_project_1"/> <field name="parent_id" ref="analytic_project_1"/>
</record> </record>

View File

@ -124,21 +124,21 @@ class account_analytic_account(osv.osv):
return result return result
_columns = { _columns = {
'name' : fields.char('Account name', size=64, required=True), 'name' : fields.char('Account Name', size=64, required=True),
'complete_name': fields.function(_complete_name_calc, method=True, type='char', string='Account Name'), 'complete_name': fields.function(_complete_name_calc, method=True, type='char', string='Full Account Name'),
'code' : fields.char('Account code', size=24), 'code' : fields.char('Account Code', size=24),
'active' : fields.boolean('Active'), 'active' : fields.boolean('Active'),
'type': fields.selection([('view','View'), ('normal','Normal')], 'Account type'), 'type': fields.selection([('view','View'), ('normal','Normal')], 'Account Type'),
'description' : fields.text('Description'), 'description' : fields.text('Description'),
'parent_id': fields.many2one('account.analytic.account', 'Parent analytic account', select=2), 'parent_id': fields.many2one('account.analytic.account', 'Parent Analytic Account', select=2),
'child_ids': fields.one2many('account.analytic.account', 'parent_id', 'Childs Accounts'), 'child_ids': fields.one2many('account.analytic.account', 'parent_id', 'Child Accounts'),
'line_ids': fields.one2many('account.analytic.line', 'account_id', 'Analytic entries'), 'line_ids': fields.one2many('account.analytic.line', 'account_id', 'Analytic Entries'),
'balance' : fields.function(_balance_calc, method=True, type='float', string='Balance'), 'balance' : fields.function(_balance_calc, method=True, type='float', string='Balance'),
'debit' : fields.function(_debit_calc, method=True, type='float', string='Debit'), 'debit' : fields.function(_debit_calc, method=True, type='float', string='Debit'),
'credit' : fields.function(_credit_calc, method=True, type='float', string='Credit'), 'credit' : fields.function(_credit_calc, method=True, type='float', string='Credit'),
'quantity': fields.function(_quantity_calc, method=True, type='float', string='Quantity'), 'quantity': fields.function(_quantity_calc, method=True, type='float', string='Quantity'),
'quantity_max': fields.float('Maximal quantity'), 'quantity_max': fields.float('Maximum Quantity'),
'partner_id' : fields.many2one('res.partner', 'Associated partner'), 'partner_id' : fields.many2one('res.partner', 'Associated Partner'),
'contact_id' : fields.many2one('res.partner.address', 'Contact'), 'contact_id' : fields.many2one('res.partner.address', 'Contact'),
'user_id' : fields.many2one('res.users', 'Account Manager'), 'user_id' : fields.many2one('res.users', 'Account Manager'),
'date_start': fields.date('Date Start'), 'date_start': fields.date('Date Start'),

View File

@ -39,7 +39,7 @@ def _remove_entries(self, cr, uid, data, context):
pool = pooler.get_pool(cr.dbname) pool = pooler.get_pool(cr.dbname)
data_fyear = pool.get('account.fiscalyear').browse(cr,uid,data['form']['fyear_id']) data_fyear = pool.get('account.fiscalyear').browse(cr,uid,data['form']['fyear_id'])
if not data_fyear.end_journal_period_id: if not data_fyear.end_journal_period_id:
raise wizard.except_wizard(_('Error'), _('No journal for ending writings have been defined for the fiscal year')) raise wizard.except_wizard(_('Error'), _('No journal for ending writing has been defined for the fiscal year'))
period_journal = data_fyear.end_journal_period_id period_journal = data_fyear.end_journal_period_id
ids_move = pool.get('account.move').search(cr,uid,[('journal_id','=',period_journal.journal_id.id),('period_id','=',period_journal.period_id.id)]) ids_move = pool.get('account.move').search(cr,uid,[('journal_id','=',period_journal.journal_id.id),('period_id','=',period_journal.period_id.id)])
if ids_move: if ids_move:

View File

@ -41,7 +41,7 @@ For example, you can define the following analytic structure:
Here, we have two plans: Projects and Salesman. An invoice line must Here, we have two plans: Projects and Salesman. An invoice line must
be able to write analytic entries in the 2 plans: SubProj 1.1 and be able to write analytic entries in the 2 plans: SubProj 1.1 and
Fabien. The amount can also be splitted. The following example is for Fabien. The amount can also be split. The following example is for
an invoice that touches the two subproject and assigned to one salesman: an invoice that touches the two subproject and assigned to one salesman:
Plan1: Plan1:

View File

@ -156,16 +156,16 @@ class account_report(osv.osv):
'sequence': fields.integer('Sequence'), 'sequence': fields.integer('Sequence'),
'code': fields.char('Code', size=64, required=True), 'code': fields.char('Code', size=64, required=True),
'type': fields.selection([ 'type': fields.selection([
('fiscal', 'Fiscal statement'), ('fiscal', 'Fiscal Statement'),
('indicator','Indicator'), ('indicator','Indicator'),
('view','View'), ('view','View'),
('other','Others')], ('other','Others')],
'Type', required=True), 'Type', required=True),
'expression': fields.char('Expression', size=240, required=True), 'expression': fields.char('Expression', size=240, required=True),
'badness_limit' :fields.float('Badness Indicator Limit', digits=(16,2),help='This Value depicts the limit of badness.'), 'badness_limit' :fields.float('Badness Indicator Limit', digits=(16,2),help='This Value sets the limit of badness.'),
'goodness_limit' :fields.float('Goodness Indicator Limit', digits=(16,2),help='This Value depicts the limit of goodness.'), 'goodness_limit' :fields.float('Goodness Indicator Limit', digits=(16,2),help='This Value sets the limit of goodness.'),
'parent_id': fields.many2one('account.report.report', 'Parent'), 'parent_id': fields.many2one('account.report.report', 'Parent'),
'child_ids': fields.one2many('account.report.report', 'parent_id', 'Childs'), 'child_ids': fields.one2many('account.report.report', 'parent_id', 'Children'),
'note': fields.text('Note'), 'note': fields.text('Note'),
'amount': fields.function(_amount_get, method=True, string='Value'), 'amount': fields.function(_amount_get, method=True, string='Value'),
'status': fields.function(_amount_get, 'status': fields.function(_amount_get,
@ -179,8 +179,8 @@ class account_report(osv.osv):
('very good', 'Very Good') ('very good', 'Very Good')
], ],
string='Status'), string='Status'),
'disp_tree':fields.boolean('Display Tree',help='When the indicators will be printed, if one indicator is set with this field to True, then it will display one more graph with all its children in tree'), 'disp_tree':fields.boolean('Display Tree',help='When the indicators are printed, if one indicator is set with this field to True, then it will display one more graphs with all its children in tree'),
'disp_graph':fields.boolean('Display as a Graph',help='If the field is set to True,information will be printed as a Graph; as an array otherwise.'), 'disp_graph':fields.boolean('Display As Graph',help='If the field is set to True, information will be printed as a Graph, otherwise as an array.'),
# 'style': fields.selection(_style, 'Style', required=True), # 'style': fields.selection(_style, 'Style', required=True),
# 'color_font' : fields.selection(_color, 'Font Color', help="Font Color for the report"), # 'color_font' : fields.selection(_color, 'Font Color', help="Font Color for the report"),
# 'color_back' : fields.selection(_color, 'Back Color') # 'color_back' : fields.selection(_color, 'Back Color')

View File

@ -146,7 +146,7 @@
<menuitem action="action_account_report_tree_view_indicator" id="menu_action_account_report_tree_view_indicator" parent="account_report.menu_action_account_report_tree_view"/> <menuitem action="action_account_report_tree_view_indicator" id="menu_action_account_report_tree_view_indicator" parent="account_report.menu_action_account_report_tree_view"/>
<record id="action_account_report_tree_view_other" model="ir.actions.act_window"> <record id="action_account_report_tree_view_other" model="ir.actions.act_window">
<field name="name">Others reportings</field> <field name="name">Other reports</field>
<field name="res_model">account.fiscalyear</field> <field name="res_model">account.fiscalyear</field>
<field name="view_type">tree</field> <field name="view_type">tree</field>
<field name="view_id" ref="view_account_report_tree"/> <field name="view_id" ref="view_account_report_tree"/>

View File

@ -94,7 +94,7 @@ class account_report_bs(osv.osv):
'color_back' : fields.many2one('color.rml','Back Color'), 'color_back' : fields.many2one('color.rml','Back Color'),
'font_style' : fields.selection(_font, 'Font'), 'font_style' : fields.selection(_font, 'Font'),
'parent_id': fields.many2one('account.report.bs', 'Parent'), 'parent_id': fields.many2one('account.report.bs', 'Parent'),
'child_id': fields.one2many('account.report.bs', 'parent_id', 'Childs'), 'child_id': fields.one2many('account.report.bs', 'parent_id', 'Children'),
'report_type' : fields.selection([('only_obj', 'Report Objects Only'),('with_account', 'Report Objects With Accounts'),('acc_with_child', 'Report Objects With Accounts and child of Accounts')],"Report Type") 'report_type' : fields.selection([('only_obj', 'Report Objects Only'),('with_account', 'Report Objects With Accounts'),('acc_with_child', 'Report Objects With Accounts and child of Accounts')],"Report Type")
} }
_defaults = { _defaults = {

View File

@ -26,8 +26,8 @@
'version': '1.0', 'version': '1.0',
'category': 'Generic Modules/Accounting', 'category': 'Generic Modules/Accounting',
'description': """ 'description': """
India Accounting module includes all the basic requirenment of India Accounting module includes all the basic requirements of
Basic Accounting, plus new things which available are: Basic Accounting, plus new things that are available:
* New Invoice - (Local, Retail) * New Invoice - (Local, Retail)
* Invoice Report * Invoice Report
* Tax structure * Tax structure

View File

@ -26,7 +26,7 @@
'version': '1.0', 'version': '1.0',
'category': 'Generic Modules/Base', 'category': 'Generic Modules/Base',
'description': """ 'description': """
This module can be used by developpers to automatically publish their modules This module can be used by developers to automatically publish their modules
in a few click to the following websites: in a few click to the following websites:
* http://OpenERP.com, section module * http://OpenERP.com, section module
* http://TinyForge.org * http://TinyForge.org

View File

@ -59,10 +59,10 @@ class crm_case_section(osv.osv):
'code': fields.char('Section Code',size=8), 'code': fields.char('Section Code',size=8),
'active': fields.boolean('Active'), 'active': fields.boolean('Active'),
'sequence': fields.integer('Sequence'), 'sequence': fields.integer('Sequence'),
'user_id': fields.many2one('res.users', 'Responsible'), 'user_id': fields.many2one('res.users', 'Responsible User'),
'reply_to': fields.char('Reply-To', size=64, help="The email address wich is the 'Reply-To' of all email sent by Open ERP for cases in this section"), 'reply_to': fields.char('Reply-To', size=64, help="The email address put in the 'Reply-To' of all emails sent by Open ERP about cases in this section"),
'parent_id': fields.many2one('crm.case.section', 'Parent Section'), 'parent_id': fields.many2one('crm.case.section', 'Parent Section'),
'child_ids': fields.one2many('crm.case.section', 'parent_id', 'Childs Sections'), 'child_ids': fields.one2many('crm.case.section', 'parent_id', 'Child Sections'),
} }
_defaults = { _defaults = {
'active': lambda *a: 1, 'active': lambda *a: 1,

View File

@ -32,7 +32,7 @@ and requests. It manages key tasks such as communication,
identification, prioritization, assignment, resolution and notification. identification, prioritization, assignment, resolution and notification.
This module provide screens like: jobs hiring process, leads, business This module provide screens like: jobs hiring process, leads, business
opportunities, fund raising trackings, support & helpdesk, calendar of opportunities, fund raising tracking, support & helpdesk, calendar of
meetings, eso. meetings, eso.
""", """,
'author': 'Tiny', 'author': 'Tiny',

View File

@ -196,11 +196,11 @@ partner()
class crm_segmentation(osv.osv): class crm_segmentation(osv.osv):
_inherit="crm.segmentation" _inherit="crm.segmentation"
_columns={ _columns={
"answer_yes": fields.many2many("crm_profiling.answer","profile_question_yes_rel","profile","answer","Inclued answers"), "answer_yes": fields.many2many("crm_profiling.answer","profile_question_yes_rel","profile","answer","Included Answers"),
"answer_no": fields.many2many("crm_profiling.answer","profile_question_no_rel","profile","answer","Excluded answers"), "answer_no": fields.many2many("crm_profiling.answer","profile_question_no_rel","profile","answer","Excluded Answers"),
'parent_id': fields.many2one('crm.segmentation', 'Parent Profile'), 'parent_id': fields.many2one('crm.segmentation', 'Parent Profile'),
'child_ids': fields.one2many('crm.segmentation', 'parent_id', 'Childs profile'), 'child_ids': fields.one2many('crm.segmentation', 'parent_id', 'Child Profiles'),
'profiling_active': fields.boolean('Use The Profiling Rules', help='Check if you want to use this tab as part of the segmentation rule. If not checked, the criteria beneath will be ignored') 'profiling_active': fields.boolean('Use The Profiling Rules', help='Check this box if you want to use this tab as part of the segmentation rule. If not checked, the criteria beneath will be ignored')
} }
_constraints = [ _constraints = [
(orm.orm.check_recursion, 'Error ! You can not create recursive profiles.', ['parent_id']) (orm.orm.check_recursion, 'Error ! You can not create recursive profiles.', ['parent_id'])

View File

@ -25,7 +25,7 @@
'name': 'Carriers and deliveries', 'name': 'Carriers and deliveries',
'version': '1.0', 'version': '1.0',
'category': 'Generic Modules/Sales & Purchases', 'category': 'Generic Modules/Sales & Purchases',
'description': """Allows to add delivery methods in sales order and packing. You can define your own carrier and delivery grids for prices. When creating invoices from pickings, Open ERP is able to add and compute the shipping line.""", 'description': """Allows you to add delivery methods in sales orders and packing. You can define your own carrier and delivery grids for prices. When creating invoices from picking, Open ERP is able to add and compute the shipping line.""",
'author': 'Tiny', 'author': 'Tiny',
'depends': ['sale', 'purchase', 'stock'], 'depends': ['sale', 'purchase', 'stock'],
'init_xml': ['delivery_data.xml'], 'init_xml': ['delivery_data.xml'],

View File

@ -158,7 +158,7 @@
</record> </record>
<record id="action_picking_tree4" model="ir.actions.act_window"> <record id="action_picking_tree4" model="ir.actions.act_window">
<field name="name">Packings to be invoiced</field> <field name="name">Packing to be invoiced</field>
<field name="res_model">stock.picking</field> <field name="res_model">stock.picking</field>
<field name="type">ir.actions.act_window</field> <field name="type">ir.actions.act_window</field>
<field name="view_type">form</field> <field name="view_type">form</field>

View File

@ -32,7 +32,7 @@ class res_partner(osv.osv):
string="Delivery Method", string="Delivery Method",
method=True, method=True,
view_load=True, view_load=True,
help="This delivery method will be used when invoicing from packings."), help="This delivery method will be used when invoicing from packing."),
} }
res_partner() res_partner()

View File

@ -27,7 +27,7 @@ from osv import fields,osv
class sale_order(osv.osv): class sale_order(osv.osv):
_inherit = 'sale.order' _inherit = 'sale.order'
_columns = { _columns = {
'carrier_id':fields.many2one("delivery.carrier","Delivery method", help="Complete this field if you plan to invoice the shipping based on packings made."), 'carrier_id':fields.many2one("delivery.carrier","Delivery method", help="Complete this field if you plan to invoice the shipping based on packing."),
'id': fields.integer('ID', readonly=True,invisible=True), 'id': fields.integer('ID', readonly=True,invisible=True),
} }

View File

@ -217,23 +217,23 @@ class document_directory(osv.osv):
'create_date': fields.datetime('Date Created', readonly=True), 'create_date': fields.datetime('Date Created', readonly=True),
'create_uid': fields.many2one('res.users', 'Creator', readonly=True), 'create_uid': fields.many2one('res.users', 'Creator', readonly=True),
'file_type': fields.char('Content Type', size=32), 'file_type': fields.char('Content Type', size=32),
'domain': fields.char('Domain', size=128, help="Use a domain if you want to apply an automatic filter on visible ressources."), 'domain': fields.char('Domain', size=128, help="Use a domain if you want to apply an automatic filter on visible resources."),
'user_id': fields.many2one('res.users', 'Owner'), 'user_id': fields.many2one('res.users', 'Owner'),
'group_ids': fields.many2many('res.groups', 'document_directory_group_rel', 'item_id', 'group_id', 'Groups'), 'group_ids': fields.many2many('res.groups', 'document_directory_group_rel', 'item_id', 'group_id', 'Groups'),
'parent_id': fields.many2one('document.directory', 'Parent Item'), 'parent_id': fields.many2one('document.directory', 'Parent Item'),
'child_ids': fields.one2many('document.directory', 'parent_id', 'Childs'), 'child_ids': fields.one2many('document.directory', 'parent_id', 'Children'),
'file_ids': fields.one2many('ir.attachment', 'parent_id', 'Files'), 'file_ids': fields.one2many('ir.attachment', 'parent_id', 'Files'),
'content_ids': fields.one2many('document.directory.content', 'directory_id', 'Virtual Files'), 'content_ids': fields.one2many('document.directory.content', 'directory_id', 'Virtual Files'),
'type': fields.selection([('directory','Static Directory'),('ressource','Other Ressources')], 'Type', required=True), 'type': fields.selection([('directory','Static Directory'),('ressource','Other Resources')], 'Type', required=True),
'ressource_type_id': fields.many2one('ir.model', 'Directories Mapped to Objects', 'ressource_type_id': fields.many2one('ir.model', 'Directories Mapped to Objects',
help="Select an object here and Open ERP will create a mapping for each of these " \ help="Select an object here and Open ERP will create a mapping for each of these " \
"objects, using the given domain, when browsing through FTP."), "objects, using the given domain, when browsing through FTP."),
'ressource_parent_type_id': fields.many2one('ir.model', 'Parent Model', 'ressource_parent_type_id': fields.many2one('ir.model', 'Parent Model',
help="If you put an object here, this directory template will appear bellow all of these objects. " \ help="If you put an object here, this directory template will appear bellow all of these objects. " \
"Don't put a parent directory if you select a parent model."), "Don't put a parent directory if you select a parent model."),
'ressource_id': fields.integer('Ressource ID'), 'ressource_id': fields.integer('Resource ID'),
'ressource_tree': fields.boolean('Tree Structure', 'ressource_tree': fields.boolean('Tree Structure',
help="Check this if you want to use the same tree structure than the selected object in the system."), help="Check this if you want to use the same tree structure as the object selected in the system."),
} }
_defaults = { _defaults = {
'user_id': lambda self,cr,uid,ctx: uid, 'user_id': lambda self,cr,uid,ctx: uid,

View File

@ -87,8 +87,8 @@ class hr_employee_category(osv.osv):
_columns = { _columns = {
'name' : fields.char("Category", size=64, required=True), 'name' : fields.char("Category", size=64, required=True),
'parent_id': fields.many2one('hr.employee.category', 'Parent category', select=True), 'parent_id': fields.many2one('hr.employee.category', 'Parent Category', select=True),
'child_ids': fields.one2many('hr.employee.category', 'parent_id', 'Childs Categories') 'child_ids': fields.one2many('hr.employee.category', 'parent_id', 'Child Categories')
} }
def _check_recursion(self, cr, uid, ids): def _check_recursion(self, cr, uid, ids):

View File

@ -29,7 +29,7 @@ class hr_department(osv.osv):
'name': fields.char('Department Name', size=64, required=True), 'name': fields.char('Department Name', size=64, required=True),
'company_id': fields.many2one('res.company', 'Company', select=True, required=True), 'company_id': fields.many2one('res.company', 'Company', select=True, required=True),
'parent_id': fields.many2one('hr.department', 'Parent Department', select=True), 'parent_id': fields.many2one('hr.department', 'Parent Department', select=True),
'child_ids': fields.one2many('hr.department', 'parent_id', 'Childs Departments'), 'child_ids': fields.one2many('hr.department', 'parent_id', 'Child Departments'),
'note': fields.text('Note'), 'note': fields.text('Note'),
'manager_id': fields.many2one('res.users', 'Manager', required=True), 'manager_id': fields.many2one('res.users', 'Manager', required=True),
'member_ids': fields.many2many('res.users', 'hr_department_user_rel', 'department_id', 'user_id', 'Members'), 'member_ids': fields.many2many('res.users', 'hr_department_user_rel', 'department_id', 'user_id', 'Members'),

View File

@ -22,7 +22,7 @@
<field name="standard_price">30.0</field> <field name="standard_price">30.0</field>
<field name="uom_id" ref="uom_hour"/> <field name="uom_id" ref="uom_hour"/>
<field name="uom_po_id" ref="uom_hour"/> <field name="uom_po_id" ref="uom_hour"/>
<field name="name">Consultancy - Senior Developper</field> <field name="name">Consultancy - Senior Developer</field>
<field name="categ_id" ref="product.product_category_10"/> <field name="categ_id" ref="product.product_category_10"/>
<field name="type">service</field> <field name="type">service</field>
<field name="supply_method">produce</field> <field name="supply_method">produce</field>

View File

@ -108,8 +108,8 @@ class mrp_routing(osv.osv):
'workcenter_lines': fields.one2many('mrp.routing.workcenter', 'routing_id', 'Workcenters'), 'workcenter_lines': fields.one2many('mrp.routing.workcenter', 'routing_id', 'Workcenters'),
'location_id': fields.many2one('stock.location', 'Production Location', 'location_id': fields.many2one('stock.location', 'Production Location',
help="Keep empty if you produce at the location where the finnished products are needed." \ help="Keep empty if you produce at the location where the finished products are needed." \
"Put a location if you produce at a fixed location. This can be a partner location " \ "Set a location if you produce at a fixed location. This can be a partner location " \
"if you subcontract the manufacturing operations." "if you subcontract the manufacturing operations."
), ),
} }
@ -192,7 +192,7 @@ class mrp_bom(osv.osv):
'product_efficiency': fields.float('Product Efficiency', required=True, help="Efficiency on the production. A factor of 0.9 means a loss of 10% in the production."), 'product_efficiency': fields.float('Product Efficiency', required=True, help="Efficiency on the production. A factor of 0.9 means a loss of 10% in the production."),
'bom_lines': fields.one2many('mrp.bom', 'bom_id', 'BoM Lines'), 'bom_lines': fields.one2many('mrp.bom', 'bom_id', 'BoM Lines'),
'bom_id': fields.many2one('mrp.bom', 'Parent BoM', ondelete='cascade', select=True), 'bom_id': fields.many2one('mrp.bom', 'Parent BoM', ondelete='cascade', select=True),
'routing_id': fields.many2one('mrp.routing', 'Routing', help="The list of operations (list of workcenters) to produce the finnished product. The routing is mainly used to compute workcenter costs during operations and to plan futur loads on workcenters based on production plannification."), 'routing_id': fields.many2one('mrp.routing', 'Routing', help="The list of operations (list of workcenters) to produce the finished product. The routing is mainly used to compute workcenter costs during operations and to plan futur loads on workcenters based on production plannification."),
'property_ids': fields.many2many('mrp.property', 'mrp_bom_property_rel', 'bom_id','property_id', 'Properties'), 'property_ids': fields.many2many('mrp.property', 'mrp_bom_property_rel', 'bom_id','property_id', 'Properties'),
'revision_ids': fields.one2many('mrp.bom.revision', 'bom_id', 'BoM Revisions'), 'revision_ids': fields.one2many('mrp.bom.revision', 'bom_id', 'BoM Revisions'),
'revision_type': fields.selection([('numeric','numeric indices'),('alpha','alphabetical indices')], 'indice type'), 'revision_type': fields.selection([('numeric','numeric indices'),('alpha','alphabetical indices')], 'indice type'),
@ -401,10 +401,10 @@ class mrp_production(osv.osv):
'product_uos_qty': fields.float('Product Qty'), 'product_uos_qty': fields.float('Product Qty'),
'product_uos': fields.many2one('product.uom', 'Product UOM'), 'product_uos': fields.many2one('product.uom', 'Product UOM'),
'location_src_id': fields.many2one('stock.location', 'Raw Products Location', required=True, 'location_src_id': fields.many2one('stock.location', 'Raw Materials Location', required=True,
help="Location where the system will look for products used in raw materials."), help="Location where the system will look for products used in raw materials."),
'location_dest_id': fields.many2one('stock.location', 'Finnished Products Location', required=True, 'location_dest_id': fields.many2one('stock.location', 'Finished Products Location', required=True,
help="Location where the system will stock the finnished products."), help="Location where the system will stock the finished products."),
'date_planned_date': fields.function(_production_date, method=True, type='date', string='Planned Date'), 'date_planned_date': fields.function(_production_date, method=True, type='date', string='Planned Date'),
'date_planned': fields.datetime('Scheduled date', required=True, select=1), 'date_planned': fields.datetime('Scheduled date', required=True, select=1),

View File

@ -480,7 +480,7 @@
<page string="Scheduled Products"> <page string="Scheduled Products">
<field colspan="4" name="product_lines" nolabel="1" widget="one2many_list"/> <field colspan="4" name="product_lines" nolabel="1" widget="one2many_list"/>
</page> </page>
<page string="Finnished Products"> <page string="Finished Products">
<field colspan="4" name="move_created_ids" nolabel="1"/> <field colspan="4" name="move_created_ids" nolabel="1"/>
</page> </page>
<page string="Work Orders"> <page string="Work Orders">

View File

@ -104,7 +104,7 @@ class mrp_procurement(osv.osv):
summary = '''Here is the procurement scheduling report. summary = '''Here is the procurement scheduling report.
Computation Started; %s Computation Started; %s
Computation Finnished; %s Computation Finished; %s
Total procurement: %d Total procurement: %d
Exception procurement: %d Exception procurement: %d

View File

@ -29,12 +29,12 @@
This module allows Just In Time computation of all procurement. This module allows Just In Time computation of all procurement.
If you install this module, you will not have to run the schedulers anymore. If you install this module, you will not have to run the schedulers anymore.
Each document is computed in realtime. Note that this module can slow down your Each document is computed in real time. Note that this module can slow down your
system a little bit. system a little bit.
It may also increase your stock size because products are reserved as soon It may also increase your stock size because products are reserved as soon
as possible. In that case, you can not use priorities anymore on the different as possible. In that case, you can not use priorities any more on the different
pickings. picking.
""", """,
'author': 'Tiny', 'author': 'Tiny',
'depends': ['mrp', 'sale'], 'depends': ['mrp', 'sale'],

View File

@ -184,17 +184,17 @@ class pos_order(osv.osv):
'pickings': fields.one2many('stock.picking', 'pos_order', 'Picking', 'pickings': fields.one2many('stock.picking', 'pos_order', 'Picking',
readonly=True), readonly=True),
'last_out_picking': fields.many2one('stock.picking', 'last_out_picking': fields.many2one('stock.picking',
'Last output picking', 'Last Output Picking',
readonly=True), readonly=True),
'note': fields.text('Notes'), 'note': fields.text('Notes'),
'nb_print': fields.integer('Number of print', readonly=True), 'nb_print': fields.integer('Number of Print', readonly=True),
'sale_journal': fields.many2one('account.journal', 'Journal', 'sale_journal': fields.many2one('account.journal', 'Journal',
required=True, states={'draft': [('readonly', False)]}, required=True, states={'draft': [('readonly', False)]},
readonly=True, ), readonly=True, ),
'account_receivable': fields.many2one('account.account', 'account_receivable': fields.many2one('account.account',
'Default Receivable', required=True, states={'draft': [('readonly', False)]}, 'Default Receivable', required=True, states={'draft': [('readonly', False)]},
readonly=True, ), readonly=True, ),
'invoice_wanted': fields.boolean('Create invoice') 'invoice_wanted': fields.boolean('Create Invoice')
} }
def _journal_default(self, cr, uid, context={}): def _journal_default(self, cr, uid, context={}):
@ -794,7 +794,7 @@ class pos_order_line(osv.osv):
'price_subtotal': fields.function(_amount_line, method=True, string='Subtotal'), 'price_subtotal': fields.function(_amount_line, method=True, string='Subtotal'),
'discount': fields.float('Discount (%)', digits=(16, 2)), 'discount': fields.float('Discount (%)', digits=(16, 2)),
'order_id': fields.many2one('pos.order', 'Order Ref', ondelete='cascade'), 'order_id': fields.many2one('pos.order', 'Order Ref', ondelete='cascade'),
'create_date': fields.datetime('Creation date', readonly=True), 'create_date': fields.datetime('Creation Date', readonly=True),
} }
_defaults = { _defaults = {
@ -885,9 +885,9 @@ class pos_payment(osv.osv):
'order_id': fields.many2one('pos.order', 'Order Ref', required=True, ondelete='cascade'), 'order_id': fields.many2one('pos.order', 'Order Ref', required=True, ondelete='cascade'),
'journal_id': fields.many2one('account.journal', "Journal", required=True), 'journal_id': fields.many2one('account.journal', "Journal", required=True),
'payment_id': fields.many2one('account.payment.term','Payment Term', select=True), 'payment_id': fields.many2one('account.payment.term','Payment Term', select=True),
'payment_nb': fields.char('Piece number', size=32), 'payment_nb': fields.char('Piece Number', size=32),
'payment_name': fields.char('Payment name', size=32), 'payment_name': fields.char('Payment Name', size=32),
'payment_date': fields.date('Payment date', required=True), 'payment_date': fields.date('Payment Date', required=True),
'amount': fields.float('Amount', required=True), 'amount': fields.float('Amount', required=True),
} }
_defaults = { _defaults = {
@ -919,7 +919,7 @@ class report_transaction_pos(osv.osv):
'date_create': fields.char('Date', size=16, readonly=True), 'date_create': fields.char('Date', size=16, readonly=True),
'journal_id': fields.many2one('account.journal', 'Journal', readonly=True), 'journal_id': fields.many2one('account.journal', 'Journal', readonly=True),
'user_id': fields.many2one('res.users', 'User', readonly=True), 'user_id': fields.many2one('res.users', 'User', readonly=True),
'no_trans': fields.float('Number of transaction', readonly=True), 'no_trans': fields.float('Number of Transaction', readonly=True),
'amount': fields.float('Amount', readonly=True), 'amount': fields.float('Amount', readonly=True),
'invoice_id': fields.many2one('account.invoice', 'Invoice', readonly=True), 'invoice_id': fields.many2one('account.invoice', 'Invoice', readonly=True),
} }

View File

@ -102,7 +102,7 @@
<separator string="Notes" colspan="4"/> <separator string="Notes" colspan="4"/>
<field name="note" nolabel="1" colspan="4"/> <field name="note" nolabel="1" colspan="4"/>
<separator string="Pickings" colspan="4"/> <separator string="Picking" colspan="4"/>
<field name="pickings" nolabel="1" colspan="4"/> <field name="pickings" nolabel="1" colspan="4"/>
</page> </page>

View File

@ -55,7 +55,7 @@
<field name="name">Packing List</field> <field name="name">Packing List</field>
<field name="note">The workers pack the requested items</field> <field name="note">The workers pack the requested items</field>
<field name="model_id" model="ir.model" search="[('name', '=', 'Packing list')]"></field> <field name="model_id" model="ir.model" search="[('name', '=', 'Packing list')]"></field>
<field name="menu_id" model="ir.ui.menu" search="[('name', '=', 'Packings to Process')]"></field> <field name="menu_id" model="ir.ui.menu" search="[('name', '=', 'Packing to Process')]"></field>
<field name="kind">state</field> <field name="kind">state</field>
<field name="model_states"></field> <field name="model_states"></field>
<field name="process_id" ref="sales_workflow"/> <field name="process_id" ref="sales_workflow"/>

View File

@ -30,13 +30,13 @@
"init_xml" : [], "init_xml" : [],
"demo_xml" : ["product_demo.xml"], "demo_xml" : ["product_demo.xml"],
"description": """ "description": """
This is the base module to manage products and pricelists in Open ERP. This is the base module for managing products and pricelists in Open ERP.
Products support variants, different pricing methods, suppliers Products support variants, different pricing methods, suppliers
information, make to stock/order, different unit of measures, information, make to stock/order, different unit of measures,
packagings and properties. packaging and properties.
Pricelists supports: Pricelists support:
* Multiple-level of discount (by product, category, quantities) * Multiple-level of discount (by product, category, quantities)
* Compute price based on different criteria: * Compute price based on different criteria:
* Other pricelist, * Other pricelist,

View File

@ -254,8 +254,8 @@ class product_pricelist_version(osv.osv):
'active': fields.boolean('Active'), 'active': fields.boolean('Active'),
'items_id': fields.one2many('product.pricelist.item', 'items_id': fields.one2many('product.pricelist.item',
'price_version_id', 'Price List Items', required=True), 'price_version_id', 'Price List Items', required=True),
'date_start': fields.date('Start Date', help="Starting date for validity of this pricelist version."), 'date_start': fields.date('Start Date', help="Starting date for this pricelist version to be valid."),
'date_end': fields.date('End Date', help="Ending date for validity of this pricelist version."), 'date_end': fields.date('End Date', help="Ending date for this pricelist version to be valid."),
} }
_defaults = { _defaults = {
'active': lambda *a: 1, 'active': lambda *a: 1,
@ -337,9 +337,9 @@ class product_pricelist_item(osv.osv):
'product_id': fields.many2one('product.product', 'Product', ondelete='cascade', help="Set a product if this rule only apply to one product. Keep empty for all products"), 'product_id': fields.many2one('product.product', 'Product', ondelete='cascade', help="Set a product if this rule only apply to one product. Keep empty for all products"),
'categ_id': fields.many2one('product.category', 'Product Category', ondelete='cascade', help="Set a category of product if this rule only apply to products of a category and his childs. Keep empty for all products"), 'categ_id': fields.many2one('product.category', 'Product Category', ondelete='cascade', help="Set a category of product if this rule only apply to products of a category and his childs. Keep empty for all products"),
'min_quantity': fields.integer('Min. Quantity', required=True, help="The rule only apply if the partner buys/sells more than this quantity."), 'min_quantity': fields.integer('Min. Quantity', required=True, help="The rule only applies if the partner buys/sells more than this quantity."),
'sequence': fields.integer('Sequence', required=True), 'sequence': fields.integer('Sequence', required=True),
'base': fields.selection(_price_field_get, 'Based on', required=True, size=-1, help="The mode of computation of the price for this rule."), 'base': fields.selection(_price_field_get, 'Based on', required=True, size=-1, help="The mode for computing the price for this rule."),
'base_pricelist_id': fields.many2one('product.pricelist', 'If Other Pricelist'), 'base_pricelist_id': fields.many2one('product.pricelist', 'If Other Pricelist'),
'price_surcharge': fields.float('Price Surcharge', 'price_surcharge': fields.float('Price Surcharge',
@ -349,11 +349,11 @@ class product_pricelist_item(osv.osv):
digits=(16, int(config['price_accuracy'])), digits=(16, int(config['price_accuracy'])),
help="Sets the price so that it is a multiple of this value.\n" \ help="Sets the price so that it is a multiple of this value.\n" \
"Rounding is applied after the discount and before the surcharge.\n" \ "Rounding is applied after the discount and before the surcharge.\n" \
"To have prices that ends by 9.99, set rounding 10, surcharge -0.01" \ "To have prices that end in 9.99, set rounding 10, surcharge -0.01" \
), ),
'price_min_margin': fields.float('Price Min. Margin', 'price_min_margin': fields.float('Min. Price Margin',
digits=(16, int(config['price_accuracy']))), digits=(16, int(config['price_accuracy']))),
'price_max_margin': fields.float('Price Max. Margin', 'price_max_margin': fields.float('Max. Price Margin',
digits=(16, int(config['price_accuracy']))), digits=(16, int(config['price_accuracy']))),
} }
def product_id_change(self, cr, uid, ids, product_id, context={}): def product_id_change(self, cr, uid, ids, product_id, context={}):

View File

@ -44,8 +44,8 @@
<record id="process_transition_supplierofproduct0" model="process.transition"> <record id="process_transition_supplierofproduct0" model="process.transition">
<field eval="[(6,0,[])]" name="role_ids"/> <field eval="[(6,0,[])]" name="role_ids"/>
<field eval="[(6,0,[])]" name="transition_ids"/> <field eval="[(6,0,[])]" name="transition_ids"/>
<field eval="&quot;&quot;&quot;Supplier of Product&quot;&quot;&quot;" name="name"/> <field eval="&quot;&quot;&quot;Suppliers of Product&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;You can see the list of supplier for that product.&quot;&quot;&quot;" name="note"/> <field eval="&quot;&quot;&quot;You can see the list of suppliers for that product.&quot;&quot;&quot;" name="note"/>
<field model="process.node" name="target_node_id" ref="process_node_supplier0"/> <field model="process.node" name="target_node_id" ref="process_node_supplier0"/>
<field model="process.node" name="source_node_id" ref="process_node_product0"/> <field model="process.node" name="source_node_id" ref="process_node_product0"/>
</record> </record>

View File

@ -80,17 +80,17 @@ class product_uom(osv.osv):
_columns = { _columns = {
'name': fields.char('Name', size=64, required=True, translate=True), 'name': fields.char('Name', size=64, required=True, translate=True),
'category_id': fields.many2one('product.uom.categ', 'UoM Category', required=True, ondelete='cascade', 'category_id': fields.many2one('product.uom.categ', 'UoM Category', required=True, ondelete='cascade',
help="Unit of Measure of the same category can be converted between each others."), help="Unit of Measure of a category can be converted between each others in the same category."),
'factor': fields.float('Rate', digits=(12, 6), required=True, 'factor': fields.float('Rate', digits=(12, 6), required=True,
help='The coefficient for the formula:\n' \ help='The coefficient for the formula:\n' \
'1 (base unit) = coef (this unit). Rate = 1 / Factor.'), '1 (base unit) = coeff (this unit). Rate = 1 / Factor.'),
'factor_inv': fields.function(_factor, fnct_inv=_factor_inv, digits=(12, 6), 'factor_inv': fields.function(_factor, fnct_inv=_factor_inv, digits=(12, 6),
method=True, string='Factor', method=True, string='Factor',
help='The coefficient for the formula:\n' \ help='The coefficient for the formula:\n' \
'coef (base unit) = 1 (this unit). Factor = 1 / Rate.'), 'coeff (base unit) = 1 (this unit). Factor = 1 / Rate.'),
'factor_inv_data': fields.float('Factor', digits=(12, 6)), 'factor_inv_data': fields.float('Factor', digits=(12, 6)),
'rounding': fields.float('Rounding Precision', digits=(16, 3), required=True, 'rounding': fields.float('Rounding Precision', digits=(16, 3), required=True,
help="The computed quantity will be a multiple of this value. Use 1.0 for products that can not be splitted."), help="The computed quantity will be a multiple of this value. Use 1.0 for products that can not be split."),
'active': fields.boolean('Active'), 'active': fields.boolean('Active'),
} }
@ -164,7 +164,7 @@ class product_ul(osv.osv):
_description = "Shipping Unit" _description = "Shipping Unit"
_columns = { _columns = {
'name' : fields.char('Name', size=64,select=True, required=True, translate=True), 'name' : fields.char('Name', size=64,select=True, required=True, translate=True),
'type' : fields.selection([('unit','Unit'),('pack','Pack'),('box', 'Box'), ('palet', 'Palet')], 'Type', required=True), 'type' : fields.selection([('unit','Unit'),('pack','Pack'),('box', 'Box'), ('palet', 'Pallet')], 'Type', required=True),
} }
product_ul() product_ul()
@ -196,7 +196,7 @@ class product_category(osv.osv):
'name': fields.char('Name', size=64, required=True, translate=True), 'name': fields.char('Name', size=64, required=True, translate=True),
'complete_name': fields.function(_name_get_fnc, method=True, type="char", string='Name'), 'complete_name': fields.function(_name_get_fnc, method=True, type="char", string='Name'),
'parent_id': fields.many2one('product.category','Parent Category', select=True), 'parent_id': fields.many2one('product.category','Parent Category', select=True),
'child_id': fields.one2many('product.category', 'parent_id', string='Childs Categories'), 'child_id': fields.one2many('product.category', 'parent_id', string='Child Categories'),
'sequence': fields.integer('Sequence'), 'sequence': fields.integer('Sequence'),
} }
_order = "sequence" _order = "sequence"
@ -240,15 +240,15 @@ class product_template(osv.osv):
'description': fields.text('Description',translate=True), 'description': fields.text('Description',translate=True),
'description_purchase': fields.text('Purchase Description',translate=True), 'description_purchase': fields.text('Purchase Description',translate=True),
'description_sale': fields.text('Sale Description',translate=True), 'description_sale': fields.text('Sale Description',translate=True),
'type': fields.selection([('product','Stockable Product'),('consu', 'Consumable'),('service','Service')], 'Product Type', required=True, help="Will change the way procurements are processed, consumable are stockable products with infinite stock, or without a stock management in the system."), 'type': fields.selection([('product','Stockable Product'),('consu', 'Consumable'),('service','Service')], 'Product Type', required=True, help="Will change the way procurements are processed. Consumables are stockable products with infinite stock, or for use when you have no stock management in the system."),
'supply_method': fields.selection([('produce','Produce'),('buy','Buy')], 'Supply method', required=True, help="Produce will generate production order or tasks, according to the product type. Purchase will trigger purchase orders when requested."), 'supply_method': fields.selection([('produce','Produce'),('buy','Buy')], 'Supply method', required=True, help="Produce will generate production order or tasks, according to the product type. Purchase will trigger purchase orders when requested."),
'sale_delay': fields.float('Customer Lead Time', help="This is the average time between the confirmation of the customer order and the delivery of the finnished products. It's the time you promise to your customers."), 'sale_delay': fields.float('Customer Lead Time', help="This is the average time between the confirmation of the customer order and the delivery of the finished products. It's the time you promise to your customers."),
'produce_delay': fields.float('Manufacturing Lead Time', help="Average time to produce this product. This is only for the production order and, if it is a multi-level bill of material, it's only for the level of this product. Different delays will be summed for all levels and purchase orders."), 'produce_delay': fields.float('Manufacturing Lead Time', help="Average time to produce this product. This is only for the production order and, if it is a multi-level bill of material, it's only for the level of this product. Different delays will be summed for all levels and purchase orders."),
'procure_method': fields.selection([('make_to_stock','Make to Stock'),('make_to_order','Make to Order')], 'Procure Method', required=True, help="'Make to Stock': When needed, take from the stock or wait until refurnishing. 'Make to Order': When needed, purchase or produce for the procurement request."), 'procure_method': fields.selection([('make_to_stock','Make to Stock'),('make_to_order','Make to Order')], 'Procure Method', required=True, help="'Make to Stock': When needed, take from the stock or wait until re-supplying. 'Make to Order': When needed, purchase or produce for the procurement request."),
'rental': fields.boolean('Rentable product'), 'rental': fields.boolean('Rentable Product'),
'categ_id': fields.many2one('product.category','Category', required=True, change_default=True), 'categ_id': fields.many2one('product.category','Category', required=True, change_default=True),
'list_price': fields.float('Sale Price', digits=(16, int(config['price_accuracy'])), help="Base price for computing the customer price. Sometimes called the catalog price."), 'list_price': fields.float('Sale Price', digits=(16, int(config['price_accuracy'])), help="Base price for computing the customer price. Sometimes called the catalog price."),
'standard_price': fields.float('Cost Price', required=True, digits=(16, int(config['price_accuracy'])), help="The cost of the product for accounting stock valorisation. It can serves as a base price for supplier price."), 'standard_price': fields.float('Cost Price', required=True, digits=(16, int(config['price_accuracy'])), help="The cost of the product for accounting stock valuation. It can serves as a base price for supplier price."),
'volume': fields.float('Volume', help="The volume in m3."), 'volume': fields.float('Volume', help="The volume in m3."),
'weight': fields.float('Gross weight', help="The gross weight in Kg."), 'weight': fields.float('Gross weight', help="The gross weight in Kg."),
'weight_net': fields.float('Net weight', help="The net weight in Kg."), 'weight_net': fields.float('Net weight', help="The net weight in Kg."),

View File

@ -130,11 +130,11 @@
<field name="qty" select="1"/> <field name="qty" select="1"/>
<field name="ul"/> <field name="ul"/>
<field name="weight_ul"/> <field name="weight_ul"/>
<separator colspan="4" string="Paletization"/> <separator colspan="4" string="Palletization"/>
<field name="ul_qty"/> <field name="ul_qty"/>
<field name="rows"/> <field name="rows"/>
<field name="weight"/> <field name="weight"/>
<separator colspan="4" string="Palette Dimension"/> <separator colspan="4" string="Pallet Dimension"/>
<field name="height"/> <field name="height"/>
<field name="width"/> <field name="width"/>
<field name="length"/> <field name="length"/>
@ -295,7 +295,7 @@
<field name="model">product.ul</field> <field name="model">product.ul</field>
<field name="type">form</field> <field name="type">form</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<form string="Packagings"> <form string="Packaging">
<field name="name"/> <field name="name"/>
<field name="type"/> <field name="type"/>
</form> </form>
@ -306,14 +306,14 @@
<field name="model">product.ul</field> <field name="model">product.ul</field>
<field name="type">tree</field> <field name="type">tree</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<tree string="Packagings"> <tree string="Packaging">
<field name="name" select="1"/> <field name="name" select="1"/>
<field name="type" select="1"/> <field name="type" select="1"/>
</tree> </tree>
</field> </field>
</record> </record>
<record id="product_ul_form_action" model="ir.actions.act_window"> <record id="product_ul_form_action" model="ir.actions.act_window">
<field name="name">Packagings</field> <field name="name">Packaging</field>
<field name="type">ir.actions.act_window</field> <field name="type">ir.actions.act_window</field>
<field name="res_model">product.ul</field> <field name="res_model">product.ul</field>
<field name="view_type">form</field> <field name="view_type">form</field>
@ -349,11 +349,11 @@
<field name="qty" select="1"/> <field name="qty" select="1"/>
<field name="ul"/> <field name="ul"/>
<field name="weight_ul"/> <field name="weight_ul"/>
<separator colspan="4" string="Paletization"/> <separator colspan="4" string="Palletization"/>
<field name="ul_qty"/> <field name="ul_qty"/>
<field name="rows"/> <field name="rows"/>
<field name="weight"/> <field name="weight"/>
<separator colspan="4" string="Palette Dimension"/> <separator colspan="4" string="Pallet Dimension"/>
<field name="height"/> <field name="height"/>
<field name="width"/> <field name="width"/>
<field name="length"/> <field name="length"/>

View File

@ -29,7 +29,7 @@ class profile_service_config_install_modules_wizard(osv.osv_memory):
_columns = { _columns = {
'crm_configuration':fields.boolean('CRM & Calendars', help="This installs the customer relationship features like: leads and opportunities tracking, shared calendar, jobs tracking, bug tracker, and so on."), 'crm_configuration':fields.boolean('CRM & Calendars', help="This installs the customer relationship features like: leads and opportunities tracking, shared calendar, jobs tracking, bug tracker, and so on."),
'project_timesheet':fields.boolean('Timesheets', help="Timesheets allows you to track time and costs spent on different projects, represented by analytic accounts."), 'project_timesheet':fields.boolean('Timesheets', help="Timesheets allows you to track time and costs spent on different projects, represented by analytic accounts."),
'hr_timesheet_invoice':fields.boolean('Invoice on Timesheets', help="There are different invoicing methods in OpenERP: from sale orders, from shippings, ... Install this module if you plan to invoice your customers based on time spent on projects."), 'hr_timesheet_invoice':fields.boolean('Invoice on Timesheets', help="There are different invoicing methods in OpenERP: from sale orders, from shipping, ... Install this module if you plan to invoice your customers based on time spent on projects."),
'hr_holidays':fields.boolean('Holidays Management', help="Tracks the full holidays management process, from the employee's request to the global planning."), 'hr_holidays':fields.boolean('Holidays Management', help="Tracks the full holidays management process, from the employee's request to the global planning."),
'hr_expense':fields.boolean('Expenses Tracking', help="Tracks the personal expenses process, from the employee expense encoding, to the reimbursement of the employee up to the reinvoicing to the final customer."), 'hr_expense':fields.boolean('Expenses Tracking', help="Tracks the personal expenses process, from the employee expense encoding, to the reimbursement of the employee up to the reinvoicing to the final customer."),
'project_mrp':fields.boolean('Sales Management', help="Manages quotation and sales orders. It allows you to automatically create and invoice tasks on fixes prices from quotations."), 'project_mrp':fields.boolean('Sales Management', help="Manages quotation and sales orders. It allows you to automatically create and invoice tasks on fixes prices from quotations."),

View File

@ -82,7 +82,7 @@ class project(osv.osv):
_columns = { _columns = {
'name': fields.char("Project Name", size=128, required=True), 'name': fields.char("Project Name", size=128, required=True),
'active': fields.boolean('Active'), 'active': fields.boolean('Active'),
'category_id': fields.many2one('account.analytic.account','Analytic Account', help="Link this project to an analytic account if you need financial management on projects. It ables to connect projects with budgets, plannings, costs and revenues analysis, timesheet on projects, etc."), 'category_id': fields.many2one('account.analytic.account','Analytic Account', help="Link this project to an analytic account if you need financial management on projects. It enables you to connect projects with budgets, planning, cost and revenue analysis, timesheets on projects, etc."),
'priority': fields.integer('Sequence'), 'priority': fields.integer('Sequence'),
'manager': fields.many2one('res.users', 'Project Manager'), 'manager': fields.many2one('res.users', 'Project Manager'),
'warn_manager': fields.boolean('Warn Manager', help="If you check this field, the project manager will receive a request each time a task is completed by his team."), 'warn_manager': fields.boolean('Warn Manager', help="If you check this field, the project manager will receive a request each time a task is completed by his team."),

View File

@ -202,7 +202,7 @@
<field name="user_id" ref="base.user_root"/> <field name="user_id" ref="base.user_root"/>
<field name="project_id" ref="project_project_23"/> <field name="project_id" ref="project_project_23"/>
<field name="state">open</field> <field name="state">open</field>
<field name="name">In house trainings</field> <field name="name">In house training</field>
<field name="date_deadline">2007-06-06</field> <field name="date_deadline">2007-06-06</field>
</record> </record>
<record id="project_task_202" model="project.task"> <record id="project_task_202" model="project.task">

View File

@ -66,7 +66,7 @@ class project_gtd_timebox(osv.osv):
_columns = { _columns = {
'name': fields.char('Timebox', size=64, required=True, select=1), 'name': fields.char('Timebox', size=64, required=True, select=1),
'user_id': fields.many2one('res.users', 'User', required=True, select=1), 'user_id': fields.many2one('res.users', 'User', required=True, select=1),
'child_ids': fields.one2many('project.gtd.timebox', 'parent_id', 'Childs Timebox'), 'child_ids': fields.one2many('project.gtd.timebox', 'parent_id', 'Child Timeboxes'),
'parent_id': fields.many2one('project.gtd.timebox', 'Parent Timebox'), 'parent_id': fields.many2one('project.gtd.timebox', 'Parent Timebox'),
'task_ids': fields.one2many('project.task', 'timebox_id', 'Tasks'), 'task_ids': fields.one2many('project.task', 'timebox_id', 'Tasks'),
'type': fields.selection([('daily','Daily'),('weekly','Weekly'),('monthly','Monthly'),('other','Other')], 'Type', required=True), 'type': fields.selection([('daily','Daily'),('weekly','Weekly'),('monthly','Monthly'),('other','Other')], 'Type', required=True),

View File

@ -343,7 +343,7 @@ class purchase_order(osv.osv):
if pick.state not in ('draft','cancel'): if pick.state not in ('draft','cancel'):
raise osv.except_osv( raise osv.except_osv(
_('Could not cancel purchase order !'), _('Could not cancel purchase order !'),
_('You must first cancel all packings attached to this purchase order.')) _('You must first cancel all packing attached to this purchase order.'))
for pick in purchase.picking_ids: for pick in purchase.picking_ids:
wf_service = netsvc.LocalService("workflow") wf_service = netsvc.LocalService("workflow")
wf_service.trg_validate(uid, 'stock.picking', pick.id, 'button_cancel', cr) wf_service.trg_validate(uid, 'stock.picking', pick.id, 'button_cancel', cr)

View File

@ -73,7 +73,7 @@
</record> </record>
<record id="action_account_analytic_planning_form" model="ir.actions.act_window"> <record id="action_account_analytic_planning_form" model="ir.actions.act_window">
<field name="name">Plannings</field> <field name="name">Planning</field>
<field name="res_model">report_account_analytic.planning</field> <field name="res_model">report_account_analytic.planning</field>
<field name="view_type">form</field> <field name="view_type">form</field>
<field name="view_mode">tree,form</field> <field name="view_mode">tree,form</field>
@ -85,7 +85,7 @@
parent="planning_main"/> parent="planning_main"/>
<record id="action_account_analytic_planning_form_my" model="ir.actions.act_window"> <record id="action_account_analytic_planning_form_my" model="ir.actions.act_window">
<field name="name">My Plannings</field> <field name="name">My Planning</field>
<field name="res_model">report_account_analytic.planning</field> <field name="res_model">report_account_analytic.planning</field>
<field name="view_type">form</field> <field name="view_type">form</field>
<field name="view_mode">tree,form</field> <field name="view_mode">tree,form</field>
@ -97,7 +97,7 @@
parent="planning_main"/> parent="planning_main"/>
<record id="action_account_analytic_planning_form_current_my" model="ir.actions.act_window"> <record id="action_account_analytic_planning_form_current_my" model="ir.actions.act_window">
<field name="name">My Current Plannings</field> <field name="name">My Current Planning</field>
<field name="res_model">report_account_analytic.planning</field> <field name="res_model">report_account_analytic.planning</field>
<field name="view_type">form</field> <field name="view_type">form</field>
<field name="view_mode">tree,form</field> <field name="view_mode">tree,form</field>
@ -106,7 +106,7 @@
<menuitem action="action_account_analytic_planning_form_current_my" id="menu_report_account_analytic_planning_current_my" parent="menu_report_account_analytic_planning_my2"/> <menuitem action="action_account_analytic_planning_form_current_my" id="menu_report_account_analytic_planning_current_my" parent="menu_report_account_analytic_planning_my2"/>
<record id="action_account_analytic_planning_form_current" model="ir.actions.act_window"> <record id="action_account_analytic_planning_form_current" model="ir.actions.act_window">
<field name="name">Current Plannings</field> <field name="name">Current Planning</field>
<field name="res_model">report_account_analytic.planning</field> <field name="res_model">report_account_analytic.planning</field>
<field name="view_type">form</field> <field name="view_type">form</field>
<field name="view_mode">tree,form</field> <field name="view_mode">tree,form</field>

View File

@ -32,9 +32,9 @@ class sale_shop(osv.osv):
_name = "sale.shop" _name = "sale.shop"
_description = "Sale Shop" _description = "Sale Shop"
_columns = { _columns = {
'name': fields.char('Shop name',size=64, required=True), 'name': fields.char('Shop Name',size=64, required=True),
'payment_default_id': fields.many2one('account.payment.term','Default Payment Term',required=True), 'payment_default_id': fields.many2one('account.payment.term','Default Payment Term',required=True),
'payment_account_id': fields.many2many('account.account','sale_shop_account','shop_id','account_id','Payment accounts'), 'payment_account_id': fields.many2many('account.account','sale_shop_account','shop_id','account_id','Payment Accounts'),
'warehouse_id': fields.many2one('stock.warehouse','Warehouse'), 'warehouse_id': fields.many2one('stock.warehouse','Warehouse'),
'pricelist_id': fields.many2one('product.pricelist', 'Pricelist'), 'pricelist_id': fields.many2one('product.pricelist', 'Pricelist'),
'project_id': fields.many2one('account.analytic.account', 'Analytic Account'), 'project_id': fields.many2one('account.analytic.account', 'Analytic Account'),
@ -182,18 +182,18 @@ class sale_order(osv.osv):
'name': fields.char('Order Reference', size=64, required=True, select=True), 'name': fields.char('Order Reference', size=64, required=True, select=True),
'shop_id':fields.many2one('sale.shop', 'Shop', required=True, readonly=True, states={'draft':[('readonly',False)]}), 'shop_id':fields.many2one('sale.shop', 'Shop', required=True, readonly=True, states={'draft':[('readonly',False)]}),
'origin': fields.char('Origin', size=64), 'origin': fields.char('Origin', size=64),
'client_order_ref': fields.char('Customer Ref.',size=64), 'client_order_ref': fields.char('Customer Ref',size=64),
'state': fields.selection([ 'state': fields.selection([
('draft','Quotation'), ('draft','Quotation'),
('waiting_date','Waiting Schedule'), ('waiting_date','Waiting Schedule'),
('manual','Manual in progress'), ('manual','Manual In Progress'),
('progress','In progress'), ('progress','In Progress'),
('shipping_except','Shipping Exception'), ('shipping_except','Shipping Exception'),
('invoice_except','Invoice Exception'), ('invoice_except','Invoice Exception'),
('done','Done'), ('done','Done'),
('cancel','Cancel') ('cancel','Cancel')
], 'Order State', readonly=True, help="Gives the state of the quotation or sale order. The exception state is automatically set when a cancel operation occurs in the invoice validation (Invoice Exception) or in the packing list process (Shipping Exception). The 'Waiting Schedule' state is set when the invoice is confirmed but waiting for the scheduler to be on the date 'Date Ordered'.", select=True), ], 'Order State', readonly=True, help="Gives the state of the quotation or sale order. The exception state is automatically set when a cancel operation occurs in the invoice validation (Invoice Exception) or in the packing list process (Shipping Exception). The 'Waiting Schedule' state is set when the invoice is confirmed but waiting for the scheduler to run on the date 'Date Ordered'.", select=True),
'date_order':fields.date('Date Ordered', required=True, readonly=True, states={'draft':[('readonly',False)]}), 'date_order':fields.date('Date Ordered', required=True, readonly=True, states={'draft':[('readonly',False)]}),
'user_id':fields.many2one('res.users', 'Salesman', states={'draft':[('readonly',False)]}, select=True), 'user_id':fields.many2one('res.users', 'Salesman', states={'draft':[('readonly',False)]}, select=True),
@ -204,24 +204,24 @@ class sale_order(osv.osv):
'incoterm': fields.selection(_incoterm_get, 'Incoterm',size=3), 'incoterm': fields.selection(_incoterm_get, 'Incoterm',size=3),
'picking_policy': fields.selection([('direct','Partial Delivery'),('one','Complete Delivery')], 'picking_policy': fields.selection([('direct','Partial Delivery'),('one','Complete Delivery')],
'Packing Policy', required=True, help="""If you don't have enough stock available to deliver all at once, do you accept partial shippings or not."""), 'Packing Policy', required=True, help="""If you don't have enough stock available to deliver all at once, do you accept partial shipments or not?"""),
'order_policy': fields.selection([ 'order_policy': fields.selection([
('prepaid','Payment Before Delivery'), ('prepaid','Payment Before Delivery'),
('manual','Shipping & Manual Invoice'), ('manual','Shipping & Manual Invoice'),
('postpaid','Invoice on Order After Delivery'), ('postpaid','Invoice on Order After Delivery'),
('picking','Invoice from the packings'), ('picking','Invoice from the Packing'),
], 'Shipping Policy', required=True, readonly=True, states={'draft':[('readonly',False)]}, ], 'Shipping Policy', required=True, readonly=True, states={'draft':[('readonly',False)]},
help="""The Shipping Policy is used to synchronise invoice and delivery operations. help="""The Shipping Policy is used to synchronise invoice and delivery operations.
- The 'Pay before delivery' choice will first generate the invoice and then generate the packing order after the payment of this invoice. - The 'Pay before delivery' choice will first generate the invoice and then generate the packing order after the payment of this invoice.
- The 'Shipping & Manual Invoice' will create the packing order directly and wait for the user to manually click on the 'Invoice' button to generate the draft invoice. - The 'Shipping & Manual Invoice' will create the packing order directly and wait for the user to manually click on the 'Invoice' button to generate the draft invoice.
- The 'Invoice on Order Ater Delivery' choice will generate the draft invoice based on sale order after all packing lists have been finished. - The 'Invoice on Order Ater Delivery' choice will generate the draft invoice based on sale order after all packing lists have been finished.
- The 'Invoice from the packings' choice is used to create an invoice during the packing process."""), - The 'Invoice from the packing' choice is used to create an invoice during the packing process."""),
'pricelist_id':fields.many2one('product.pricelist', 'Pricelist', required=True, readonly=True, states={'draft':[('readonly',False)]}), 'pricelist_id':fields.many2one('product.pricelist', 'Pricelist', required=True, readonly=True, states={'draft':[('readonly',False)]}),
'project_id':fields.many2one('account.analytic.account', 'Analytic Account', readonly=True, states={'draft':[('readonly', False)]}), 'project_id':fields.many2one('account.analytic.account', 'Analytic Account', readonly=True, states={'draft':[('readonly', False)]}),
'order_line': fields.one2many('sale.order.line', 'order_id', 'Order Lines', readonly=True, states={'draft':[('readonly',False)]}), 'order_line': fields.one2many('sale.order.line', 'order_id', 'Order Lines', readonly=True, states={'draft':[('readonly',False)]}),
'invoice_ids': fields.many2many('account.invoice', 'sale_order_invoice_rel', 'order_id', 'invoice_id', 'Invoice', help="This is the list of invoices that have been generated for this sale order. The same sale order may have been invoiced in several times (by line for example)."), 'invoice_ids': fields.many2many('account.invoice', 'sale_order_invoice_rel', 'order_id', 'invoice_id', 'Invoice', help="This is the list of invoices that have been generated for this sale order. The same sale order may have been invoiced in several times (by line for example)."),
'picking_ids': fields.one2many('stock.picking', 'sale_id', 'Related Packings', readonly=True, help="This is the list of picking list that have been generated for this invoice"), 'picking_ids': fields.one2many('stock.picking', 'sale_id', 'Related Packing', readonly=True, help="This is the list of picking list that have been generated for this invoice"),
'shipped':fields.boolean('Picked', readonly=True), 'shipped':fields.boolean('Picked', readonly=True),
'picked_rate': fields.function(_picked_rate, method=True, string='Picked', type='float'), 'picked_rate': fields.function(_picked_rate, method=True, string='Picked', type='float'),
'invoiced_rate': fields.function(_invoiced_rate, method=True, string='Invoiced', type='float'), 'invoiced_rate': fields.function(_invoiced_rate, method=True, string='Invoiced', type='float'),
@ -444,7 +444,7 @@ class sale_order(osv.osv):
if pick.state not in ('draft','cancel'): if pick.state not in ('draft','cancel'):
raise osv.except_osv( raise osv.except_osv(
_('Could not cancel sale order !'), _('Could not cancel sale order !'),
_('You must first cancel all packings attached to this sale order.')) _('You must first cancel all packing attached to this sale order.'))
for r in self.read(cr,uid,ids,['picking_ids']): for r in self.read(cr,uid,ids,['picking_ids']):
for pick in r['picking_ids']: for pick in r['picking_ids']:
wf_service = netsvc.LocalService("workflow") wf_service = netsvc.LocalService("workflow")
@ -721,12 +721,12 @@ class sale_order_line(osv.osv):
'address_allotment_id' : fields.many2one('res.partner.address', 'Allotment Partner'), 'address_allotment_id' : fields.many2one('res.partner.address', 'Allotment Partner'),
'product_uom_qty': fields.float('Quantity (UoM)', digits=(16,2), required=True), 'product_uom_qty': fields.float('Quantity (UoM)', digits=(16,2), required=True),
'product_uom': fields.many2one('product.uom', 'Product UoM', required=True), 'product_uom': fields.many2one('product.uom', 'Product UoM', required=True),
'product_uos_qty': fields.float('Quantity (UOS)'), 'product_uos_qty': fields.float('Quantity (UoS)'),
'product_uos': fields.many2one('product.uom', 'Product UOS'), 'product_uos': fields.many2one('product.uom', 'Product UoS'),
'product_packaging': fields.many2one('product.packaging', 'Packaging'), 'product_packaging': fields.many2one('product.packaging', 'Packaging'),
'move_ids': fields.one2many('stock.move', 'sale_line_id', 'Inventory Moves', readonly=True), 'move_ids': fields.one2many('stock.move', 'sale_line_id', 'Inventory Moves', readonly=True),
'discount': fields.float('Discount (%)', digits=(16,2)), 'discount': fields.float('Discount (%)', digits=(16,2)),
'number_packages': fields.function(_number_packages, method=True, type='integer', string='Number packages'), 'number_packages': fields.function(_number_packages, method=True, type='integer', string='Number Packages'),
'notes': fields.text('Notes'), 'notes': fields.text('Notes'),
'th_weight' : fields.float('Weight'), 'th_weight' : fields.float('Weight'),
'state': fields.selection([('draft','Draft'),('confirmed','Confirmed'),('done','Done'),('cancel','Canceled'),('exception','Exception')], 'Status', required=True, readonly=True), 'state': fields.selection([('draft','Draft'),('confirmed','Confirmed'),('done','Done'),('cancel','Canceled'),('exception','Exception')], 'Status', required=True, readonly=True),

View File

@ -24,8 +24,8 @@
<button name="button_draft" string="Set to Draft" states="close,open" type="object"/> <button name="button_draft" string="Set to Draft" states="close,open" type="object"/>
</group> </group>
</page> </page>
<page string="Packings"> <page string="Packing">
<button string="Cancel Packings" name="button_picking_cancel" states="draft,open" type="object"/> <button string="Cancel Packing" name="button_picking_cancel" states="draft,open" type="object"/>
<newline/> <newline/>
<field name="picking_stats_ids" colspan="4" nolabel="1"/> <field name="picking_stats_ids" colspan="4" nolabel="1"/>
</page><page string="Notes"> </page><page string="Notes">
@ -50,17 +50,17 @@
</field> </field>
</record> </record>
<record model="ir.actions.act_window" id="action_definition_picking_journal"> <record model="ir.actions.act_window" id="action_definition_picking_journal">
<field name="name">Packings journals</field> <field name="name">Packing journals</field>
<field name="res_model">sale_journal.picking.journal</field> <field name="res_model">sale_journal.picking.journal</field>
<field name="view_type">form</field> <field name="view_type">form</field>
<field name="view_mode">tree,form</field> <field name="view_mode">tree,form</field>
</record> </record>
<menuitem name="Packings Journals" id="menu_definition_journal_picking" parent="stock.menu_stock_configuration" action="action_definition_picking_journal"/> <menuitem name="Packing Journals" id="menu_definition_journal_picking" parent="stock.menu_stock_configuration" action="action_definition_picking_journal"/>
<record model="ir.actions.act_window" id="action_definition_picking_journal_tree"> <record model="ir.actions.act_window" id="action_definition_picking_journal_tree">
<field name="name">Packings by journal</field> <field name="name">Packing by journal</field>
<field name="res_model">sale_journal.picking.journal</field> <field name="res_model">sale_journal.picking.journal</field>
<field name="view_type">form</field> <field name="view_type">form</field>
<field name="view_mode">tree,form</field> <field name="view_mode">tree,form</field>
@ -68,7 +68,7 @@
</record> </record>
<menuitem name="Packings by Journal" id="menu_definition_journal_picking_byjournal" parent="stock.menu_stock_root" action="action_definition_picking_journal_tree"/> <menuitem name="Packing by Journal" id="menu_definition_journal_picking_byjournal" parent="stock.menu_stock_root" action="action_definition_picking_journal_tree"/>
<record model="ir.actions.act_window" id="action_definition_picking_journal_tree_my"> <record model="ir.actions.act_window" id="action_definition_picking_journal_tree_my">
<field name="name">My open packing journals</field> <field name="name">My open packing journals</field>
@ -81,7 +81,7 @@
<menuitem name="My Open Journals" id="menu_definition_journal_picking_byjournal_my" parent="menu_definition_journal_picking_byjournal" action="action_definition_picking_journal_tree_my"/> <menuitem name="My Open Journals" id="menu_definition_journal_picking_byjournal_my" parent="menu_definition_journal_picking_byjournal" action="action_definition_picking_journal_tree_my"/>
<record model="ir.actions.act_window" id="action_definition_picking_journal_tree_all"> <record model="ir.actions.act_window" id="action_definition_picking_journal_tree_all">
<field name="name">Packings by journal</field> <field name="name">Packing by journal</field>
<field name="res_model">sale_journal.picking.journal</field> <field name="res_model">sale_journal.picking.journal</field>
<field name="view_type">form</field> <field name="view_type">form</field>
<field name="view_mode">tree,form</field> <field name="view_mode">tree,form</field>
@ -91,7 +91,7 @@
<menuitem name="All Open Journals" id="menu_definition_journal_picking_byjournal_all" parent="menu_definition_journal_picking_byjournal" action="action_definition_picking_journal_tree_all"/> <menuitem name="All Open Journals" id="menu_definition_journal_picking_byjournal_all" parent="menu_definition_journal_picking_byjournal" action="action_definition_picking_journal_tree_all"/>
<record model="ir.actions.act_window" id="action_invoice_type_tree"> <record model="ir.actions.act_window" id="action_invoice_type_tree">
<field name="name">Packings by invoice_method</field> <field name="name">Packing by invoice_method</field>
<field name="name">sale_journal.invoice.type.tree</field> <field name="name">sale_journal.invoice.type.tree</field>
<field name="res_model">sale_journal.invoice.type</field> <field name="res_model">sale_journal.invoice.type</field>
<field name="type">ir.actions.act_window</field> <field name="type">ir.actions.act_window</field>
@ -99,11 +99,11 @@
</record> </record>
<menuitem name="Packings to Invoice" id="menu_definition_journal_picking_invoice" parent="stock.menu_action_picking_tree"/> <menuitem name="Packing to Invoice" id="menu_definition_journal_picking_invoice" parent="stock.menu_action_picking_tree"/>
<menuitem name="Packings by Invoice Method" id="menu_definition_journal_picking_invoice_method" parent="menu_definition_journal_picking_invoice" action="action_invoice_type_tree"/> <menuitem name="Packing by Invoice Method" id="menu_definition_journal_picking_invoice_method" parent="menu_definition_journal_picking_invoice" action="action_invoice_type_tree"/>
<record model="ir.actions.act_window" id="action_invoice_type_picking_open"> <record model="ir.actions.act_window" id="action_invoice_type_picking_open">
<field name="name">Packings to invoice</field> <field name="name">Packing to invoice</field>
<field name="res_model">stock.picking</field> <field name="res_model">stock.picking</field>
<field name="type">ir.actions.act_window</field> <field name="type">ir.actions.act_window</field>
<field name="view_type">form</field> <field name="view_type">form</field>
@ -113,7 +113,7 @@
<record model="ir.values" id="ir_open_invoice_type"> <record model="ir.values" id="ir_open_invoice_type">
<field name="key2">tree_but_open</field> <field name="key2">tree_but_open</field>
<field name="model">sale_journal.invoice.type</field> <field name="model">sale_journal.invoice.type</field>
<field name="name">Packings to invoice</field> <field name="name">Packing to invoice</field>
<field name="value" eval="'ir.actions.act_window,%d'%action_invoice_type_picking_open"/> <field name="value" eval="'ir.actions.act_window,%d'%action_invoice_type_picking_open"/>
<field name="object" eval="True"/> <field name="object" eval="True"/>
</record> </record>

View File

@ -10,7 +10,7 @@
<field name="model">sale_journal.invoice.type.stats</field> <field name="model">sale_journal.invoice.type.stats</field>
<field name="type">form</field> <field name="type">form</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<form string="Packings by invoice method"> <form string="Packing by invoice method">
<field name="name" select="1"/> <field name="name" select="1"/>
<field name="invoice_state" select="1"/> <field name="invoice_state" select="1"/>
<field name="state" select="1"/> <field name="state" select="1"/>
@ -27,7 +27,7 @@
<field name="model">sale_journal.invoice.type.stats</field> <field name="model">sale_journal.invoice.type.stats</field>
<field name="type">tree</field> <field name="type">tree</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<tree string="Packings by invoice method"> <tree string="Packing by invoice method">
<field name="name"/> <field name="name"/>
<field name="invoice_state"/> <field name="invoice_state"/>
<field name="state"/> <field name="state"/>
@ -40,7 +40,7 @@
</field> </field>
</record> </record>
<record model="ir.actions.act_window" id="action_invoice_type_picking_stats_open"> <record model="ir.actions.act_window" id="action_invoice_type_picking_stats_open">
<field name="name">Statistics on packings to invoice</field> <field name="name">Statistics on packing to invoice</field>
<field name="res_model">sale_journal.invoice.type.stats</field> <field name="res_model">sale_journal.invoice.type.stats</field>
<field name="type">ir.actions.act_window</field> <field name="type">ir.actions.act_window</field>
<field name="view_type">form</field> <field name="view_type">form</field>
@ -49,7 +49,7 @@
</record> </record>
<record model="ir.actions.act_window" id="action_invoice_type_picking_stats_open_menu_month"> <record model="ir.actions.act_window" id="action_invoice_type_picking_stats_open_menu_month">
<field name="name">Packings by invoice method</field> <field name="name">Packing by invoice method</field>
<field name="res_model">sale_journal.invoice.type.stats</field> <field name="res_model">sale_journal.invoice.type.stats</field>
<field name="type">ir.actions.act_window</field> <field name="type">ir.actions.act_window</field>
<field name="view_type">form</field> <field name="view_type">form</field>
@ -57,12 +57,12 @@
<field name="domain">[('name','=',time.strftime('%Y-%m-01'))]</field> <field name="domain">[('name','=',time.strftime('%Y-%m-01'))]</field>
</record> </record>
<menuitem name="Packings Journal" id="menu_definition_journal_reporting" parent="stock.next_id_61"/> <menuitem name="Packing Journal" id="menu_definition_journal_reporting" parent="stock.next_id_61"/>
<menuitem name="This Month" id="menu_definition_journal_reporting_this" parent="menu_definition_journal_reporting"/> <menuitem name="This Month" id="menu_definition_journal_reporting_this" parent="menu_definition_journal_reporting"/>
<menuitem name="Packings by Invoice Method" id="menu_invoice_type_picking_stats_open_menu" parent="menu_definition_journal_reporting_this" action="action_invoice_type_picking_stats_open_menu_month"/> <menuitem name="Packing by Invoice Method" id="menu_invoice_type_picking_stats_open_menu" parent="menu_definition_journal_reporting_this" action="action_invoice_type_picking_stats_open_menu_month"/>
<record model="ir.actions.act_window" id="action_invoice_type_picking_stats_open_menu_all"> <record model="ir.actions.act_window" id="action_invoice_type_picking_stats_open_menu_all">
<field name="name">Packings by invoice method</field> <field name="name">Packing by invoice method</field>
<field name="res_model">sale_journal.invoice.type.stats</field> <field name="res_model">sale_journal.invoice.type.stats</field>
<field name="type">ir.actions.act_window</field> <field name="type">ir.actions.act_window</field>
<field name="view_type">form</field> <field name="view_type">form</field>
@ -70,10 +70,10 @@
</record> </record>
<menuitem name="All Months" id="menu_definition_journal_reporting_all" parent="menu_definition_journal_reporting"/> <menuitem name="All Months" id="menu_definition_journal_reporting_all" parent="menu_definition_journal_reporting"/>
<menuitem name="Packings by Invoice Method" id="menu_invoice_type_picking_stats_open_all" parent="menu_definition_journal_reporting_all" action="action_invoice_type_picking_stats_open_menu_all"/> <menuitem name="Packing by Invoice Method" id="menu_invoice_type_picking_stats_open_all" parent="menu_definition_journal_reporting_all" action="action_invoice_type_picking_stats_open_menu_all"/>
# #
# Packings by journal # Packing by journal
# #
<record model="ir.ui.view" id="view_picking_journal_stats_form"> <record model="ir.ui.view" id="view_picking_journal_stats_form">
@ -81,7 +81,7 @@
<field name="model">sale_journal.picking.stats</field> <field name="model">sale_journal.picking.stats</field>
<field name="type">form</field> <field name="type">form</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<form string="Packings by journals"> <form string="Packing by journals">
<field name="name" select="1"/> <field name="name" select="1"/>
<field name="state" select="1"/> <field name="state" select="1"/>
<field name="journal_id" select="1"/> <field name="journal_id" select="1"/>
@ -97,7 +97,7 @@
<field name="model">sale_journal.picking.stats</field> <field name="model">sale_journal.picking.stats</field>
<field name="type">tree</field> <field name="type">tree</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<tree string="Packings by journals"> <tree string="Packing by journals">
<field name="name"/> <field name="name"/>
<field name="state"/> <field name="state"/>
<field name="journal_id"/> <field name="journal_id"/>
@ -110,7 +110,7 @@
</record> </record>
<record model="ir.actions.act_window" id="action_picking_picking_stats_open_menu_month"> <record model="ir.actions.act_window" id="action_picking_picking_stats_open_menu_month">
<field name="name">Packings by journal</field> <field name="name">Packing by journal</field>
<field name="res_model">sale_journal.picking.stats</field> <field name="res_model">sale_journal.picking.stats</field>
<field name="type">ir.actions.act_window</field> <field name="type">ir.actions.act_window</field>
<field name="view_type">form</field> <field name="view_type">form</field>
@ -118,17 +118,17 @@
<field name="domain">[('name','=',time.strftime('%Y-%m-01'))]</field> <field name="domain">[('name','=',time.strftime('%Y-%m-01'))]</field>
</record> </record>
<menuitem name="Packings by Journal" id="menu_picking_picking_stats_open_menu" parent="menu_definition_journal_reporting_this" action="action_picking_picking_stats_open_menu_month"/> <menuitem name="Packing by Journal" id="menu_picking_picking_stats_open_menu" parent="menu_definition_journal_reporting_this" action="action_picking_picking_stats_open_menu_month"/>
<record model="ir.actions.act_window" id="action_picking_picking_stats_open_menu_all"> <record model="ir.actions.act_window" id="action_picking_picking_stats_open_menu_all">
<field name="name">Packings by journal</field> <field name="name">Packing by journal</field>
<field name="res_model">sale_journal.picking.stats</field> <field name="res_model">sale_journal.picking.stats</field>
<field name="type">ir.actions.act_window</field> <field name="type">ir.actions.act_window</field>
<field name="view_type">form</field> <field name="view_type">form</field>
<field name="view_mode">tree,form</field> <field name="view_mode">tree,form</field>
</record> </record>
<menuitem name="Packings by Journal" id="menu_picking_picking_stats_open_all" parent="menu_definition_journal_reporting_all" action="action_picking_picking_stats_open_menu_all"/> <menuitem name="Packing by Journal" id="menu_picking_picking_stats_open_all" parent="menu_definition_journal_reporting_all" action="action_picking_picking_stats_open_menu_all"/>
</data> </data>
</openerp> </openerp>

View File

@ -91,7 +91,7 @@ sale_journal()
class picking_journal(osv.osv): class picking_journal(osv.osv):
_name = 'sale_journal.picking.journal' _name = 'sale_journal.picking.journal'
_description = 'Packings Journal' _description = 'Packing Journal'
_columns = { _columns = {
'name': fields.char('Journal', size=64, required=True), 'name': fields.char('Journal', size=64, required=True),
'code': fields.char('Code', size=16, required=True), 'code': fields.char('Code', size=16, required=True),

View File

@ -34,7 +34,7 @@ class res_partner(osv.osv):
method=True, method=True,
view_load=True, view_load=True,
group_name="Accounting Properties", group_name="Accounting Properties",
help="The type of journal used for sales and packings."), help="The type of journal used for sales and packing."),
} }
res_partner() res_partner()

View File

@ -24,7 +24,7 @@ from osv import fields,osv
class report_sale_journal_invoice_type_stats(osv.osv): class report_sale_journal_invoice_type_stats(osv.osv):
_name = "sale_journal.invoice.type.stats" _name = "sale_journal.invoice.type.stats"
_description = "Stats on packings by invoice method" _description = "Stats on packing by invoice method"
_auto = False _auto = False
_columns = { _columns = {
'name': fields.date('Month', readonly=True), 'name': fields.date('Month', readonly=True),

View File

@ -243,25 +243,25 @@
src_model="sale_journal.sale.journal" src_model="sale_journal.sale.journal"
id="act_sale_journal_sale_journal_2_sale_journal_sale_stats"/> id="act_sale_journal_sale_journal_2_sale_journal_sale_stats"/>
<act_window name="Assigned packings" <act_window name="Assigned packing"
domain="[('journal_id', '=', active_id),('state', '=', 'assigned')]" domain="[('journal_id', '=', active_id),('state', '=', 'assigned')]"
res_model="stock.picking" res_model="stock.picking"
src_model="sale_journal.picking.journal" src_model="sale_journal.picking.journal"
id="act_sale_journal_picking_journal_2_stock_picking_assigned"/> id="act_sale_journal_picking_journal_2_stock_picking_assigned"/>
<act_window name="Confirmed packings" <act_window name="Confirmed packing"
domain="[('journal_id', '=', active_id),('state', '=', 'confirmed')]" domain="[('journal_id', '=', active_id),('state', '=', 'confirmed')]"
res_model="stock.picking" res_model="stock.picking"
src_model="sale_journal.picking.journal" src_model="sale_journal.picking.journal"
id="act_sale_journal_picking_journal_2_stock_picking_confirmed"/> id="act_sale_journal_picking_journal_2_stock_picking_confirmed"/>
<act_window name="Assigned packings" <act_window name="Assigned packing"
domain="[('sale_journal_id', '=', active_id),('state', '=', 'assigned')]" domain="[('sale_journal_id', '=', active_id),('state', '=', 'assigned')]"
res_model="stock.picking" res_model="stock.picking"
src_model="sale_journal.sale.journal" src_model="sale_journal.sale.journal"
id="act_sale_journal_sale_journal_2_stock_picking_assigned"/> id="act_sale_journal_sale_journal_2_stock_picking_assigned"/>
<act_window name="Confirmed packings" <act_window name="Confirmed packing"
domain="[('sale_journal_id', '=', active_id),('state', '=', 'confirmed')]" domain="[('sale_journal_id', '=', active_id),('state', '=', 'confirmed')]"
res_model="stock.picking" res_model="stock.picking"
src_model="sale_journal.sale.journal" src_model="sale_journal.sale.journal"

View File

@ -163,7 +163,7 @@
<field name="planned_hours">4.0</field> <field name="planned_hours">4.0</field>
<field model="res.users" name="user_id" search="[('login','=','demo')]"/> <field model="res.users" name="user_id" search="[('login','=','demo')]"/>
<field model="scrum.project" name="project_id" ref="scrum_project_1"/> <field model="scrum.project" name="project_id" ref="scrum_project_1"/>
<field name="name">Finnish the automated plugin system</field> <field name="name">Finish the automated plugin system</field>
<field name="product_backlog_id" ref="scrum_product_backlog_2"/> <field name="product_backlog_id" ref="scrum_product_backlog_2"/>
</record> </record>
<record id="scrum_task_15" model="scrum.task"> <record id="scrum_task_15" model="scrum.task">

View File

@ -114,7 +114,7 @@ class stock_location(osv.osv):
_columns = { _columns = {
'name': fields.char('Location Name', size=64, required=True, translate=True), 'name': fields.char('Location Name', size=64, required=True, translate=True),
'active': fields.boolean('Active'), 'active': fields.boolean('Active'),
'usage': fields.selection([('supplier','Supplier Location'),('view','View'),('internal','Internal Location'),('customer','Customer Location'),('inventory','Inventory'),('procurement','Procurement'),('production','Production')], 'Location type', required=True), 'usage': fields.selection([('supplier','Supplier Location'),('view','View'),('internal','Internal Location'),('customer','Customer Location'),('inventory','Inventory'),('procurement','Procurement'),('production','Production')], 'Location Type', required=True),
'allocation_method': fields.selection([('fifo','FIFO'),('lifo','LIFO'),('nearest','Nearest')], 'Allocation Method', required=True), 'allocation_method': fields.selection([('fifo','FIFO'),('lifo','LIFO'),('nearest','Nearest')], 'Allocation Method', required=True),
'complete_name': fields.function(_complete_name, method=True, type='char', size=100, string="Location Name"), 'complete_name': fields.function(_complete_name, method=True, type='char', size=100, string="Location Name"),
@ -311,8 +311,8 @@ class stock_tracking(osv.osv):
'name': fields.char('Tracking', size=64, required=True), 'name': fields.char('Tracking', size=64, required=True),
'active': fields.boolean('Active'), 'active': fields.boolean('Active'),
'serial': fields.char('Reference', size=64), 'serial': fields.char('Reference', size=64),
'move_ids' : fields.one2many('stock.move', 'tracking_id', 'Moves tracked'), 'move_ids' : fields.one2many('stock.move', 'tracking_id', 'Moves Tracked'),
'date': fields.datetime('Date create', required=True), 'date': fields.datetime('Date Created', required=True),
} }
_defaults = { _defaults = {
'active': lambda *a: 1, 'active': lambda *a: 1,
@ -344,7 +344,7 @@ stock_tracking()
#---------------------------------------------------------- #----------------------------------------------------------
class stock_picking(osv.osv): class stock_picking(osv.osv):
_name = "stock.picking" _name = "stock.picking"
_description = "Packing list" _description = "Packing List"
def _set_maximum_date(self, cr, uid, ids, name, value, arg, context): def _set_maximum_date(self, cr, uid, ids, name, value, arg, context):
if not value: return False if not value: return False
if isinstance(ids, (int, long)): if isinstance(ids, (int, long)):
@ -427,7 +427,7 @@ class stock_picking(osv.osv):
'address_id': fields.many2one('res.partner.address', 'Partner'), 'address_id': fields.many2one('res.partner.address', 'Partner'),
'invoice_state':fields.selection([ 'invoice_state':fields.selection([
("invoiced","Invoiced"), ("invoiced","Invoiced"),
("2binvoiced","To be invoiced"), ("2binvoiced","To Be Invoiced"),
("none","Not from Packing")], "Invoice Status", ("none","Not from Packing")], "Invoice Status",
select=True, required=True, readonly=True, states={'draft':[('readonly',False)]}), select=True, required=True, readonly=True, states={'draft':[('readonly',False)]}),
} }
@ -788,7 +788,7 @@ class stock_production_lot(osv.osv):
_columns = { _columns = {
'name': fields.char('Serial', size=64, required=True), 'name': fields.char('Serial', size=64, required=True),
'ref': fields.char('Internal Ref.', size=64), 'ref': fields.char('Internal Ref', size=64),
'product_id': fields.many2one('product.product','Product',required=True), 'product_id': fields.many2one('product.product','Product',required=True),
'date': fields.datetime('Created Date', required=True), 'date': fields.datetime('Created Date', required=True),
'stock_available': fields.function(_get_stock, method=True, type="float", string="Available", select="2"), 'stock_available': fields.function(_get_stock, method=True, type="float", string="Available", select="2"),
@ -809,9 +809,9 @@ class stock_production_lot_revision(osv.osv):
_name = 'stock.production.lot.revision' _name = 'stock.production.lot.revision'
_description = 'Production lot revisions' _description = 'Production lot revisions'
_columns = { _columns = {
'name': fields.char('Revision name', size=64, required=True), 'name': fields.char('Revision Name', size=64, required=True),
'description': fields.text('Description'), 'description': fields.text('Description'),
'date': fields.date('Revision date'), 'date': fields.date('Revision Date'),
'indice': fields.char('Revision', size=16), 'indice': fields.char('Revision', size=16),
'author_id': fields.many2one('res.users', 'Author'), 'author_id': fields.many2one('res.users', 'Author'),
'lot_id': fields.many2one('stock.production.lot', 'Production lot', select=True, ondelete='cascade'), 'lot_id': fields.many2one('stock.production.lot', 'Production lot', select=True, ondelete='cascade'),
@ -868,7 +868,7 @@ class stock_move(osv.osv):
'priority': fields.selection([('0','Not urgent'),('1','Urgent')], 'Priority'), 'priority': fields.selection([('0','Not urgent'),('1','Urgent')], 'Priority'),
'date': fields.datetime('Date Created'), 'date': fields.datetime('Date Created'),
'date_planned': fields.datetime('Scheduled date', required=True), 'date_planned': fields.datetime('Scheduled Date', required=True),
'product_id': fields.many2one('product.product', 'Product', required=True, select=True), 'product_id': fields.many2one('product.product', 'Product', required=True, select=True),
@ -882,8 +882,8 @@ class stock_move(osv.osv):
'location_dest_id': fields.many2one('stock.location', 'Dest. Location', required=True, select=True), 'location_dest_id': fields.many2one('stock.location', 'Dest. Location', required=True, select=True),
'address_id' : fields.many2one('res.partner.address', 'Dest. Address'), 'address_id' : fields.many2one('res.partner.address', 'Dest. Address'),
'prodlot_id' : fields.many2one('stock.production.lot', 'Production lot', help="Production lot is used to put a serial number on the production"), 'prodlot_id' : fields.many2one('stock.production.lot', 'Production Lot', help="Production lot is used to put a serial number on the production"),
'tracking_id': fields.many2one('stock.tracking', 'Tracking lot', select=True, help="Tracking lot is the code that will be put on the logistic unit/pallet"), 'tracking_id': fields.many2one('stock.tracking', 'Tracking Lot', select=True, help="Tracking lot is the code that will be put on the logistical unit/pallet"),
# 'lot_id': fields.many2one('stock.lot', 'Consumer lot', select=True, readonly=True), # 'lot_id': fields.many2one('stock.lot', 'Consumer lot', select=True, readonly=True),
'auto_validate': fields.boolean('Auto Validate'), 'auto_validate': fields.boolean('Auto Validate'),
@ -891,7 +891,7 @@ class stock_move(osv.osv):
'move_dest_id': fields.many2one('stock.move', 'Dest. Move'), 'move_dest_id': fields.many2one('stock.move', 'Dest. Move'),
'move_history_ids': fields.many2many('stock.move', 'stock_move_history_ids', 'parent_id', 'child_id', 'Move History'), 'move_history_ids': fields.many2many('stock.move', 'stock_move_history_ids', 'parent_id', 'child_id', 'Move History'),
'move_history_ids2': fields.many2many('stock.move', 'stock_move_history_ids', 'child_id', 'parent_id', 'Move History'), 'move_history_ids2': fields.many2many('stock.move', 'stock_move_history_ids', 'child_id', 'parent_id', 'Move History'),
'picking_id': fields.many2one('stock.picking', 'Packing list', select=True), 'picking_id': fields.many2one('stock.picking', 'Packing List', select=True),
'note': fields.text('Notes'), 'note': fields.text('Notes'),

View File

@ -13,7 +13,7 @@
<report auto="False" id="report_lot_location" model="stock.location" name="lot.location" rml="stock/report/lot_location.rml" string="Lots by location"/> <report auto="False" id="report_lot_location" model="stock.location" name="lot.location" rml="stock/report/lot_location.rml" string="Lots by location"/>
<report id="report_location_overview_all" model="stock.location" name="stock.location.overview.all" string="Location Content (With childs)" xml="stock/report/lot_overview_all.xml" xsl="stock/report/lot_overview_all.xsl"/> <report id="report_location_overview_all" model="stock.location" name="stock.location.overview.all" string="Location Content (With children)" xml="stock/report/lot_overview_all.xml" xsl="stock/report/lot_overview_all.xsl"/>
</data> </data>
</openerp> </openerp>

View File

@ -904,7 +904,7 @@
<menuitem action="action_picking_tree" id="menu_action_picking_tree" parent="menu_stock_root" sequence="19"/> <menuitem action="action_picking_tree" id="menu_action_picking_tree" parent="menu_stock_root" sequence="19"/>
<record id="action_picking_tree2" model="ir.actions.act_window"> <record id="action_picking_tree2" model="ir.actions.act_window">
<field name="name">Available Packings</field> <field name="name">Available Packing</field>
<field name="res_model">stock.picking</field> <field name="res_model">stock.picking</field>
<field name="type">ir.actions.act_window</field> <field name="type">ir.actions.act_window</field>
<field name="view_type">form</field> <field name="view_type">form</field>
@ -932,7 +932,7 @@
<menuitem action="action_picking_tree2" id="menu_picking_waiting" parent="menu_action_picking_tree"/> <menuitem action="action_picking_tree2" id="menu_picking_waiting" parent="menu_action_picking_tree"/>
<record id="action_picking_tree3" model="ir.actions.act_window"> <record id="action_picking_tree3" model="ir.actions.act_window">
<field name="name">Confirmed Packings Waiting Availability</field> <field name="name">Confirmed Packing Waiting Availability</field>
<field name="res_model">stock.picking</field> <field name="res_model">stock.picking</field>
<field name="type">ir.actions.act_window</field> <field name="type">ir.actions.act_window</field>
<field name="view_type">form</field> <field name="view_type">form</field>
@ -1088,7 +1088,7 @@
<menuitem action="action_picking_tree4" id="menu_action_picking_tree4" parent="menu_stock_root" sequence="17"/> <menuitem action="action_picking_tree4" id="menu_action_picking_tree4" parent="menu_stock_root" sequence="17"/>
<record id="action_picking_tree5" model="ir.actions.act_window"> <record id="action_picking_tree5" model="ir.actions.act_window">
<field name="name">Packings to Process</field> <field name="name">Packing to Process</field>
<field name="res_model">stock.picking</field> <field name="res_model">stock.picking</field>
<field name="type">ir.actions.act_window</field> <field name="type">ir.actions.act_window</field>
<field name="view_type">form</field> <field name="view_type">form</field>
@ -1156,7 +1156,7 @@
<record id="action_picking_tree7" model="ir.actions.act_window"> <record id="action_picking_tree7" model="ir.actions.act_window">
<field name="name">Available Packings</field> <field name="name">Available Packing</field>
<field name="res_model">stock.picking</field> <field name="res_model">stock.picking</field>
<field name="type">ir.actions.act_window</field> <field name="type">ir.actions.act_window</field>
<field name="view_type">form</field> <field name="view_type">form</field>
@ -1167,7 +1167,7 @@
<menuitem action="action_picking_tree7" id="menu_action_picking_tree7" parent="menu_action_picking_tree6"/> <menuitem action="action_picking_tree7" id="menu_action_picking_tree7" parent="menu_action_picking_tree6"/>
<record id="action_picking_tree8" model="ir.actions.act_window"> <record id="action_picking_tree8" model="ir.actions.act_window">
<field name="name">Confirmed Packings Waiting Availability</field> <field name="name">Confirmed Packing Waiting Availability</field>
<field name="res_model">stock.picking</field> <field name="res_model">stock.picking</field>
<field name="type">ir.actions.act_window</field> <field name="type">ir.actions.act_window</field>
<field name="view_type">form</field> <field name="view_type">form</field>
@ -1178,7 +1178,7 @@
<menuitem action="action_picking_tree8" id="menu_action_picking_tree8" parent="menu_action_picking_tree6"/> <menuitem action="action_picking_tree8" id="menu_action_picking_tree8" parent="menu_action_picking_tree6"/>
<record id="action_picking_tree9" model="ir.actions.act_window"> <record id="action_picking_tree9" model="ir.actions.act_window">
<field name="name">New Internal Packings</field> <field name="name">New Internal Packing</field>
<field name="res_model">stock.picking</field> <field name="res_model">stock.picking</field>
<field name="type">ir.actions.act_window</field> <field name="type">ir.actions.act_window</field>
<field name="view_type">form</field> <field name="view_type">form</field>
@ -1288,7 +1288,7 @@
<menuitem action="action_move_form4" id="menu_action_move_form4" parent="menu_action_move_form2"/> <menuitem action="action_move_form4" id="menu_action_move_form4" parent="menu_action_move_form2"/>
<record id="action_picking_all" model="ir.actions.act_window"> <record id="action_picking_all" model="ir.actions.act_window">
<field name="name">Packings</field> <field name="name">Packing</field>
<field name="res_model">stock.picking</field> <field name="res_model">stock.picking</field>
<field name="type">ir.actions.act_window</field> <field name="type">ir.actions.act_window</field>
<field name="view_type">form</field> <field name="view_type">form</field>