Priyesh
2008-12-15 12:37:43 +05:30
45 changed files with 897 additions and 1085 deletions
+10 -7
View File
@@ -78,7 +78,7 @@ class account_payment_term_line(osv.osv):
'value': fields.selection([('procent','Percent'),('balance','Balance'),('fixed','Fixed Amount')], 'Value',required=True),
'value_amount': fields.float('Value Amount'),
'days': fields.integer('Number of Days',required=True, help="Number of days to add before computation of the day of month."),
'days2': fields.integer('Day of the Month',required=True, help="Day of the month, set -1 for the last day of the current month. If it's positive, it gives the day of the next month. Set 0 for net days (otherwise it's based on the end of the month)."),
'days2': fields.integer('Day of the Month',required=True, help="Day of the month, set -1 for the last day of the current month. If it's positive, it gives the day of the next month. Set 0 for net days (otherwise it's based on the beginning of the month)."),
'payment_id': fields.many2one('account.payment.term','Payment Term', required=True, select=True),
}
_defaults = {
@@ -681,6 +681,7 @@ account_fiscalyear()
class account_move(osv.osv):
_name = "account.move"
_description = "Account Entry"
_order = 'id desc'
def name_get(self, cursor, user, ids, context=None):
if not len(ids):
@@ -712,15 +713,16 @@ class account_move(osv.osv):
return result
_columns = {
'name': fields.char('Entry Number', size=64, required=True),
'name': fields.char('Number', size=64, required=True),
'ref': fields.char('Ref', size=64),
'period_id': fields.many2one('account.period', 'Period', required=True, states={'posted':[('readonly',True)]}),
'journal_id': fields.many2one('account.journal', 'Journal', required=True, states={'posted':[('readonly',True)]}),
'state': fields.selection([('draft','Draft'), ('posted','Posted')], 'Status', required=True, readonly=True),
'line_id': fields.one2many('account.move.line', 'move_id', 'Entries', states={'posted':[('readonly',True)]}),
'to_check': fields.boolean('To Be Verified'),
'partner_id': fields.related('line_id', 'partner_id', type="many2one", relation="res.partner", string="Partner", store=True),
'amount': fields.function(_amount_compute, method=True, string='Amount', digits=(16,2), store=True),
'partner_id': fields.related('line_id', 'partner_id', type="many2one", relation="res.partner", string="Partner"),
'amount': fields.function(_amount_compute, method=True, string='Amount', digits=(16,2)),
'date': fields.date('Date', required=True),
'type': fields.selection([
('pay_voucher','Cash Payment'),
('bank_pay_voucher','Bank Payment'),
@@ -737,6 +739,7 @@ class account_move(osv.osv):
'state': lambda *a: 'draft',
'period_id': _get_period,
'type' : lambda *a : 'journal_voucher',
'date': lambda *a:time.strftime('%Y-%m-%d'),
}
def _check_centralisation(self, cursor, user, ids):
@@ -1994,9 +1997,9 @@ class wizard_multi_charts_accounts(osv.osv_memory):
#create the account_account
dig = obj_multi.code_digits
code_main = len(account_template.code)
code_acc = account_template.code
if code_main<=dig and account_template.type != 'view':
code_main = account_template.code and len(account_template.code) or 0
code_acc = account_template.code or ''
if code_main>0 and code_main<=dig and account_template.type != 'view':
code_acc=str(code_acc) + (str('0'*(dig-code_main)))
vals={
'name': (obj_acc_root.id == account_template.id) and obj_multi.company_id.name or account_template.name,
+9 -7
View File
@@ -137,24 +137,26 @@
<field name="priority">2</field>
<field name="arch" type="xml">
<form string="Supplier invoice">
<field domain="[('type', '=', 'purchase')]" name="journal_id" select="2"/>
<field name="type" readonly="1" select="2"/>
<field name="partner_id" on_change="onchange_partner_id(type,partner_id,date_invoice,payment_term, partner_bank)" select="1"/>
<field domain="[('partner_id','=',partner_id)]" name="address_invoice_id"/>
<group col="6" colspan="4">
<field domain="[('type', '=', 'purchase')]" name="journal_id" select="2"/>
<field name="type" readonly="1" select="2"/>
<field name="currency_id" on_change="onchange_currency_id(currency_id)" select="2"/>
<field name="partner_id" on_change="onchange_partner_id(type,partner_id,date_invoice,payment_term, partner_bank)" select="1"/>
<field domain="[('partner_id','=',partner_id)]" name="address_invoice_id"/>
<field domain="[('type','&lt;&gt;','view'), ('company_id', '=', company_id),('journal_id','=',journal_id)]" name="account_id"/>
</group>
<notebook colspan="4">
<page string="Invoice">
<field domain="[('type','&lt;&gt;','view'), ('company_id', '=', company_id),('journal_id','=',journal_id)]" name="account_id"/>
<field name="date_due" select="1"/>
<field domain="[('partner_id', '=', partner_id)]" name="partner_bank" on_change="onchange_partner_bank(partner_bank)" select="2"/>
<field name="reference_type" nolabel="1" select="2" size="0"/>
<field name="reference" nolabel="1" select="1"/>
<field name="check_total" required="2"/>
<field name="currency_id" on_change="onchange_currency_id(currency_id)" select="2"/>
<field colspan="4" default_get="{'check_total': check_total, 'invoice_line': invoice_line, 'address_invoice_id': address_invoice_id, 'partner_id': partner_id, 'price_type': 'price_type' in dir() and price_type or False}" name="invoice_line" nolabel="1">
<tree string="Invoice lines" editable="top">
<field name="product_id" on_change="product_id_change(product_id, uos_id, quantity, name, parent.type, parent.partner_id, price_unit, parent.address_invoice_id)"/>
<field domain="[('company_id', '=', parent.company_id), ('journal_id', '=', parent.journal_id), ('type', '&lt;&gt;', 'view')]" name="account_id" on_change="onchange_account_id(parent.partner_id,account_id)"/>
<field name="invoice_line_tax_id" view_mode="2"/>
<field name="invoice_line_tax_id" view_mode="2" domain="[('parent_id','=',False)]"/>
<field domain="[('type','&lt;&gt;','view'), ('company_id', '=', parent.company_id)]" name="account_analytic_id"/>
<field name="quantity"/>
<field name="price_unit"/>
+39 -9
View File
@@ -110,7 +110,11 @@ class account_move_line(osv.osv):
account = journal_obj.default_credit_account_id
else:
account = journal_obj.default_debit_account_id
data['account_id'] = account.id
if account and ((not fields) or ('debit' in fields) or ('credit' in fields)):
data['account_id'] = account.id
s = -total_new
data['debit'] = s>0 and s or 0.0
data['credit'] = s<0 and -s or 0.0
@@ -122,7 +126,6 @@ class account_move_line(osv.osv):
return data
period_obj = self.pool.get('account.period')
tax_obj=self.pool.get('account.tax')
# Compute the current move
move_id = False
@@ -190,7 +193,13 @@ class account_move_line(osv.osv):
else:
account = move.journal_id.default_debit_account_id
data['account_id'] = account.id
if account and ((not fields) or ('debit' in fields) or ('credit' in fields)):
data['account_id'] = account.id
# Propose the price VAT excluded, the VAT will be added when confirming line
if account.tax_ids:
tax = account.tax_ids
for t in self.pool.get('account.tax').compute_inv(cr, uid, tax, total, 1):
total -= t['amount']
s = -total
data['debit'] = s>0 and s or 0.0
@@ -301,6 +310,13 @@ class account_move_line(osv.osv):
return [('id', '=', '0')]
return [('id', 'in', [x[0] for x in res])]
def _get_move_lines(self, cr, uid, ids, context={}):
result = []
for move in self.pool.get('account.move').browse(cr, uid, ids, context=context):
for line in move.line_id:
result.append(line.id)
return result
_columns = {
'name': fields.char('Name', size=64, required=True),
'quantity': fields.float('Quantity', digits=(16,2), help="The optional quantity expressed by this line, eg: number of product sold. The quantity is not a legal requirement but is very usefull for some reports."),
@@ -324,7 +340,10 @@ class account_move_line(osv.osv):
'partner_id': fields.many2one('res.partner', 'Partner Ref.'),
'date_maturity': fields.date('Maturity date', help="This field is used for payable and receivable entries. You can put the limit date for the payment of this entry line."),
'date': fields.date('Effective date', required=True),
'date': fields.related('move_id','date', string='Effective date', type='date', required=True,
store={
'account.move': (_get_move_lines, ['date'], 20)
}),
'date_created': fields.date('Creation date'),
'analytic_lines': fields.one2many('account.analytic.line', 'move_id', 'Analytic lines'),
'centralisation': fields.selection([('normal','Normal'),('credit','Credit Centralisation'),('debit','Debit Centralisation')], 'Centralisation', size=6),
@@ -339,7 +358,7 @@ class account_move_line(osv.osv):
#TODO: remove this
'amount_taxed':fields.float("Taxed Amount",digits=(16,2)),
'parent_move_lines':fields.many2many('account.move.line', 'account_move_line_rel', 'child_id', 'parent_id', 'Parent'),
'reconcile_implicit':fields.boolean('Implicit Reconciliaiton')
'reconcile_implicit':fields.boolean('Implicit Reconciliation')
}
def _get_date(self, cr, uid, context):
@@ -630,7 +649,7 @@ class account_move_line(osv.osv):
return False
def fields_view_get(self, cr, uid, view_id=None, view_type='form', context={}, toolbar=False):
result = super(osv.osv, self).fields_view_get(cr, uid, view_id,view_type,context)
result = super(osv.osv, self).fields_view_get(cr, uid, view_id,view_type,context,toolbar=toolbar)
if view_type=='tree' and 'journal_id' in context:
title = self.view_header_get(cr, uid, view_id, view_type, context)
journal = self.pool.get('account.journal').browse(cr, uid, context['journal_id'])
@@ -705,6 +724,11 @@ class account_move_line(osv.osv):
if ('account_id' in vals) or ('journal_id' in vals) or ('period_id' in vals) or ('move_id' in vals) or ('debit' in vals) or ('credit' in vals) or ('date' in vals):
self._update_check(cr, uid, ids, context)
todo_date = None
if vals.get('date', False):
todo_date = vals['date']
del vals['date']
print 'Writing', vals, 'to move_line', ids
result = super(account_move_line, self).write(cr, uid, ids, vals, context)
if check:
@@ -713,6 +737,8 @@ class account_move_line(osv.osv):
if line.move_id.id not in done:
done.append(line.move_id.id)
self.pool.get('account.move').validate(cr, uid, [line.move_id.id], context)
if todo_date:
self.pool.get('account.move').write(cr, uid, [line.move_id.id], {'date': todo_date}, context=context)
return result
def _update_journal_check(self, cr, uid, journal_id, period_id, context={}):
@@ -778,9 +804,9 @@ class account_move_line(osv.osv):
if not vals.get('move_id', False):
if journal.sequence_id:
name = self.pool.get('ir.sequence').get_id(cr, uid, journal.sequence_id.id)
#name = self.pool.get('ir.sequence').get_id(cr, uid, journal.sequence_id.id)
v = {
'name': name,
'date': vals.get('date', time.strftime('%Y-%m-%d')),
'period_id': context['period_id'],
'journal_id': context['journal_id']
}
@@ -788,6 +814,10 @@ class account_move_line(osv.osv):
vals['move_id'] = move_id
else:
raise osv.except_osv(_('No piece number !'), _('Can not create an automatic sequence for this piece !\n\nPut a sequence in the journal definition for automatic numbering or create a sequence manually for this piece.'))
else:
if 'date' in vals:
self.pool.get('account.move').write(cr, uid, [move_id], {'date':vals['date']}, context=context)
del vals['date']
ok = not (journal.type_control_ids or journal.account_control_ids)
if ('account_id' in vals):
@@ -820,7 +850,7 @@ class account_move_line(osv.osv):
if journal.analytic_journal_id:
vals['analytic_lines'] = [(0,0, {
'name': vals['name'],
'date': vals['date'],
'date': vals.get('date', time.strftime('%Y-%m-%d')),
'account_id': vals['analytic_account_id'],
'unit_amount':'quantity' in vals and vals['quantity'] or 1.0,
'amount': vals['debit'] or vals['credit'],
+5 -2
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<data noupdate="1">
<!-- This file must be loaded _after_ account_demo.xml ! -->
<record id="test_invoice_1" model="account.invoice">
<field name="currency_id" ref="base.EUR"/>
@@ -40,10 +40,11 @@
<workflow action="invoice_open" model="account.invoice" ref="test_invoice_1"/>
<!--
<assert id="test_invoice_1" model="account.invoice" string="Test invoice 1 is now open">
<test expr="state">open</test>
</assert>
-->
<!--
journal_id: bank_journal
period_id: period_7 (or 'period_' +time.strftime('m'))
@@ -60,6 +61,7 @@
writeoff_journal_id,
context={}):
-->
<!--
<function model="account.invoice" name="pay_and_reconcile">
<value eval="[ref('test_invoice_1')]"/>
<value eval="1850"/>
@@ -74,5 +76,6 @@
<assert id="test_invoice_1" model="account.invoice" string="Test invoice 1 is now paid">
<test expr="state">paid</test>
</assert>
-->
</data>
</openerp>
+23 -19
View File
@@ -468,8 +468,9 @@
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Account entry">
<field name="ref"/>
<field name="name"/>
<field name="date"/>
<field name="ref"/>
<field name="period_id"/>
<field name="journal_id"/>
<field name="partner_id"/>
@@ -665,14 +666,13 @@
<field name="journal_id"/>
<field name="debit" sum="Total debit"/>
<field name="credit" sum="Total credit"/>
<field name="account_tax_id"/>
<field name="account_tax_id" groups="base.group_extended"/>
<field name="analytic_account_id"/>
<field name="amount_currency"/>
<field name="currency_id"/>
<field name="amount_currency" groups="base.group_extended"/>
<field name="currency_id" groups="base.group_extended"/>
<field name="state"/>
<field name="reconcile_id"/>
<field name="reconcile_partial_id"/>
<field colspan="4" name="reconcile_implicit"/>
<field name="reconcile_partial_id" groups="base.group_extended"/>
</tree>
</field>
</record>
@@ -724,10 +724,10 @@
<page string="Analytic Lines">
<field colspan="4" name="analytic_lines" nolabel="1"/>
</page>
<!--<page string="Move Lines">
<page string="Linked Lines" groups="base.group_extended">
<field colspan="4" name="reconcile_implicit"/>
<field colspan="4" name="parent_move_lines" nolabel="0"/>
</page>-->
</page>
</notebook>
</form>
</field>
@@ -800,13 +800,15 @@
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Account Entry">
<field name="ref"/>
<field name="name"/>
<field name="period_id"/>
<field name="date"/>
<field name="ref"/>
<field name="journal_id"/>
<field name="period_id"/>
<field name="partner_id"/>
<field name="amount"/>
<field name="line_id"/>
<field name="to_check" groups="base.group_extended"/>
<field name="amount"/>
<field name="state"/>
</tree>
</field>
@@ -822,18 +824,20 @@
<field name="name" select="1" readonly="True"/>
<field name="period_id" select="2"/>
<field name="journal_id" select="1"/>
<field name="ref" select="1" groups="base.group_extended"/>
<field name="to_check" select="2" groups="base.group_extended"/>
<field name="type" select="1" groups="base.group_extended"/>
<field name="date" select="1"/>
<field name="ref" select="1"/>
<field name="to_check" select="2"/>
<field name="type" select="2" groups="base.group_extended"/>
</group>
<field name="partner_id" invisible="1" select="1"/>
<field name="amount" invisible="1" select="1"/>
<field colspan="4" name="line_id" nolabel="1" widget="one2many_list" default_get="{'lines':line_id ,'journal':journal_id }">
<form string="Account Entry Line">
<separator colspan="4" string="General Information"/>
<field name="name" select="1"/>
<field name="date"/>
<field name="account_id"/>
<field name="partner_id" on_change="onchange_partner_id(False,partner_id,account_id,debit,credit,date,parent.journal_id)"/>
<field name="partner_id" on_change="onchange_partner_id(False,partner_id,account_id,debit,credit,parent.date,parent.journal_id)"/>
<field name="debit" select="1"/>
<field name="credit" select="1"/>
@@ -853,15 +857,16 @@
<field name="state"/>
</form>
<tree editable="top" string="Account Entry Line">
<field name="date"/>
<field name="name"/>
<field name="partner_id" on_change="onchange_partner_id(False,partner_id,account_id,debit,credit,date,parent.journal_id)"/>
<field name="partner_id" on_change="onchange_partner_id(False,partner_id,account_id,debit,credit,parent.date,parent.journal_id)"/>
<field name="account_id"/>
<field name="date_maturity"/>
<field name="ref"/>
<field name="debit" sum="Total Debit"/>
<field name="credit" sum="Total Credit"/>
<field name="analytic_account_id"/>
<field name="tax_code_id"/>
<field name="tax_amount"/>
<field name="state"/>
</tree>
</field>
@@ -1330,7 +1335,6 @@
<field name="credit" sum="Total credit"/>
<field name="account_tax_id"/>
<field name="analytic_account_id"/>
<field colspan="4" name="reconcile_implicit"/>
<field name="state"/>
</tree>
</field>
+17 -31
View File
@@ -187,23 +187,23 @@ class account_invoice(osv.osv):
'move_id': fields.many2one('account.move', 'Invoice Movement', readonly=True, help="Link to the automatically generated account moves."),
'amount_untaxed': fields.function(_amount_all, method=True, digits=(16,2),string='Untaxed',
store={
'account.invoice': (lambda self, cr, uid, ids, c={}: ids, None, 10),
'account.invoice.tax': (_get_invoice_tax, None, 10),
'account.invoice.line': (_get_invoice_line, None, 10),
'account.invoice': (lambda self, cr, uid, ids, c={}: ids, None, 20),
'account.invoice.tax': (_get_invoice_tax, None, 20),
'account.invoice.line': (_get_invoice_line, None, 20),
},
multi='all'),
'amount_tax': fields.function(_amount_all, method=True, digits=(16,2), string='Tax',
store={
'account.invoice': (lambda self, cr, uid, ids, c={}: ids, None, 10),
'account.invoice.tax': (_get_invoice_tax, None, 10),
'account.invoice.line': (_get_invoice_line, None, 10),
'account.invoice': (lambda self, cr, uid, ids, c={}: ids, None, 20),
'account.invoice.tax': (_get_invoice_tax, None, 20),
'account.invoice.line': (_get_invoice_line, None, 20),
},
multi='all'),
'amount_total': fields.function(_amount_all, method=True, digits=(16,2), string='Total',
store={
'account.invoice': (lambda self, cr, uid, ids, c={}: ids, None, 10),
'account.invoice.tax': (_get_invoice_tax, None, 10),
'account.invoice.line': (_get_invoice_line, None, 10),
'account.invoice': (lambda self, cr, uid, ids, c={}: ids, None, 20),
'account.invoice.tax': (_get_invoice_tax, None, 20),
'account.invoice.line': (_get_invoice_line, None, 20),
},
multi='all'),
'currency_id': fields.many2one('res.currency', 'Currency', required=True, readonly=True, states={'draft':[('readonly',False)]}),
@@ -217,8 +217,9 @@ class account_invoice(osv.osv):
'move_lines':fields.function(_get_lines , method=True,type='many2many' , relation='account.move.line',string='Move Lines'),
'residual': fields.function(_amount_residual, method=True, digits=(16,2),string='Residual',
store={
'account.invoice': (lambda self, cr, uid, ids, c={}: ids, None, 12),
'account.invoice.tax': (_get_invoice_tax, None, 12),
'account.invoice': (lambda self, cr, uid, ids, c={}: ids, None, 50),
'account.invoice.tax': (_get_invoice_tax, None, 50),
'account.invoice.line': (_get_invoice_line, None, 50),
},
help="Remaining amount due."),
'payment_ids': fields.function(_compute_lines, method=True, relation='account.move.line', type="many2many", string='Payments'),
@@ -601,15 +602,11 @@ class account_invoice(osv.osv):
journal_id = inv.journal_id.id #self._get_journal(cr, uid, {'type': inv['type']})
journal = self.pool.get('account.journal').browse(cr, uid, journal_id)
if journal.sequence_id and not inv.move_name:
name = self.pool.get('ir.sequence').get_id(cr, uid, journal.sequence_id.id)
else:
name = inv.move_name
if journal.centralisation:
raise osv.except_osv(_('UserError'),
_('Can not create invoice move on centralized journal'))
move = {'name': name, 'line_id': line, 'journal_id': journal_id}
move = {'ref': inv.number, 'line_id': line, 'journal_id': journal_id, 'date': date}
period_id=inv.period_id and inv.period_id.id or False
if not period_id:
period_ids= self.pool.get('account.period').search(cr,uid,[('date_start','<=',inv.date_invoice or time.strftime('%Y-%m-%d')),('date_stop','>=',inv.date_invoice or time.strftime('%Y-%m-%d'))])
@@ -629,7 +626,6 @@ class account_invoice(osv.osv):
def line_get_convert(self, cr, uid, x, part, date, context={}):
return {
'date':date,
'date_maturity': x.get('date_maturity', False),
'partner_id':part,
'name':x['name'][:64],
@@ -662,6 +658,9 @@ class account_invoice(osv.osv):
ref = self._convert_ref(cr, uid, number)
cr.execute('UPDATE account_invoice SET number=%s ' \
'WHERE id=%s', (number, id))
cr.execute('UPDATE account_move SET ref=%s ' \
'WHERE id=%s AND (ref is null OR ref = \'\')',
(ref, move_id))
cr.execute('UPDATE account_move_line SET ref=%s ' \
'WHERE move_id=%s AND (ref is null OR ref = \'\')',
(ref, move_id))
@@ -813,16 +812,7 @@ class account_invoice(osv.osv):
assert len(ids)==1, "Can only pay one invoice at a time"
invoice = self.browse(cr, uid, ids[0])
src_account_id = invoice.account_id.id
journal = self.pool.get('account.journal').browse(cr, uid, pay_journal_id)
if journal.sequence_id:
name = self.pool.get('ir.sequence').get_id(cr, uid, journal.sequence_id.id)
else:
raise osv.except_osv(_('No piece number !'), _('Can not create an automatic sequence for this piece !\n\nPut a sequence in the journal definition for automatic numbering or create a sequence manually for this piece.'))
# Take the seq as name for move
if journal.sequence_id:
seq = self.pool.get('ir.sequence').get_id(cr, uid, journal.sequence_id.id)
else:
raise osv.except_osv('No piece number !', 'Can not create an automatic sequence for this piece !\n\nPut a sequence in the journal definition for automatic numbering or create a sequence manually for this piece.')
types = {'out_invoice': -1, 'in_invoice': 1, 'out_refund': 1, 'in_refund': -1}
direction = types[invoice.type]
#take the choosen date
@@ -831,26 +821,22 @@ class account_invoice(osv.osv):
else:
date=time.strftime('%Y-%m-%d')
l1 = {
'name': name,
'debit': direction * pay_amount>0 and direction * pay_amount,
'credit': direction * pay_amount<0 and - direction * pay_amount,
'account_id': src_account_id,
'partner_id': invoice.partner_id.id,
'date': date,
'ref':invoice.number,
}
l2 = {
'name':name,
'debit': direction * pay_amount<0 and - direction * pay_amount,
'credit': direction * pay_amount>0 and direction * pay_amount,
'account_id': pay_account_id,
'partner_id': invoice.partner_id.id,
'date': date,
'ref':invoice.number,
}
lines = [(0, 0, l1), (0, 0, l2)]
move = {'name': seq, 'line_id': lines, 'journal_id': pay_journal_id, 'period_id': period_id}
move = {'ref': inv.number, 'line_id': lines, 'journal_id': pay_journal_id, 'period_id': period_id, 'date': date}
move_id = self.pool.get('account.move').create(cr, uid, move)
line_ids = []
@@ -59,12 +59,7 @@ class wizard_account_chart(wizard.interface):
result = mod_obj._get_id(cr, uid, 'account', 'action_account_tree')
id = mod_obj.read(cr, uid, [result], ['res_id'])[0]['res_id']
result = act_obj.read(cr, uid, [id])[0]
if 'lang' in context:
import tools
trans_name = tools.translate(cr, 'ir.actions.act_window,name', 'model', context['lang'], result['name'])
if trans_name:
result['name'] = trans_name
result = act_obj.read(cr, uid, [id], context=context)[0]
result['context'] = str({'fiscalyear': data['form']['fiscalyear'],'target_move':data['form']['target_move']})
if data['form']['fiscalyear']:
result['name']+=':'+pooler.get_pool(cr.dbname).get('account.fiscalyear').read(cr,uid,[data['form']['fiscalyear']])[0]['code']
+54 -54
View File
@@ -2,62 +2,62 @@
<openerp>
<data>
<record model="ir.ui.view" id="view_account_report_bs_form">
<field name="name">account.report.bs.form</field>
<field name="model">account.report.bs</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Account reporting">
<notebook>
<page string="General">
<field name="name" select="1" colspan="3"/>
<field name="code" select="1"/>
<field name="parent_id" select = "1" />
<field name="sequence"/>
<field name="color_font"/>
<field name="color_back"/>
<field name="font_style" />
<field name="report_type" />
<newline/>
<separator string="Accounts" colspan="4"/>
<field name="account_id" colspan="4" nolable="1" domain="[('type','=','view')]"/>
</page><page string="Notes">
<field name="note" nolabel="1" colspan="4"/>
</page>
</notebook>
</form>
</field>
</record>
<record model="ir.ui.view" id="view_account_report_bs_form">
<field name="name">account.report.bs.form</field>
<field name="model">account.report.bs</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Account reporting">
<notebook>
<page string="General">
<field name="name" select="1" colspan="3"/>
<field name="code" select="1"/>
<field name="parent_id" select="1" />
<field name="sequence"/>
<field name="color_font"/>
<field name="color_back"/>
<field name="font_style" />
<field name="report_type" />
<newline/>
<separator string="Accounts" colspan="4"/>
<field name="account_id" colspan="4" nolabel="1" domain="[('type','=','view')]"/>
</page><page string="Notes">
<field name="note" nolabel="1" colspan="4"/>
</page>
</notebook>
</form>
</field>
</record>
<record model="ir.ui.view" id="view_account_report_tree_bs">
<field name="name">account.report.report.tree.bs</field>
<field name="model">account.report.bs</field>
<field name="type">tree</field>
<field name="field_parent">child_id</field>
<field name="arch" type="xml">
<tree string="Account reporting">
<field name="code"/>
<field name="name"/>
</tree>
</field>
</record>
<record model="ir.actions.act_window" id="action_account_tree_bs">
<field name="type">ir.actions.act_window</field>
<field name="res_model">account.report.bs</field>
<field name="domain">[('parent_id','=',False)]</field>
<field name="view_type">tree</field>
<field name="view_id" ref="view_account_report_tree_bs"/>
</record>
<menuitem name="Balance Sheet Report" id="menu_finan_config_BSheet" parent="account.menu_finance_configuration"/>
<menuitem name="Balance Sheet Report" id="action_account_report_bs_form" action="action_account_tree_bs" parent="menu_finan_config_BSheet"/>
<record model="ir.ui.view" id="view_account_report_tree_bs">
<field name="name">account.report.report.tree.bs</field>
<field name="model">account.report.bs</field>
<field name="type">tree</field>
<field name="field_parent">child_id</field>
<field name="arch" type="xml">
<tree string="Account reporting">
<field name="code"/>
<field name="name"/>
</tree>
</field>
</record>
<record model="ir.actions.act_window" id="action_account_tree_bs">
<field name="type">ir.actions.act_window</field>
<field name="res_model">account.report.bs</field>
<field name="domain">[('parent_id','=',False)]</field>
<field name="view_type">tree</field>
<field name="view_id" ref="view_account_report_tree_bs"/>
</record>
<menuitem name="Balance Sheet Report" id="menu_finan_config_BSheet" parent="account.menu_finance_configuration"/>
<menuitem name="Balance Sheet Report" id="action_account_report_bs_form" action="action_account_tree_bs" parent="menu_finan_config_BSheet"/>
<record model="ir.actions.act_window" id="acc_bs_report_action_form">
<field name="type">ir.actions.act_window</field>
<field name="res_model">account.report.bs</field>
<field name="view_type">form</field>
<field name="view_id" ref="view_account_report_bs_form"/>
</record>
<menuitem name="Balance Sheet Rrport Form" id="bs_report_action_form" action="acc_bs_report_action_form" parent="menu_finan_config_BSheet"/>
<record model="ir.actions.act_window" id="acc_bs_report_action_form">
<field name="type">ir.actions.act_window</field>
<field name="res_model">account.report.bs</field>
<field name="view_type">form</field>
<field name="view_id" ref="view_account_report_bs_form"/>
</record>
<menuitem name="Balance Sheet Rrport Form" id="bs_report_action_form" action="acc_bs_report_action_form" parent="menu_finan_config_BSheet"/>
@@ -107,9 +107,9 @@ class account_invoice_line(osv.osv):
return result.keys()
_columns = {
'price_subtotal': fields.function(_amount_line2, method=True, string='Subtotal w/o tax', multi='amount',
store={'account.invoice':(_get_invoice,['price_type']), 'account.invoice.line': (lambda self,cr,uid,ids,c={}: ids, None)}),
store={'account.invoice':(_get_invoice,['price_type'],10), 'account.invoice.line': (lambda self,cr,uid,ids,c={}: ids, None,10)}),
'price_subtotal_incl': fields.function(_amount_line2, method=True, string='Subtotal', multi='amount',
store={'account.invoice':(_get_invoice,['price_type']), 'account.invoice.line': (lambda self,cr,uid,ids,c={}: ids, None)}),
store={'account.invoice':(_get_invoice,['price_type'],10), 'account.invoice.line': (lambda self,cr,uid,ids,c={}: ids, None,10)}),
}
_defaults = {
+2 -2
View File
@@ -1,4 +1,4 @@
#!/usr/pkg/bin/python
#!/usr/bin/python
from common import *
from code39 import *
from code93 import *
@@ -52,4 +52,4 @@ def run():
if __name__=='__main__':
run()
+3 -3
View File
@@ -59,10 +59,10 @@ class res_partner_contact(osv.osv):
res = []
for r in self.read(cr, user, ids, ['name','first_name','title']):
addr = r['title'] and str(r['title'])+" " or ''
addr +=str(r['name'] or '')
addr += r.get('name', '')
if r['name'] and r['first_name']:
addr += ' '
addr += str(r['first_name'] or '')
addr += (r.get('first_name', '') or '')
res.append((r['id'], addr))
return res
res_partner_contact()
@@ -79,7 +79,7 @@ class res_partner_address(osv.osv):
res.append((r['id'], r['partner_id'][1]))
else:
addr = str('')
addr += str(r['street'] or '') + ' ' + str(r['zip'] or '') + ' ' + str(r['city'] or '')
addr += "%s %s %s" % ( r.get('street', ''), r.get('zip', ''), r.get('city', '') )
res.append((r['id'], addr.strip() or '/'))
return res
+5 -5
View File
@@ -45,7 +45,7 @@
<field name="name"/>
<field name="sequence_contact"/>
<field name="phone"/>
<field name="email"/>
<field name="email" widget="email"/>
<field name="date_start" />
<field name="date_stop" />
<field name="state" />
@@ -105,7 +105,7 @@
<newline/>
<field name="phone"/>
<field name="fax"/>
<field name="email"/>
<field name="email" widget="email"/>
<newline/>
<field name="job_ids" mode="tree,form" nolabel="1" colspan="4">
<tree string="Contacts" editable="top">
@@ -121,7 +121,7 @@
<field name="contact_id"/>
<field name="function_id"/>
<field name="phone"/>
<field name="email"/>
<field name="email" widget="email"/>
</form>
</field>
</form>
@@ -277,7 +277,7 @@
<field name="contact_id"/>
<field name="function_id"/>
<field name="phone"/>
<field name="email"/>
<field name="email" widget="email"/>
</form>
</field>
</field>
@@ -314,7 +314,7 @@
<field name="address_id" select="1"/>
<field name="contact_id" select="1"/>
<field name="function_id" select="1"/>
<field name="email" select="2"/>
<field name="email" select="2" widget="email"/>
<field name="phone" select="2"/>
<field name="sequence_contact" select="2" groups="base.group_user"/>
<field name="sequence_partner" select="2" groups="base.group_user"/>
@@ -1,58 +1,63 @@
<?xml version="1.0"?>
<openerp>
<data>
<wizard
id="wizard_base_module_record"
string="Record module"
model="ir.module.module"
multi="True"
name="base_module_record.module_record"/>
<data>
<wizard
id="wizard_base_module_record"
string="Record module"
model="ir.module.module"
multi="True"
name="base_module_record.module_record"/>
<menuitem
parent="base.menu_management"
name="Module Recording"
id="menu_wizard_base_mod_rec"/>
<menuitem
parent="menu_wizard_base_mod_rec"
name="Start Recording"
type="wizard"
action="wizard_base_module_record"
id="menu_wizard_base_module_record"/>
<menuitem
parent="base.menu_custom"
name="Module Creation"
id="menu_wizard_base_mod_rec"/>
<menuitem
parent="menu_wizard_base_mod_rec"
name="Module Recorder"
id="menu_wizard_base_mod_rec_rec"/>
<menuitem
parent="menu_wizard_base_mod_rec"
name="Stop Recording"
type="wizard"
action="wizard_base_module_record"
id="menu_wizard_base_module_record_stop"/>
<menuitem
parent="menu_wizard_base_mod_rec_rec"
name="Start Recording"
type="wizard"
action="wizard_base_module_record"
id="menu_wizard_base_module_record"/>
<menuitem
parent="menu_wizard_base_mod_rec_rec"
name="Stop Recording"
type="wizard"
action="wizard_base_module_record"
id="menu_wizard_base_module_record_stop"/>
<wizard
id="wizard_base_module_save"
string="Save Recorded Module"
model="ir.module.module"
multi="True"
name="base_module_record.module_save"/>
<wizard
id="wizard_base_module_save"
string="Save Recorded Module"
model="ir.module.module"
multi="True"
name="base_module_record.module_save"/>
<menuitem
parent="menu_wizard_base_mod_rec"
name="Save Recorded Module"
type="wizard"
action="wizard_base_module_save"
id="menu_wizard_base_module_save"/>
<menuitem
parent="menu_wizard_base_mod_rec_rec"
name="Save Recorded Module"
type="wizard"
action="wizard_base_module_save"
id="menu_wizard_base_module_save"/>
<wizard
id="wizard_base_module_record_objects"
string="Record Objects"
model="ir.module.module"
multi="True"
name="base_module_record.module_record_objects"/>
<menuitem
parent="menu_wizard_base_mod_rec"
name="Export Customizations As a Module"
type="wizard"
action="wizard_base_module_record_objects"
id="menu_wizard_base_module_record_objects"/>
<wizard
id="wizard_base_module_record_objects"
string="Export Customizations As a Module"
model="ir.module.module"
multi="True"
name="base_module_record.module_record_objects"/>
<menuitem
parent="menu_wizard_base_mod_rec"
name="Export Customizations As a Module"
type="wizard"
action="wizard_base_module_record_objects"
id="menu_wizard_base_module_record_objects"/>
</data>
</data>
</openerp>
+1 -1
View File
@@ -30,7 +30,7 @@ people to intelligently and efficiently manage tasks, issues, and requests.
It manages key tasks such as communication, identification, prioritization,
assignment, resolution and notification.
Open ERP ensures that all cases are successfly tracked by users, customers and
Open ERP ensures that all cases are successfully tracked by users, customers and
suppliers. It can automatically send reminders, escalate the request, trigger
specific methods and lots of others actions based on your enterprise own rules.
+6 -5
View File
@@ -131,22 +131,23 @@ class questionnaire(osv.osv):
query = """
select name, id
from crm_profiling_question
where id in ( select question from profile_questionnaire_quest_rel where questionnaire = %s)"""% data['form']['questionnaire_name']
cr.execute(query)
where id in ( select question from profile_questionnaire_quest_rel where questionnaire = %s)"""
res = cr.execute(query, data['form']['questionnaire_name'])
result = cr.fetchall()
quest_fields={}
quest_form='''<?xml version="1.0"?>
<form string="%s">''' % _('Questionnaire')
for x in cr.fetchall():
for x in result:
quest_form = quest_form + '''<field name="quest_form'''+str(x[1])+'''"/><newline/>'''
quest_fields['quest_form'+str(x[1])] = {'string': str(x[0]), 'type': 'many2one', 'relation': 'crm_profiling.answer', 'domain': [('question_id','=',x[1])] }
quest_form = quest_form + '''</form>'''
return quest_form,quest_fields
_columns={
_columns = {
'name': fields.char("Questionnaire",size=128, required=True),
'description':fields.text("Description", required=True),
'questions_ids': fields.many2many('crm_profiling.question','profile_questionnaire_quest_rel','questionnaire', 'question', "Questions"),
}
}
questionnaire()
+6 -3
View File
@@ -21,7 +21,7 @@
##############################################################################
import time
import netsvc
from osv import fields,osv,orm
from osv import fields,osv
from tools.translate import _
class delivery_carrier(osv.osv):
@@ -38,7 +38,10 @@ class delivery_carrier(osv.osv):
if order_id:
order = sale_obj.browse(cr, uid, [order_id])[0]
carrier_grid=self.grid_get(cr,uid,[carrier.id],order.partner_shipping_id.id,context)
price=grid_obj.get_price(cr, uid, carrier_grid, order, time.strftime('%Y-%m-%d'), context)
if carrier_grid:
price=grid_obj.get_price(cr, uid, carrier_grid, order, time.strftime('%Y-%m-%d'), context)
else:
price = 0.0
res[carrier.id]=price
return res
_columns = {
@@ -124,7 +127,7 @@ class delivery_grid(osv.osv):
ok = True
break
if not ok:
raise except_osv(_('No price avaible !'), _('No line matched this order in the choosed delivery grids !'))
raise osv.except_osv(_('No price available !'), _('No line matched this order in the choosed delivery grids !'))
return price
+2 -2
View File
@@ -96,7 +96,7 @@
<field name="operator" nolabel="1"/>
<field name="max_value" nolabel="1"/>
<field name="list_price"/>
<field name="standard_price"/>
<field name="standard_price" groups="base.group_extended"/>
<field name="price_type"/>
<field name="variable_factor"/>
</form>
@@ -113,7 +113,7 @@
<field name="operator"/>
<field name="max_value"/>
<field name="list_price"/>
<field name="standard_price"/>
<field name="standard_price" groups="base.group_extended"/>
</tree>
</field>
</record>
+4 -2
View File
@@ -70,6 +70,7 @@ class abstracted_fs:
# Ok
def db_list(self):
return pooler.pool_dic.keys()
s = netsvc.LocalService('db')
result = s.list()
self.db_name_list = []
@@ -89,8 +90,9 @@ class abstracted_fs:
finally:
if cr is not None:
cr.close()
if db is not None:
pooler.close_db(db_name)
#if db is not None:
# pooler.close_db(db_name)
print 'Return', self.db_name_list
return self.db_name_list
# Ok
+1 -1
View File
@@ -21,7 +21,7 @@
##############################################################################
{
"name" : "Attendances Of Employees",
"version" : "1.0",
"version" : "1.1",
"author" : "Tiny",
"category" : "Generic Modules/Human Resources",
"description": "This module aims to manage employee's attendances.",
+2 -4
View File
@@ -1,10 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<data noupdate="True">
<record id="attendance1" model="hr.attendance">
<record id="attendance1" model="hr.attendance">
<field eval="time.strftime('%Y-%m-01 08:21')" name="name"/>
<field name="action">sign_in</field>
<field name="employee_id" ref="hr.employee1"/>
+4 -4
View File
@@ -198,7 +198,7 @@
<para style="terp_default_Right_9">[[ '%.2f' % line.unit_amount or '' ]]</para>
</td>
<td>
<para style="terp_default_Right_9">[[ company.currency_id.name ]]</para>
<para style="terp_default_Right_9">[[ o.currency_id.name ]]</para>
</td>
<td>
<para style="terp_default_Right_9">[[ '%.2f' % line.unit_quantity or '' ]]</para>
@@ -207,7 +207,7 @@
<para style="terp_default_Right_9">[[ '%.2f' % line.total_amount or '' ]] </para>
</td>
<td>
<para style="terp_default_Right_9">[[ company.currency_id.name ]]</para>
<para style="terp_default_Right_9">[[ o.currency_id.name ]]</para>
</td>
</tr>
<tr>
@@ -276,7 +276,7 @@
<para style="terp_tblheader_Details_Right">[[ '%.2f' % o.amount ]]</para>
</td>
<td>
<para style="terp_tblheader_Details_Right">[[ company.currency_id.name ]]</para>
<para style="terp_tblheader_Details_Right">[[ o.currency_id.name ]]</para>
</td>
</tr>
</blockTable>
@@ -297,4 +297,4 @@
</para>
<para style="terp_default_9">This document must be dated and signed for reimbursment</para>
</story>
</document>
</document>
+2 -2
View File
@@ -66,8 +66,8 @@
"depends" : ["base", "account", "base_iban", "base_vat", "account_chart"],
"init_xml" : [],
"demo_xml" : [],
"update_xml" : ["account_chart.xml",
"account_tax.xml"],
"update_xml" : ["account_types.xml","account_chart.xml",
"account_tax.xml","l10n_uk_wizard.xml"],
"installable": True
}
+62 -221
View File
@@ -1,345 +1,186 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data noupdate="1">
<!-- Top level of main chart -->
<record id="chart0" model="account.account">
<!-- Account Templates-->
<record id="chart0" model="account.account.template">
<field name="code">0</field>
<field name="name">Account Chart UK</field>
<field eval="0" name="parent_id"/>
<field name="type">view</field>
<field eval="1" name="sign"/>
<field name="user_type" ref="account_type_view"/>
</record>
<!-- Balance Sheet -->
<record id="bal" model="account.account">
<record id="bal" model="account.account.template">
<field name="name">Balance Sheet</field>
<field ref="chart0" name="parent_id"/>
<field name="type">view</field>
<field eval="1" name="sign"/>
<field name="user_type" ref="account_type_view"/>
</record>
<record id="fas" model="account.account">
<record id="fas" model="account.account.template">
<field name="name">Fixed Assets</field>
<field ref="bal" name="parent_id"/>
<field name="type">view</field>
<field eval="1" name="sign"/>
<field name="user_type" ref="account_type_view"/>
</record>
<record id="xfa" model="account.account">
<record id="xfa" model="account.account.template">
<field name="name">Fixed Asset Account</field>
<field ref="fas" name="parent_id"/>
<field name="type">asset</field>
<field eval="1" name="sign"/>
<field name="type">other</field>
<field name="user_type" ref="account_type_asset"/>
</record>
<record id="nca" model="account.account">
<record id="nca" model="account.account.template">
<field name="name">Net Current Assets</field>
<field ref="bal" name="parent_id"/>
<field name="type">view</field>
<field eval="1" name="sign"/>
<field name="user_type" ref="account_type_view"/>
</record>
<record id="cas" model="account.account">
<record id="cas" model="account.account.template">
<field name="name">Current Assets</field>
<field ref="nca" name="parent_id"/>
<field name="type">view</field>
<field eval="1" name="sign"/>
<field name="user_type" ref="account_type_view"/>
</record>
<record id="stk" model="account.account">
<record id="stk" model="account.account.template">
<field name="code"/>
<field name="name">Purchased Stocks</field>
<field ref="cas" name="parent_id"/>
<field name="type">asset</field>
<field eval="1" name="sign"/>
<field name="type">other</field>
<field name="user_type" ref="account_type_asset"/>
</record>
<record id="a_recv" model="account.account">
<record id="a_recv" model="account.account.template">
<field name="code"/>
<field name="name">Debtors</field>
<field ref="cas" name="parent_id"/>
<field name="type">receivable</field>
<field eval="1" name="sign"/>
<field eval="True" name="reconcile"/>
<field name="user_type" ref="account_type_receivable"/>
</record>
<record id="account.property_account_receivable" model="ir.property">
<!-- <record id="account.property_account_receivable" model="ir.property">
<field eval="'account.account,'+str(a_recv)" name="value"/>
</record> -->
</record>
<record id="ova" model="account.account">
<record id="ova" model="account.account.template">
<field name="name">Output VAT</field>
<field ref="cas" name="parent_id"/>
<field name="type">tax</field>
<field eval="1" name="sign"/>
<field name="type">other</field>
<field name="user_type" ref="account_type_tax"/>
</record>
<record id="bnk" model="account.account">
<record id="bnk" model="account.account.template">
<field name="name">Bank Current Account</field>
<field ref="cas" name="parent_id"/>
<field name="type">cash</field>
<field eval="1" name="sign"/>
<field name="type">other</field>
<field name="user_type" ref="account_type_cash"/>
</record>
<record id="cash" model="account.account">
<record id="cash" model="account.account.template">
<field name="code"/>
<field name="name">Cash</field>
<field ref="cas" name="parent_id"/>
<field name="type">cash</field>
<field eval="1" name="sign"/>
<field name="type">other</field>
<field name="user_type" ref="account_type_cash"/>
</record>
<record id="cli" model="account.account">
<record id="cli" model="account.account.template">
<field name="name">Current Liabilities</field>
<field ref="nca" name="parent_id"/>
<field name="type">view</field>
<field eval="1" name="sign"/>
<field name="user_type" ref="account_type_view"/>
</record>
<record id="a_pay" model="account.account">
<record id="a_pay" model="account.account.template">
<field name="code"/>
<field name="name">Creditors</field>
<field ref="cli" name="parent_id"/>
<field name="type">payable</field>
<field eval="1" name="sign"/>
<field eval="True" name="reconcile"/>
<field name="user_type" ref="account_type_payable"/>
</record>
<record id="account.property_account_payable" model="ir.property">
<!-- <record id="account.property_account_payable" model="ir.property">
<field eval="'account.account,'+str(a_pay)" name="value"/>
</record>-->
</record>
<record id="iva" model="account.account">
<record id="iva" model="account.account.template">
<field name="name">Input VAT</field>
<field ref="cli" name="parent_id"/>
<field name="type">tax</field>
<field eval="1" name="sign"/>
<field name="type">other</field>
<field name="user_type" ref="account_type_tax"/>
</record>
<!-- Profit and Loss -->
<record id="gpf" model="account.account">
<record id="gpf" model="account.account.template">
<field name="name">Profit and Loss</field>
<field ref="chart0" name="parent_id"/>
<field name="type">view</field>
<field eval="1" name="sign"/>
<field name="user_type" ref="account_type_view"/>
</record>
<record id="rev" model="account.account">
<record id="rev" model="account.account.template">
<field name="name">Revenue</field>
<field ref="gpf" name="parent_id"/>
<field name="type">view</field>
<field eval="1" name="sign"/>
<field name="user_type" ref="account_type_view"/>
</record>
<record id="a_sale" model="account.account">
<record id="a_sale" model="account.account.template">
<field name="code"/>
<field name="name">Product Sales</field>
<field ref="rev" name="parent_id"/>
<field name="type">income</field>
<field eval="1" name="sign"/>
<field name="type">other</field>
<field name="user_type" ref="account_type_income"/>
</record>
<record id="account.property_account_income_categ" model="ir.property">
<!-- <record id="account.property_account_income_categ" model="ir.property">
<field eval="'account.account,'+str(a_sale)" name="value"/>
</record> -->
</record>
<record id="cos" model="account.account">
<record id="cos" model="account.account.template">
<field name="name">Cost of Sales</field>
<field ref="gpf" name="parent_id"/>
<field name="type">view</field>
<field eval="1" name="sign"/>
<field name="user_type" ref="account_type_view"/>
</record>
<record id="cog" model="account.account">
<record id="cog" model="account.account.template">
<field name="code"/>
<field name="name">Cost of Goods Sold</field>
<field ref="cos" name="parent_id"/>
<field name="type">expense</field>
<field eval="1" name="sign"/>
<field name="type">other</field>
<field name="user_type" ref="account_type_expense"/>
</record>
<record id="ovr" model="account.account">
<record id="ovr" model="account.account.template">
<field name="name">Overheads</field>
<field ref="gpf" name="parent_id"/>
<field name="type">view</field>
<field eval="1" name="sign"/>
<field name="user_type" ref="account_type_view"/>
</record>
<record id="a_expense" model="account.account">
<record id="a_expense" model="account.account.template">
<field name="code"/>
<field name="name">Expenses</field>
<field ref="ovr" name="parent_id"/>
<field name="type">expense</field>
<field eval="1" name="sign"/>
<field name="type">other</field>
<field name="user_type" ref="account_type_expense"/>
</record>
<record id="account.property_account_expense_categ" model="ir.property">
<!-- <record id="account.property_account_expense_categ" model="ir.property">
<field eval="'account.account,'+str(a_expense)" name="value"/>
</record>
</record> -->
</data>
</openerp>
+86 -281
View File
@@ -1,444 +1,249 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data noupdate="True">
<!-- VAT Code Definitions -->
<!-- Invoiced VAT -->
<!-- Input VAT -->
<record id="vat_code_balance_net" model="account.tax.code">
<field name="name">VAT balance to pay</field>
<record id="vat_code_chart_root" model="account.tax.code.template">
<field name="name">Plan Fees UK</field>
</record>
<record id="vat_code_balance_net" model="account.tax.code.template">
<field name="name">VAT Balance to Pay</field>
<field name="parent_id" ref="vat_code_chart_root"/>
</record>
<record id="vat_code_input" model="account.tax.code">
<record id="vat_code_input" model="account.tax.code.template">
<field name="name">Input VAT</field>
<field name="parent_id" ref="vat_code_balance_net"/>
</record>
<record id="vat_code_input_S" model="account.tax.code">
<field name="name">Input VAT rate S (17.5%)</field>
<record id="vat_code_input_S" model="account.tax.code.template">
<field name="name">Input VAT Rate S (15%)</field>
<field name="parent_id" ref="vat_code_input"/>
</record>
<record id="vat_code_input_R" model="account.tax.code">
<field name="name">Input VAT rate R (5%)</field>
<record id="vat_code_input_R" model="account.tax.code.template">
<field name="name">Input VAT Rate R (5%)</field>
<field name="parent_id" ref="vat_code_input"/>
</record>
<!-- Output VAT -->
<record id="vat_code_output" model="account.tax.code">
<record id="vat_code_output" model="account.tax.code.template">
<field name="name">Output VAT</field>
<field name="parent_id" ref="vat_code_balance_net"/>
</record>
<record id="vat_code_output_S" model="account.tax.code">
<field name="name">Output VAT rate S (17.5%)</field>
<record id="vat_code_output_S" model="account.tax.code.template">
<field name="name">Output VAT Rate S (15%)</field>
<field name="parent_id" ref="vat_code_output"/>
</record>
<record id="vat_code_output_R" model="account.tax.code">
<field name="name">Output VAT rate R (5%)</field>
<record id="vat_code_output_R" model="account.tax.code.template">
<field name="name">Output VAT Rate R (5%)</field>
<field name="parent_id" ref="vat_code_output"/>
</record>
<!-- Invoiced Base of VAT -->
<!-- Purchases -->
<record id="vat_code_base_net" model="account.tax.code">
<field name="name">Tax bases</field>
<record id="vat_code_base_net" model="account.tax.code.template">
<field name="name">Tax Bases</field>
<field name="parent_id" ref="vat_code_chart_root"/>
</record>
<record id="vat_code_base_purchases" model="account.tax.code">
<field name="name">Taxable purchases base</field>
<record id="vat_code_base_purchases" model="account.tax.code.template">
<field name="name">Taxable Purchases Base</field>
<field name="parent_id" ref="vat_code_base_net"/>
</record>
<record id="vat_code_purch_S" model="account.tax.code">
<field name="name">Taxable purchases rated S (17.5%)</field>
<record id="vat_code_purch_S" model="account.tax.code.template">
<field name="name">Taxable Purchases Rated S (15%)</field>
<field name="parent_id" ref="vat_code_base_purchases"/>
</record>
<record id="vat_code_purch_R" model="account.tax.code">
<field name="name">Taxable purchases rated R (5%)</field>
<record id="vat_code_purch_R" model="account.tax.code.template">
<field name="name">Taxable Purchases Rated R (5%)</field>
<field name="parent_id" ref="vat_code_base_purchases"/>
</record>
<record id="vat_code_purch_Z" model="account.tax.code">
<field name="name">Taxable purchases rated Z (0%)</field>
<record id="vat_code_purch_Z" model="account.tax.code.template">
<field name="name">Taxable Purchases Rated Z (0%)</field>
<field name="parent_id" ref="vat_code_base_purchases"/>
</record>
<record id="vat_code_purch_X" model="account.tax.code">
<field name="name">Taxable purchases type X (Exempt)</field>
<record id="vat_code_purch_X" model="account.tax.code.template">
<field name="name">Taxable Purchases Type X (Exempt)</field>
<field name="parent_id" ref="vat_code_base_purchases"/>
</record>
<record id="vat_code_purch_O" model="account.tax.code">
<field name="name">Taxable purchases type O (Out of scope)</field>
<record id="vat_code_purch_O" model="account.tax.code.template">
<field name="name">Taxable Purchases Type O (Out of scope)</field>
<field name="parent_id" ref="vat_code_base_purchases"/>
</record>
<!-- Sales -->
<record id="vat_code_base_sales" model="account.tax.code">
<field name="name">Base of taxable sales</field>
<record id="vat_code_base_sales" model="account.tax.code.template">
<field name="name">Base of Taxable Sales</field>
<field name="parent_id" ref="vat_code_base_net"/>
</record>
<record id="vat_code_sales_S" model="account.tax.code">
<field name="name">Taxable sales rated S (17.5%)</field>
<record id="vat_code_sales_S" model="account.tax.code.template">
<field name="name">Taxable Sales Rated S (15%)</field>
<field name="parent_id" ref="vat_code_base_sales"/>
</record>
<record id="vat_code_sales_R" model="account.tax.code">
<field name="name">Taxable sales rated R (5%)</field>
<record id="vat_code_sales_R" model="account.tax.code.template">
<field name="name">Taxable Sales Rated R (5%)</field>
<field name="parent_id" ref="vat_code_base_sales"/>
</record>
<record id="vat_code_sales_Z" model="account.tax.code">
<field name="name">Taxable sales rated Z (0%)</field>
<record id="vat_code_sales_Z" model="account.tax.code.template">
<field name="name">Taxable Sales Rated Z (0%)</field>
<field name="parent_id" ref="vat_code_base_sales"/>
</record>
<record id="vat_code_sales_X" model="account.tax.code">
<field name="name">Taxable sales type X (Exempt)</field>
<record id="vat_code_sales_X" model="account.tax.code.template">
<field name="name">Taxable Sales Type X (Exempt)</field>
<field name="parent_id" ref="vat_code_base_sales"/>
</record>
<record id="vat_code_sales_O" model="account.tax.code">
<field name="name">Taxable sales type O (Out of scope)</field>
<record id="vat_code_sales_O" model="account.tax.code.template">
<field name="name">Taxable Sales Type O (Out of scope)</field>
<field name="parent_id" ref="vat_code_base_sales"/>
</record>
<!-- Chart Template -->
<record id="l10n_uk_chart_template" model="account.chart.template">
<field name="name">UK Minimal Account Chart Template</field>
<field name="account_root_id" ref="l10n_chart_uk_minimal.chart0"/>
<field name="tax_code_root_id" ref="l10n_chart_uk_minimal.vat_code_chart_root"/>
<field name="bank_account_view_id" ref="l10n_chart_uk_minimal.bnk"/>
<field name="property_account_receivable" ref="l10n_chart_uk_minimal.a_recv"/>
<field name="property_account_payable" ref="l10n_chart_uk_minimal.a_pay"/>
<field name="property_account_expense_categ" ref="l10n_chart_uk_minimal.a_expense"/>
<field name="property_account_income_categ" ref="l10n_chart_uk_minimal.a_sale"/>
</record>
<!-- VAT Codes -->
<!-- Purchases + Input VAT -->
<record id="ivats" model="account.tax">
<record id="ivats" model="account.tax.template">
<field name="chart_template_id" ref="l10n_uk_chart_template"/>
<field name="name">IVAT S</field>
<field eval="0.175" name="amount"/>
<field eval="0.15" name="amount"/>
<field name="type">percent</field>
<field name="account_collected_id" ref="iva"/>
<field name="account_paid_id" ref="iva"/>
<field name="account_collected_id" ref="l10n_chart_uk_minimal.iva"/>
<field name="account_paid_id" ref="l10n_chart_uk_minimal.iva"/>
<field name="base_code_id" ref="vat_code_purch_S"/>
<field name="tax_code_id" ref="vat_code_input_S"/>
<field name="ref_base_code_id" ref="vat_code_purch_S"/>
<field name="ref_tax_code_id" ref="vat_code_input_S"/>
</record>
<record id="ivatr" model="account.tax">
<record id="ivatr" model="account.tax.template">
<field name="chart_template_id" ref="l10n_uk_chart_template"/>
<field name="name">IVAT R</field>
<field eval="0.005" name="amount"/>
<field name="type">percent</field>
<field name="account_collected_id" ref="iva"/>
<field name="account_paid_id" ref="iva"/>
<field name="account_collected_id" ref="l10n_chart_uk_minimal.iva"/>
<field name="account_paid_id" ref="l10n_chart_uk_minimal.iva"/>
<field name="base_code_id" ref="vat_code_purch_R"/>
<field name="tax_code_id" ref="vat_code_input_R"/>
<field name="ref_base_code_id" ref="vat_code_purch_R"/>
<field name="ref_tax_code_id" ref="vat_code_input_R"/>
</record>
<record id="ivatz" model="account.tax">
<record id="ivatz" model="account.tax.template">
<field name="chart_template_id" ref="l10n_uk_chart_template"/>
<field name="name">IVAT Z</field>
<field eval="0.0" name="amount"/>
<field name="type">percent</field>
<field name="base_code_id" ref="vat_code_purch_Z"/>
<field name="ref_base_code_id" ref="vat_code_purch_Z"/>
</record>
<record id="ivatx" model="account.tax">
<record id="ivatx" model="account.tax.template">
<field name="chart_template_id" ref="l10n_uk_chart_template"/>
<field name="name">IVAT X</field>
<field eval="0.0" name="amount"/>
<field name="type">percent</field>
<field name="base_code_id" ref="vat_code_purch_X"/>
<field name="ref_base_code_id" ref="vat_code_purch_X"/>
</record>
<record id="ivato" model="account.tax">
<record id="ivato" model="account.tax.template">
<field name="chart_template_id" ref="l10n_uk_chart_template"/>
<field name="name">IVAT O</field>
<field eval="0.0" name="amount"/>
<field name="type">percent</field>
<field name="base_code_id" ref="vat_code_purch_O"/>
<field name="ref_base_code_id" ref="vat_code_purch_O"/>
</record>
<!-- Sales + Output VAT -->
<record id="ovats" model="account.tax">
<record id="ovats" model="account.tax.template">
<field name="chart_template_id" ref="l10n_uk_chart_template"/>
<field name="name">OVAT S</field>
<field eval="0.175" name="amount"/>
<field eval="0.15" name="amount"/>
<field name="type">percent</field>
<field name="account_collected_id" ref="ova"/>
<field name="account_paid_id" ref="ova"/>
<field name="account_collected_id" ref="l10n_chart_uk_minimal.ova"/>
<field name="account_paid_id" ref="l10n_chart_uk_minimal.ova"/>
<field name="base_code_id" ref="vat_code_sales_S"/>
<field name="tax_code_id" ref="vat_code_output_S"/>
<field name="ref_base_code_id" ref="vat_code_sales_S"/>
<field name="ref_tax_code_id" ref="vat_code_output_S"/>
</record>
<record id="ovatr" model="account.tax">
<record id="ovatr" model="account.tax.template">
<field name="chart_template_id" ref="l10n_uk_chart_template"/>
<field name="name">OVAT R</field>
<field eval="0.005" name="amount"/>
<field name="type">percent</field>
<field name="account_collected_id" ref="ova"/>
<field name="account_paid_id" ref="ova"/>
<field name="account_collected_id" ref="l10n_chart_uk_minimal.ova"/>
<field name="account_paid_id" ref="l10n_chart_uk_minimal.ova"/>
<field name="base_code_id" ref="vat_code_sales_R"/>
<field name="tax_code_id" ref="vat_code_output_R"/>
<field name="ref_base_code_id" ref="vat_code_sales_R"/>
<field name="ref_tax_code_id" ref="vat_code_output_R"/>
</record>
<record id="ovatz" model="account.tax">
<record id="ovatz" model="account.tax.template">
<field name="chart_template_id" ref="l10n_uk_chart_template"/>
<field name="name">OVAT Z</field>
<field eval="0.0" name="amount"/>
<field name="type">percent</field>
<field name="base_code_id" ref="vat_code_sales_Z"/>
<field name="ref_base_code_id" ref="vat_code_sales_Z"/>
</record>
<record id="ovatx" model="account.tax">
<record id="ovatx" model="account.tax.template">
<field name="chart_template_id" ref="l10n_uk_chart_template"/>
<field name="name">OVAT X</field>
<field eval="0.0" name="amount"/>
<field name="type">percent</field>
<field name="base_code_id" ref="vat_code_sales_X"/>
<field name="ref_base_code_id" ref="vat_code_sales_X"/>
</record>
<record id="ovato" model="account.tax">
<record id="ovato" model="account.tax.template">
<field name="chart_template_id" ref="l10n_uk_chart_template"/>
<field name="name">OVAT O</field>
<field eval="0.0" name="amount"/>
<field name="type">percent</field>
<field name="base_code_id" ref="vat_code_sales_O"/>
<field name="ref_base_code_id" ref="vat_code_sales_O"/>
</record>
</data>
</openerp>
</openerp>
@@ -0,0 +1,60 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data noupdate="True">
<record model="account.account.type" id="account_type_receivable" >
<field name="name">Receivable</field>
<field name="code">receivable</field>
<field name="close_method">unreconciled</field>
</record>
<record model="account.account.type" id="account_type_payable" >
<field name="name">Payable</field>
<field name="code">payable</field>
<field name="close_method">unreconciled</field>
</record>
<record model="account.account.type" id="account_type_view">
<field name="name">View</field>
<field name="code">view</field>
<field name="close_method">none</field>
</record>
<record model="account.account.type" id="account_type_income" >
<field name="name">Income</field>
<field name="code">income</field>
<field name="close_method">none</field>
</record>
<record model="account.account.type" id="account_type_expense">
<field name="name">Expense</field>
<field name="code">expense</field>
<field name="close_method">none</field>
</record>
<record model="account.account.type" id="account_type_tax">
<field name="name">Tax</field>
<field name="code">tax</field>
<field name="close_method">unreconciled</field>
</record>
<record model="account.account.type" id="account_type_cash">
<field name="name">Cash</field>
<field name="code">cash</field>
<field name="close_method">balance</field>
</record>
<record model="account.account.type" id="account_type_asset">
<field name="name">Asset</field>
<field name="code">asset</field>
<field name="close_method">balance</field>
</record>
<record model="account.account.type" id="account_type_equity">
<field name="name">Equity</field>
<field name="code">equity</field>
<field name="close_method">balance</field>
</record>
</data>
</openerp>
@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="config_call_account_template_uk_minimal" model="ir.actions.todo">
<field name="name">Generate Chart of Accounts from a Chart Template</field>
<field name="note">Generate Chart of Accounts from a Chart Template. You will be asked to pass the name of the company, the chart template to follow, the no. of digits to generate the code for your accounts and Bank account, currency to create Journals. Thus,the pure copy of chart Template is generated.
This is the same wizard that runs from Financial Managament/Configuration/Financial Accounting/Financial Accounts/Generate Chart of Accounts from a Chart Template.</field>
<field name="action_id" ref="account.action_wizard_multi_chart"/>
<field name="state">open</field>
</record>
</data>
</openerp>
+16 -4
View File
@@ -634,7 +634,7 @@ class mrp_production(osv.osv):
}
res_final_id = self.pool.get('stock.move').create(cr, uid, data)
self.write(cr, uid, [production.id], {'move_created_ids': [(6, 'WTF', [res_final_id])]})
self.write(cr, uid, [production.id], {'move_created_ids': [(6, 0, [res_final_id])]})
moves = []
for line in production.product_lines:
move_id=False
@@ -776,7 +776,15 @@ class mrp_procurement(osv.osv):
'property_ids': fields.many2many('mrp.property', 'mrp_procurement_property_rel', 'procurement_id','property_id', 'Properties'),
'message': fields.char('Latest error', size=64),
'state': fields.selection([('draft','Draft'),('confirmed','Confirmed'),('exception','Exception'),('running','Running'),('cancel','Cancel'),('done','Done'),('waiting','Waiting')], 'Status')
'state': fields.selection([
('draft','Draft'),
('confirmed','Confirmed'),
('exception','Exception'),
('running','Running'),
('cancel','Cancel'),
('ready','Ready'),
('done','Done'),
('waiting','Waiting')], 'Status')
}
_defaults = {
'state': lambda *a: 'draft',
@@ -1072,7 +1080,7 @@ class mrp_procurement(osv.osv):
return True
def action_check_finnished(self, cr, uid, ids):
return True
return self.check_move_done(cr, uid, ids)
def action_check(self, cr, uid, ids):
ok = False
@@ -1082,17 +1090,21 @@ class mrp_procurement(osv.osv):
ok = True
return ok
def action_ready(self, cr, uid, ids):
res = self.write(cr, uid, ids, {'state':'ready'})
return res
def action_done(self, cr, uid, ids):
for procurement in self.browse(cr, uid, ids):
if procurement.move_id:
if procurement.close_move and (procurement.move_id.state <> 'done'):
self.pool.get('stock.move').action_done(cr, uid, [procurement.move_id.id])
res = self.write(cr, uid, ids, {'state':'done', 'date_close':time.strftime('%Y-%m-%d')})
wf_service = netsvc.LocalService("workflow")
for id in ids:
wf_service.trg_trigger(uid, 'mrp.procurement', id, cr)
return res
def run_scheduler(self, cr, uid, automatic=False, use_new_cursor=False, context=None):
'''
use_new_cursor: False or the dbname
+6 -6
View File
@@ -10,7 +10,7 @@
<field model="product.uom" name="product_uom" search="[]"/>
<field model="stock.warehouse" name="warehouse_id" search="[]"/>
<field model="product.product" name="product_id" search="[('default_code','=','MB1')]"/>
<field model="stock.location" name="location_id" search="[('name','=','Stock')]"/>
<field name="location_id" ref="stock.stock_location_stock"/>
</record>
<record id="stock_warehouse_orderpoint_1" model="stock.warehouse.orderpoint">
<field name="product_max_qty">50.0</field>
@@ -18,7 +18,7 @@
<field model="product.uom" name="product_uom" search="[]"/>
<field model="stock.warehouse" name="warehouse_id" search="[]"/>
<field model="product.product" name="product_id" search="[('default_code','=','CPU1')]"/>
<field model="stock.location" name="location_id" search="[('name','=','Output')]"/>
<field name="location_id" ref="stock.stock_location_stock"/>
</record>
<record id="stock_warehouse_orderpoint_2" model="stock.warehouse.orderpoint">
<field name="product_max_qty">20.0</field>
@@ -26,7 +26,7 @@
<field model="product.uom" name="product_uom" search="[]"/>
<field model="stock.warehouse" name="warehouse_id" search="[]"/>
<field model="product.product" name="product_id" search="[('default_code','=','HDD1')]"/>
<field model="stock.location" name="location_id" search="[('name','=','Workshop')]"/>
<field name="location_id" ref="stock.stock_location_stock"/>
</record>
<record id="stock_warehouse_orderpoint_3" model="stock.warehouse.orderpoint">
<field name="product_max_qty">50.0</field>
@@ -34,7 +34,7 @@
<field model="product.uom" name="product_uom" search="[]"/>
<field model="stock.warehouse" name="warehouse_id" search="[]"/>
<field model="product.product" name="product_id" search="[('default_code','=','FAN')]"/>
<field model="stock.location" name="location_id" search="[('name','=','Stock')]"/>
<field name="location_id" ref="stock.stock_location_stock"/>
</record>
<record id="stock_warehouse_orderpoint_4" model="stock.warehouse.orderpoint">
<field name="product_max_qty">5.0</field>
@@ -42,7 +42,7 @@
<field model="product.uom" name="product_uom" search="[]"/>
<field model="stock.warehouse" name="warehouse_id" search="[]"/>
<field model="product.product" name="product_id" search="[('default_code','=','PC1')]"/>
<field model="stock.location" name="location_id" search="[('name','=','Output')]"/>
<field name="location_id" ref="stock.stock_location_stock"/>
</record>
<record id="stock_warehouse_orderpoint_5" model="stock.warehouse.orderpoint">
<field name="product_max_qty">50.0</field>
@@ -50,7 +50,7 @@
<field model="product.uom" name="product_uom" search="[]"/>
<field model="stock.warehouse" name="warehouse_id" search="[]"/>
<field model="product.product" name="product_id" search="[('default_code','=','TOW1')]"/>
<field model="stock.location" name="location_id" search="[('name','=','Workshop')]"/>
<field name="location_id" ref="stock.stock_location_stock"/>
</record>
</data>
</openerp>
+8 -11
View File
@@ -185,7 +185,9 @@
</record>
<record id="act_make_done" model="workflow.activity">
<field name="wkf_id" ref="wkf"/>
<field name="name">done</field>
<field name="name">ready</field>
<field name="kind">function</field>
<field name="action">action_ready()</field>
</record>
<record id="act_wait_done" model="workflow.activity">
<field name="wkf_id" ref="wkf"/>
@@ -301,14 +303,9 @@
<record id="trans_make_to_stock_make_done" model="workflow.transition">
<field name="act_from" ref="act_make_to_stock"/>
<field name="act_to" ref="act_make_done"/>
<field name="condition">check_move_done()</field>
<field name="trigger_model">stock.move</field>
<field name="trigger_expr_id">[move_id.id]</field>
</record>
<record id="trans_make_to_stock_cancel" model="workflow.transition">
<field name="act_from" ref="act_make_to_stock"/>
<field name="act_to" ref="act_cancel"/>
<field name="condition">check_move_cancel()</field>
<field name="condition">True</field>
<field name="trigger_model" eval="False"/>
<field name="trigger_expr_id" eval="False"/>
</record>
<record id="trans_produce_cancel" model="workflow.transition">
<field name="act_from" ref="act_produce"/>
@@ -348,8 +345,8 @@
</record>
<record id="trans_make_done_confirm" model="workflow.transition">
<field name="act_from" ref="act_make_done"/>
<field name="act_to" ref="act_confirm"/>
<field name="condition">not action_check_finnished()</field>
<field name="act_to" ref="act_cancel"/>
<field name="condition">check_move_cancel()</field>
</record>
</data>
</openerp>
+1 -1
View File
@@ -4,7 +4,7 @@
<menuitem
id="menu_process"
name="Enterprise Process"
name="Enterprise Processes"
parent="base.menu_custom"/>
<!-- Views for Process -->
+8 -14
View File
@@ -36,14 +36,11 @@ class price_type(osv.osv):
sale and purchase prices based on some fields of the product.
"""
def _price_field_get(self, cr, uid, context={}):
import tools
cr.execute('select name, field_description, model from ir_model_fields where model in (%s,%s) and ttype=%s order by name', ('product.product', 'product.template', 'float'))
mf = self.pool.get('ir.model.fields')
ids = mf.search(cr, uid, [('model','in', (('product.product'),('product.template'))), ('ttype','=','float')], context=context)
res = []
for field in cr.dictfetchall():
desc = tools.translate(cr, field['model'] + ',' + field['name'], 'field', context.get('lang', False) or 'en_US')
if not desc:
desc = field['field_description']
res.append((field['name'], desc))
for field in mf.browse(cr, uid, ids, context=context):
res.append((field.name, field.field_description))
return res
def _get_currency(self, cr, uid, ctx):
@@ -304,14 +301,11 @@ product_pricelist_version()
class product_pricelist_item(osv.osv):
def _price_field_get(self, cr, uid, context={}):
cr.execute('select id,name from product_price_type where active')
import tools
pt = self.pool.get('product.price.type')
ids = pt.search(cr, uid, [], context=context)
result = []
for line in cr.fetchall():
transl_name = tools.translate(cr, 'product.price.type,name', 'model', ('lang' in context) and context['lang'] or 'en_US', line[1])
if not transl_name:
transl_name = line[1]
result.append((line[0], transl_name))
for line in pt.browse(cr, uid, ids, context=context):
result.append((line.id, line.name))
result.append((-1, _('Other Pricelist')))
result.append((-2, _('Partner section of the product form')))
+5 -2
View File
@@ -160,7 +160,7 @@ class product_ul(osv.osv):
_name = "product.ul"
_description = "Shipping Unit"
_columns = {
'name' : fields.char('Name', size=64,select=True),
'name' : fields.char('Name', size=64,select=True, required=True),
'type' : fields.selection([('unit','Unit'),('pack','Pack'),('box', 'Box'), ('palet', 'Palet')], 'Type', required=True),
}
product_ul()
@@ -337,7 +337,10 @@ class product_product(osv.osv):
pricelist = context.get('pricelist', False)
if pricelist:
for id in ids:
price = self.pool.get('product.pricelist').price_get(cr,uid,[pricelist], id, quantity, context=context)[pricelist]
try:
price = self.pool.get('product.pricelist').price_get(cr,uid,[pricelist], id, quantity, context=context)[pricelist]
except:
price = 0.0
res[id] = price
for id in ids:
res.setdefault(id, 0.0)
+2 -2
View File
@@ -249,8 +249,8 @@
on_change="onchange_planned(planned_hours,effective_hours)"/>
<field name="delay_hours" widget="float_time"/>
<group col="3" colspan="2">
<field name="remaining_hours" select="2" widget="float_time" attrs="{'readonly':[('state','!=','draft')]}" colspan="2"/>
<button name="%(action_config_compute_remaining)d" string="Review" type="action" colspan="1" target="new" attrs="{'invisible':[('state','=','draft')]}"/>
<field name="remaining_hours" select="2" widget="float_time" attrs="{'readonly':[('state','!=','draft')]}" colspan="2"/>
<button name="%(action_config_compute_remaining)d" string="Review" type="action" colspan="1" target="new" states="open,pending"/>
</group>
<field name="effective_hours" widget="float_time"/>
+4 -4
View File
@@ -20,18 +20,18 @@
#
##############################################################################
{
"name" : "Project Management - MRP Link",
"name" : "Project Management - MRP and Sale Integration",
"version": "1.0",
"author" : "Tiny",
"website" : "http://www.openerp.com",
"category" : "Generic Modules/Projects & Services",
"depends" : ["project", 'mrp', "sale", "mrp_jit"],
"description": """
This module is used to automatically create tasks base on different
This module is used to automatically create tasks based on different
procurements: sales order, manufacturing order, ...
It is mainly used to invoices services based on tasks by doing sales
order on services products.
It is mainly used to invoices services based on tasks automatically
created by sales orders.
""",
"init_xml" : [],
"demo_xml" : [],
+259 -262
View File
@@ -1,288 +1,285 @@
<?xml version="1.0"?>
<openerp>
<data>
<record model="ir.ui.view" id="view_document_user_form">
<field name="name">report.document.user.form</field>
<field name="model">report.document.user</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Files">
<field name="name" select="1"/>
<field name="file_title" select="1"/>
<field name="user" select="1"/>
<field name="directory" select="1"/>
<field name="file_size"/>
<field name="create_date"/>
</form>
</field>
</record>
<record model="ir.ui.view" id="view_document_user_form">
<field name="name">report.document.user.form</field>
<field name="model">report.document.user</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Files">
<field name="name" select="1"/>
<field name="file_title" select="1"/>
<field name="user" select="1"/>
<field name="directory" select="1"/>
<field name="file_size"/>
<field name="create_date"/>
</form>
</field>
</record>
<record model="ir.ui.view" id="view_document_user_tree">
<field name="name">report.document.user.tree</field>
<field name="model">report.document.user</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Files">
<field name="name" select="1"/>
<field name="file_title"/>
<field name="user" select="1"/>
<field name="directory" select="1"/>
<field name="file_size"/>
<field name="create_date"/>
</tree>
</field>
</record>
<record model="ir.ui.view" id="view_document_user_tree">
<field name="name">report.document.user.tree</field>
<field name="model">report.document.user</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Files">
<field name="name" select="1"/>
<field name="file_title"/>
<field name="user" select="1"/>
<field name="directory" select="1"/>
<field name="file_size"/>
<field name="create_date"/>
</tree>
</field>
</record>
<record model="ir.actions.act_window" id="action_view_my_document_tree">
<field name="name">My files (This months)</field>
<field name="res_model">report.document.user</field>
<field name="view_type">form</field>
<field name="view_mode">tree</field>
<field name="domain">[('user_id','=',uid),('name','=',time.strftime('%Y-%m-01'))]</field>
</record>
<menuitem name="Document Management" id="menu_action_view_my_document"/>
<menuitem name="Reporting" id="menu_action_view_my_document_report" parent="menu_action_view_my_document"/>
<menuitem name="This Month" id="menu_action_view_my_document_report_this" parent="menu_action_view_my_document_report"/>
<menuitem name="My files" id="menu_action_view_my_document_report_this_myfile" parent="menu_action_view_my_document_report_this" action="action_view_my_document_tree"/>
<record model="ir.actions.act_window" id="action_view_my_document_tree">
<field name="name">My files (This months)</field>
<field name="res_model">report.document.user</field>
<field name="view_type">form</field>
<field name="view_mode">tree</field>
<field name="domain">[('user_id','=',uid),('name','=',time.strftime('%Y-%m-01'))]</field>
</record>
<menuitem name="Document Management" id="menu_action_view_my_document"/>
<menuitem name="Reporting" id="menu_action_view_my_document_report" parent="menu_action_view_my_document"/>
<menuitem name="This Month" id="menu_action_view_my_document_report_this" parent="menu_action_view_my_document_report"/>
<menuitem name="My files" id="menu_action_view_my_document_report_this_myfile" parent="menu_action_view_my_document_report_this" action="action_view_my_document_tree"/>
<record model="ir.actions.act_window" id="action_view_my_document_tree1">
<field name="name">My files (All months)</field>
<field name="res_model">report.document.user</field>
<field name="view_type">form</field>
<field name="view_mode">tree,graph</field>
<field name="domain">[('user_id','=',uid)]</field>
</record>
<menuitem name="All Months" id="menu_action_view_my_document_report_all" parent="menu_action_view_my_document_report"/>
<menuitem name="My files" id="menu_action_view_my_document_report_all_myfile" parent="menu_action_view_my_document_report_all" action="action_view_my_document_tree1"/>
<record model="ir.actions.act_window" id="action_view_my_document_tree1">
<field name="name">My files (All months)</field>
<field name="res_model">report.document.user</field>
<field name="view_type">form</field>
<field name="view_mode">tree,graph</field>
<field name="domain">[('user_id','=',uid)]</field>
</record>
<menuitem name="All Months" id="menu_action_view_my_document_report_all" parent="menu_action_view_my_document_report"/>
<menuitem name="My files" id="menu_action_view_my_document_report_all_myfile" parent="menu_action_view_my_document_report_all" action="action_view_my_document_tree1"/>
<record model="ir.actions.act_window" id="action_view_all_document_tree">
<field name="name">All Users files (This month)</field>
<field name="res_model">report.document.user</field>
<field name="view_type">form</field>
<field name="view_mode">tree,graph</field>
<field name="domain">[('name','=',time.strftime('%Y-%m-01'))]</field>
</record>
<menuitem name="All Users files" id="menu_action_view_my_document_report_this_userfile" parent="menu_action_view_my_document_report_this" action="action_view_all_document_tree"/>
<record model="ir.actions.act_window" id="action_view_all_document_tree">
<field name="name">All Users files (This month)</field>
<field name="res_model">report.document.user</field>
<field name="view_type">form</field>
<field name="view_mode">tree,graph</field>
<field name="domain">[('name','=',time.strftime('%Y-%m-01'))]</field>
</record>
<menuitem name="All Users files" id="menu_action_view_my_document_report_this_userfile" parent="menu_action_view_my_document_report_this" action="action_view_all_document_tree"/>
<record model="ir.actions.act_window" id="action_view_all_document_tree1">
<field name="name">All Users files (All months)</field>
<field name="res_model">report.document.user</field>
<field name="view_type">form</field>
<field name="view_mode">tree</field>
</record>
<menuitem name="All Users files" id="menu_action_view_my_document_report_all_userfile" parent="menu_action_view_my_document_report_all" action="action_view_all_document_tree1"/>
<!-- -->
<record model="ir.ui.view" id="view_document_wall_form">
<field name="name">report.document.wall.form</field>
<field name="model">report.document.wall</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Wall of Shame">
<field name="user_id" select="1"/>
<field name="month" select="1"/>
<field name="file_name" select="1"/>
<field name="last"/>
</form>
</field>
</record>
<record model="ir.actions.act_window" id="action_view_all_document_tree1">
<field name="name">All Users files (All months)</field>
<field name="res_model">report.document.user</field>
<field name="view_type">form</field>
<field name="view_mode">tree</field>
</record>
<menuitem name="All Users files" id="menu_action_view_my_document_report_all_userfile" parent="menu_action_view_my_document_report_all" action="action_view_all_document_tree1"/>
<!-- -->
<record model="ir.ui.view" id="view_document_wall_form">
<field name="name">report.document.wall.form</field>
<field name="model">report.document.wall</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Wall of Shame">
<field name="user_id" select="1"/>
<field name="month" select="1"/>
<field name="file_name" select="1"/>
<field name="last"/>
</form>
</field>
</record>
<record model="ir.ui.view" id="view_document_wall_tree">
<field name="name">report.document.wall.tree</field>
<field name="model">report.document.wall</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Wall of Shame">
<field name="user_id" select="1"/>
<field name="month" select="1"/>
<field name="file_name"/>
<field name="last"/>
</tree>
</field>
</record>
<record model="ir.actions.act_window" id="action_view_wall">
<field name="name">Wall of Shame</field>
<field name="res_model">report.document.wall</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
</record>
<menuitem name="Wall of Shame" id="menu_action_view_my_document_report_shame" parent="menu_action_view_my_document_report" action="action_view_wall"/>
<record model="ir.ui.view" id="view_document_wall_tree">
<field name="name">report.document.wall.tree</field>
<field name="model">report.document.wall</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Wall of Shame">
<field name="user_id" select="1"/>
<field name="month" select="1"/>
<field name="file_name"/>
<field name="last"/>
</tree>
</field>
</record>
<record model="ir.actions.act_window" id="action_view_wall">
<field name="name">Wall of Shame</field>
<field name="res_model">report.document.wall</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
</record>
<menuitem name="Wall of Shame" id="menu_action_view_my_document_report_shame" parent="menu_action_view_my_document_report" action="action_view_wall"/>
<!--***************************************************************************************-->
<record model="ir.ui.view" id="view_document_by_resourcetype_graph">
<field name="name">report.document.resource.graph</field>
<field name="model">report.document.user</field>
<field name="type">graph</field>
<field name="arch" type="xml">
<graph string="Files by Resource Type" type="pie">
<field name="type" />
<!-- <field name="file_size" operator="+"/>-->
<field name="nbr" operator="+"/>
</graph>
</field>
</record>
<!-- <record model="ir.ui.view" id="view_document_by_resourcetype_tree">-->
<!-- <field name="name">report.document.resource.tree.view</field>-->
<!-- <field name="model">report.document.user</field>-->
<!-- <field name="type">tree</field>-->
<!-- <field name="arch" type="xml">-->
<!-- <tree string="Files by Resource Type">-->
<!-- <field name="type" />-->
<!-- <field name="nbr"/>-->
<!-- </tree>-->
<!-- </field>-->
<!-- </record>-->
<record model="ir.ui.view" id="view_document_by_resourcetype_graph">
<field name="name">report.document.resource.graph</field>
<field name="model">report.document.user</field>
<field name="type">graph</field>
<field name="arch" type="xml">
<graph string="Files by Resource Type" type="pie">
<field name="type" />
<!-- <field name="file_size" operator="+"/>-->
<field name="nbr" operator="+"/>
</graph>
</field>
</record>
<!-- <record model="ir.ui.view" id="view_document_by_resourcetype_tree">-->
<!-- <field name="name">report.document.resource.tree.view</field>-->
<!-- <field name="model">report.document.user</field>-->
<!-- <field name="type">tree</field>-->
<!-- <field name="arch" type="xml">-->
<!-- <tree string="Files by Resource Type">-->
<!-- <field name="type" />-->
<!-- <field name="nbr"/>-->
<!-- </tree>-->
<!-- </field>-->
<!-- </record>-->
<record model="ir.actions.act_window" id="action_view_document_by_resourcetype_graph">
<field name="name">Files by Resource Type</field>
<field name="res_model">report.document.user</field>
<field name="view_id" ref="view_document_by_resourcetype_graph"></field>
<field name="view_type">form</field>
<field name="view_mode">tree</field>
</record>
<record model="ir.actions.act_window" id="action_view_document_by_resourcetype_graph">
<field name="name">Files by Resource Type</field>
<field name="res_model">report.document.user</field>
<field name="view_id" ref="view_document_by_resourcetype_graph"></field>
<field name="view_type">form</field>
<field name="view_mode">tree</field>
</record>
<!--***************************************************************************************-->
<record model="ir.ui.view" id="view_size_month">
<field name="name">report.document.user.graph</field>
<field name="model">report.document.file</field>
<field name="type">graph</field>
<field name="arch" type="xml">
<graph string="File Size by Month" type="bar">
<field name="month"/>
<field name="file_size" operator="+"/>
</graph>
</field>
</record>
<record model="ir.ui.view" id="view_size_month_tree">
<field name="name">report.document.user.tree</field>
<field name="model">report.document.file</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="File Size by Month">
<field name="month" />
<field name="file_size"/>
</tree>
</field>
</record>
<record model="ir.actions.act_window" id="action_view_size_month">
<field name="name">File Size by Month</field>
<field name="res_model">report.document.file</field>
<field name="view_id" ref="view_size_month"></field>
<field name="view_type">form</field>
<field name="view_mode">tree</field>
</record>
<record model="ir.ui.view" id="view_size_month">
<field name="name">report.document.user.graph</field>
<field name="model">report.document.file</field>
<field name="type">graph</field>
<field name="arch" type="xml">
<graph string="File Size by Month" type="bar">
<field name="month"/>
<field name="file_size" operator="+"/>
</graph>
</field>
</record>
<record model="ir.ui.view" id="view_size_month_tree">
<field name="name">report.document.user.tree</field>
<field name="model">report.document.file</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="File Size by Month">
<field name="month" />
<field name="file_size"/>
</tree>
</field>
</record>
<record model="ir.actions.act_window" id="action_view_size_month">
<field name="name">File Size by Month</field>
<field name="res_model">report.document.file</field>
<field name="view_id" ref="view_size_month"></field>
<field name="view_type">form</field>
<field name="view_mode">tree</field>
</record>
<!--***************************************************************************************-->
<record model="ir.ui.view" id="view_files_by_month_graph">
<field name="name">report.file.month.graph</field>
<field name="model">report.document.user</field>
<field name="type">graph</field>
<field name="arch" type="xml">
<graph string="Files by Month" type="bar">
<field name="month" />
<field name="nbr" operator="+"/>
<!-- <field name="name" operator="+"/>-->
<!-- <field name="file_size" operator="+"/>-->
</graph>
</field>
</record>
<record model="ir.ui.view" id="view_files_by_month_tree">
<field name="name">report.file.month.tree</field>
<field name="model">report.document.user</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<graph string="Files by Month" type="bar">
<field name="name" />
<field name="nbr"/>
</graph>
</field>
</record>
<record model="ir.actions.act_window" id="action_view_files_by_month_graph">
<field name="name">Files by Month</field>
<field name="res_model">report.document.user</field>
<field name="view_id" ref="view_files_by_month_graph"></field>
<field name="view_type">form</field>
<field name="view_mode">tree</field>
</record>
<record model="ir.ui.view" id="view_files_by_month_graph">
<field name="name">report.file.month.graph</field>
<field name="model">report.document.user</field>
<field name="type">graph</field>
<field name="arch" type="xml">
<graph string="Files by Month" type="bar">
<field name="month" />
<field name="nbr" operator="+"/>
<!-- <field name="name" operator="+"/>-->
<!-- <field name="file_size" operator="+"/>-->
</graph>
</field>
</record>
<record model="ir.ui.view" id="view_files_by_month_tree">
<field name="name">report.file.month.tree</field>
<field name="model">report.document.user</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Files by Month">
<field name="name" />
<field name="nbr"/>
</tree>
</field>
</record>
<record model="ir.actions.act_window" id="action_view_files_by_month_graph">
<field name="name">Files by Month</field>
<field name="res_model">report.document.user</field>
<field name="view_id" ref="view_files_by_month_graph"></field>
<field name="view_type">form</field>
<field name="view_mode">tree</field>
</record>
<!--***************************************************************************************-->
<record model="ir.ui.view" id="view_user_graph">
<field name="name">report.document.user.graph</field>
<field name="model">report.document.user</field>
<field name="type">graph</field>
<field name="arch" type="xml">
<graph string="Files by users" type="bar">
<field name="user" />
<field name="nbr" operator="+"/>
</graph>
</field>
</record>
<record model="ir.actions.act_window" id="action_view_user_graph">
<field name="name">Files By Users</field>
<field name="res_model">report.document.user</field>
<field name="view_id" ref="view_user_graph"></field>
<field name="view_type">form</field>
<field name="view_mode">tree</field>
</record>
<record model="ir.ui.view" id="view_user_graph">
<field name="name">report.document.user.graph</field>
<field name="model">report.document.user</field>
<field name="type">graph</field>
<field name="arch" type="xml">
<graph string="Files by users" type="bar">
<field name="user" />
<field name="nbr" operator="+"/>
</graph>
</field>
</record>
<record model="ir.actions.act_window" id="action_view_user_graph">
<field name="name">Files By Users</field>
<field name="res_model">report.document.user</field>
<field name="view_id" ref="view_user_graph"></field>
<field name="view_type">form</field>
<field name="view_mode">tree</field>
</record>
<!--***************************************************************************************-->
<record model="ir.ui.view" id="view_files_by_partner_graph">
<field name="name">view.files.partner.graph</field>
<field name="model">report.files.partner</field>
<field name="type">graph</field>
<field name="arch" type="xml">
<graph string="Files By Partner" type="bar">
<field name="partner"/>
<field name="nbr"/>
<record model="ir.ui.view" id="view_files_by_partner_graph">
<field name="name">view.files.partner.graph</field>
<field name="model">report.files.partner</field>
<field name="type">graph</field>
<field name="arch" type="xml">
<graph string="Files By Partner" type="bar">
<field name="partner"/>
<field name="nbr"/>
</graph>
</field>
</record>
<record model="ir.ui.view" id="view_files_by_partner_tree">
<field name="name">view.files.partner.tree</field>
<field name="model">report.files.partner</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Files per Month">
<field name="name"/>
<field name="partner"/>
<field name="nbr"/>
</tree>
</field>
</record>
<record model="ir.actions.act_window" id="action_view_files_by_partner">
<field name="name">Files Per Month</field>
<field name="res_model">report.files.partner</field>
<field name="view_id" ref="view_files_by_partner_graph"></field>
<field name="view_type">form</field>
<field name="view_mode">tree</field>
</record>
<!--***************************************************************************************-->
</data>
</graph>
</field>
</record>
<record model="ir.ui.view" id="view_files_by_partner_tree">
<field name="name">view.files.partner.tree</field>
<field name="model">report.files.partner</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Files per Month">
<field name="name"/>
<field name="partner"/>
<field name="nbr"/>
</tree>
</field>
</record>
<record model="ir.actions.act_window" id="action_view_files_by_partner">
<field name="name">Files Per Month</field>
<field name="res_model">report.files.partner</field>
<field name="view_id" ref="view_files_by_partner_graph"></field>
<field name="view_type">form</field>
<field name="view_mode">tree</field>
</record>
</data>
</openerp>
+8 -8
View File
@@ -31,7 +31,6 @@ class product_product(osv.osv):
def _pricelist_calculate(self, cr, uid, ids, name, arg, context=None):
result = {}
format=""
pricelist_obj=self.pool.get('product.pricelist')
if name=='pricelist_purchase':
pricelist_ids=pricelist_obj.search(cr,uid,[('type','=','purchase')])
@@ -39,17 +38,18 @@ class product_product(osv.osv):
pricelist_ids=pricelist_obj.search(cr,uid,[('type','=','sale')])
pricelist_browse=pricelist_obj.browse(cr,uid,pricelist_ids)
for product in self.browse(cr, uid, ids, context):
result[product.id] = ""
for pricelist in pricelist_browse:
for version in pricelist.version_id:
for items in version.items_id:
qty=items.min_quantity
price=pricelist_obj.price_get(cr, uid,[pricelist.id],product.id,qty,partner=None, context=None)
if name=='pricelist_purchase':
format+=pricelist.name + "\t" +str(qty) +" \t\t" + str(price[pricelist.id]) + "\n"
else:
format+=pricelist.name + "\t\t\t" +str(qty) +" \t\t\t" + str(price[pricelist.id]) + "\n"
result[product.id]=format
format=""
try:
price=pricelist_obj.price_get(cr, uid,[pricelist.id],product.id,qty,partner=None, context=None)
except:
price = 0.0
result[product.id]+= ("%s (%.2f) : %.2f" % (pricelist.name,qty or 0.0,price[pricelist.id] or 0.0)) + "\n"
break
break
return result
_columns = {
+2 -2
View File
@@ -10,8 +10,8 @@
<field name="arch" type="xml">
<field colspan="4" name="seller_ids" nolabel="1" position="after">
<group colspan="4" groups="base.group_extended">
<separator string="Sale Pricelists Min.Qty Price" colspan="2"/>
<separator string="Purchase Pricelists Min.Qty Price" colspan="2"/>
<separator string="Sale Pricelists (Min.Qty) : Price" colspan="2"/>
<separator string="Purchase Pricelists (Min.Qty) : Price" colspan="2"/>
<field nolabel="1" name="pricelist_sale" colspan="2"/>
<field nolabel="1" name="pricelist_purchase" colspan="2"/>
</group>
+4 -3
View File
@@ -144,14 +144,15 @@
<para style="terp_default_9">[[ o.partner_shipping_id.title or '' ]][[ o.partner_shipping_id.name ]]</para>
<para style="terp_default_9">[[ o.partner_shipping_id.street ]]</para>
<para style="terp_default_9">[[ o.partner_shipping_id.street2 or '' ]]</para>
<para style="terp_default_9">[[ o.partner_shipping_id.city or '' ]][[ o.partner_shipping_id.zip or '' ]]</para>
<para style="terp_default_9">[[ o.partner_shipping_id.city or '' ]] [[ o.partner_shipping_id.zip or '' ]]</para>
<para style="terp_default_9">[[ o.partner_shipping_id.state_id and o.partner_shipping_id.state_id.name or '' ]][[ o.partner_shipping_id.country_id and o.partner_shipping_id.country_id.name or '' ]]</para>
<para style="terp_default_9">
<font color="white"> </font>
</para>
<para style="terp_default_Bold_9">Invoice address :</para>
<para style="terp_default_9">[[ o.partner_invoice_id.street ]][[ o.partner_invoice_id.street2 and (', %s' % o.partner_invoice_id.street2 or '') ]]</para>
<para style="terp_default_9">[[ o.partner_invoice_id.zip or '' ]][[ o.partner_invoice_id.city or '' ]][[ o.partner_invoice_id.country_id and (', %s' % (o.partner_invoice_id.country_id and o.partner_invoice_id.country_id.name or '')) ]]</para>
<para style="terp_default_9">[[ o.partner_invoice_id.city or '' ]] [[ o.partner_invoice_id.zip or '' ]]</para>
<para style="terp_default_9">[[ o.partner_invoice_id.country_id and ('%s' % (o.partner_invoice_id.country_id and o.partner_invoice_id.country_id.name or '')) ]]</para>
</td>
<td>
<para style="terp_default_8">
@@ -163,7 +164,7 @@
<para style="terp_default_9">[[ o.partner_order_id.title or '' ]][[ o.partner_order_id.name ]]</para>
<para style="terp_default_9">[[ o.partner_order_id.street ]]</para>
<para style="terp_default_9">[[ o.partner_order_id.street2 or '' ]]</para>
<para style="terp_default_9">[[ o.partner_order_id.zip or '' ]][[ o.partner_order_id.city or '' ]]</para>
<para style="terp_default_9">[[ o.partner_order_id.city or '' ]] [[ o.partner_order_id.zip or '' ]]</para>
<para style="terp_default_9">[[ o.partner_order_id.state_id and o.partner_order_id.state_id.name or '' ]][[ o.partner_order_id.country_id and o.partner_order_id.country_id.name or '' ]]</para>
<para style="terp_default_9">
<font color="white"> </font>
+59 -23
View File
@@ -172,6 +172,12 @@ class sale_order(osv.osv):
return [('id', '=', 0)]
return [('id', 'in', [x[0] for x in res])]
def _get_order(self, cr, uid, ids, context={}):
result = {}
for line in self.pool.get('sale.order.line').browse(cr, uid, ids, context=context):
result[line.order_id.id] = True
return result.keys()
_columns = {
'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)]}),
@@ -224,9 +230,23 @@ class sale_order(osv.osv):
'note': fields.text('Notes'),
'amount_untaxed': fields.function(_amount_all, method=True, string='Untaxed Amount',
store=True, multi='sums'),
'amount_tax': fields.function(_amount_all, method=True, string='Taxes', store=True, multi='sums'),
'amount_total': fields.function(_amount_all, method=True, string='Total', store=True, multi='sums'),
store={
'sale.order': (lambda self, cr, uid, ids, c={}: ids, None, 10),
'sale.order.line': (_get_order, None, 10),
},
multi='sums'),
'amount_tax': fields.function(_amount_all, method=True, string='Taxes',
store={
'sale.order': (lambda self, cr, uid, ids, c={}: ids, None, 10),
'sale.order.line': (_get_order, None, 10),
},
multi='sums'),
'amount_total': fields.function(_amount_all, method=True, string='Total',
store={
'sale.order': (lambda self, cr, uid, ids, c={}: ids, None, 10),
'sale.order.line': (_get_order, None, 10),
},
multi='sums'),
'invoice_quantity': fields.selection([('order','Ordered Quantities'),('procurement','Shipped Quantities')], 'Invoice on', help="The sale order will automatically create the invoice proposition (draft invoice). Ordered and delivered quantities may not be the same. You have to choose if you invoice based on ordered or shipped quantities. If the product is a service, shipped quantities means hours spent on the associated tasks.",required=True),
'payment_term' : fields.many2one('account.payment.term', 'Payment Term'),
@@ -362,7 +382,7 @@ class sale_order(osv.osv):
return inv_id
def action_invoice_create(self, cr, uid, ids, grouped=False, states=['confirmed','done']):
def action_invoice_create(self, cr, uid, ids, grouped=False, states=['confirmed','done','exception']):
res = False
invoices = {}
invoice_ids = []
@@ -381,7 +401,7 @@ class sale_order(osv.osv):
for i in o.invoice_ids:
if i.state == 'draft':
return i.id
picking_obj=self.pool.get('stock.picking')
picking_obj=self.pool.get('stock.picking')
for val in invoices.values():
if grouped:
res = self._make_invoice(cr, uid, val[0][0], reduce(lambda x,y: x + y, [l for o,l in val], []))
@@ -389,7 +409,7 @@ class sale_order(osv.osv):
self.write(cr, uid, [o.id], {'state' : 'progress'})
if o.order_policy=='picking':
picking_obj.write(cr,uid,map(lambda x:x.id,o.picking_ids),{'invoice_state':'invoiced'})
cr.execute('insert into sale_order_invoice_rel (order_id,invoice_id) values (%d,%d)', (o.id, res))
cr.execute('insert into sale_order_invoice_rel (order_id,invoice_id) values (%s,%s)', (o.id, res))
else:
for order, il in val:
res = self._make_invoice(cr, uid, order, il)
@@ -397,7 +417,7 @@ class sale_order(osv.osv):
self.write(cr, uid, [order.id], {'state' : 'progress'})
if order.order_policy=='picking':
picking_obj.write(cr,uid,map(lambda x:x.id,order.picking_ids),{'invoice_state':'invoiced'})
cr.execute('insert into sale_order_invoice_rel (order_id,invoice_id) values (%d,%d)', (order.id, res))
cr.execute('insert into sale_order_invoice_rel (order_id,invoice_id) values (%s,%s)', (order.id, res))
return res
def action_invoice_cancel(self, cr, uid, ids, context={}):
@@ -479,26 +499,24 @@ class sale_order(osv.osv):
write_cancel_ids = []
for order in self.browse(cr, uid, ids, context={}):
for line in order.order_line:
if (not line.procurement_id) or (line.procurement_id.state=='done') or (line.procurement_id.move_id and line.procurement_id.move_id.state=='done'):
if (not line.procurement_id) or (line.procurement_id.state=='done'):
finished = True
if line.state != 'done':
write_done_ids.append(line.id)
else:
finished = False
if line.procurement_id:
if (line.procurement_id.state == 'cancel') or (line.procurement_id.move_id and line.procurement_id.move_id.state=='cancel'):
if (line.procurement_id.state == 'cancel'):
canceled = True
if line.state != 'cancel':
if line.state != 'exception':
write_cancel_ids.append(line.id)
else:
notcanceled = True
# if a line is finished (ie its procuremnt is done or it has not procuremernt and it
# is not already marked as done, mark it as being so...
if ((not line.procurement_id) or line.procurement_id.state == 'done') and line.state != 'done':
write_done_ids.append(line.id)
if write_done_ids:
self.pool.get('sale.order.line').write(cr, uid, write_done_ids, {'state': 'done'})
if write_cancel_ids:
self.pool.get('sale.order.line').write(cr, uid, write_cancel_ids, {'state': 'cancel'})
self.pool.get('sale.order.line').write(cr, uid, write_cancel_ids, {'state': 'exception'})
if mode=='finished':
return finished
@@ -602,8 +620,12 @@ class sale_order(osv.osv):
if order.state=='shipping_except':
val['state'] = 'progress'
if (order.order_policy == 'manual') and order.invoice_ids:
val['state'] = 'manual'
if (order.order_policy == 'manual'):
for line in order.order_line:
if (not line.invoiced) and (line.state not in ('cancel','draft')):
val['state'] = 'manual'
break
self.write(cr, uid, [order.id], val)
return True
@@ -612,10 +634,18 @@ class sale_order(osv.osv):
for order in self.browse(cr, uid, ids):
val = {'shipped':True}
if order.state=='shipping_except':
if (order.order_policy=='manual') and not order.invoice_ids:
val['state'] = 'manual'
else:
val['state'] = 'progress'
val['state'] = 'progress'
if (order.order_policy == 'manual'):
for line in order.order_line:
if (not line.invoiced) and (line.state not in ('cancel','draft')):
val['state'] = 'manual'
break
for line in order.order_line:
towrite = []
if line.state=='exception':
towrite.append(line.id)
if towrite:
self.pool.get('sale.order.line').write(cr, uid, towrite, {'state':'done'},context=context)
self.write(cr, uid, [order.id], val)
return True
@@ -697,7 +727,7 @@ class sale_order_line(osv.osv):
'number_packages': fields.function(_number_packages, method=True, type='integer', string='Number packages'),
'notes': fields.text('Notes'),
'th_weight' : fields.float('Weight'),
'state': fields.selection([('draft','Draft'),('confirmed','Confirmed'),('done','Done'),('cancel','Canceled')], 'Status', required=True, readonly=True),
'state': fields.selection([('draft','Draft'),('confirmed','Confirmed'),('done','Done'),('cancel','Canceled'),('exception','Exception')], 'Status', required=True, readonly=True),
'order_partner_id': fields.related('order_id', 'partner_id', type='many2one', relation='res.partner', string='Customer')
}
_order = 'sequence, id'
@@ -767,11 +797,17 @@ class sale_order_line(osv.osv):
'note': line.notes,
'account_analytic_id': line.order_id.project_id.id,
})
cr.execute('insert into sale_order_line_invoice_rel (order_line_id,invoice_id) values (%d,%d)', (line.id, inv_id))
cr.execute('insert into sale_order_line_invoice_rel (order_line_id,invoice_id) values (%s,%s)', (line.id, inv_id))
self.write(cr, uid, [line.id], {'invoiced':True})
create_ids.append(inv_id)
return create_ids
def button_cancel(self, cr, uid, ids, context={}):
for line in self.browse(cr, uid, ids, context=context):
if line.invoiced:
raise osv.except_osv(_('Invalid action !'), _('You can not cancel a sale order line that has already been invoiced !'))
return self.write(cr, uid, ids, {'state':'cancel'})
def button_confirm(self, cr, uid, ids, context={}):
return self.write(cr, uid, ids, {'state':'confirmed'})
+4 -3
View File
@@ -384,11 +384,11 @@
<page string="Order Lines">
<separator colspan="4" string="Automatic Declaration"/>
<field name="order_id" select="1"/>
<field name="invoiced" select="2"/>
<field name="order_partner_id" readonly="1" select="1" invisible="1"/>
<field name="product_uom_qty" readonly="1" select="2"/>
<field name="product_uom" readonly="2"/>
<field name="product_id" readonly="1" select="1"/>
<field name="order_partner_id" readonly="1" select="1" invisible="1"/>
<field name="invoiced" select="2"/>
<separator colspan="4" string="Manual Designation"/>
<field colspan="4" name="name" select="2"/>
@@ -401,7 +401,8 @@
<separator colspan="4" string="States"/>
<field name="state" select="2"/>
<group col="2" colspan="2">
<button name="button_done" states="confirmed" string="Done" type="object"/>
<button name="button_done" states="confirmed,exception" string="Done" type="object"/>
<button name="button_cancel" states="confirmed,exception" string="Cancel" type="object"/>
</group>
</page>
<page string="Properties">
@@ -66,7 +66,7 @@ def _makeInvoices(self, cr, uid, data, context):
return inv_id
for line in pool.get('sale.order.line').browse(cr,uid,data['ids']):
if not line.invoiced:
if (not line.invoiced) and (line.state not in ('draft','cancel')):
if not line.order_id.id in invoices:
invoices[line.order_id.id] = []
line_id = pool.get('sale.order.line').invoice_line_create(cr, uid,
@@ -91,7 +91,7 @@ def _makeInvoices(self, cr, uid, data, context):
il = map(lambda x: x[1], result)
res = make_invoice(order, il)
cr.execute('INSERT INTO sale_order_invoice_rel \
(order_id,invoice_id) values (%d,%d)', (order.id, res))
(order_id,invoice_id) values (%s,%s)', (order.id, res))
return {}
+9 -5
View File
@@ -234,9 +234,9 @@ class stock_location(osv.osv):
result = []
amount = 0.0
for id in self.search(cr, uid, [('location_id', 'child_of', ids)]):
cr.execute("select product_uom,sum(product_qty) as product_qty from stock_move where location_dest_id=%s and product_id=%s and state='done' group by product_uom", (id,product_id))
cr.execute("select product_uom,sum(product_qty) as product_qty from stock_move where location_dest_id=%s and location_id<>%s and product_id=%s and state='done' group by product_uom", (id,id,product_id))
results = cr.dictfetchall()
cr.execute("select product_uom,-sum(product_qty) as product_qty from stock_move where location_id=%s and product_id=%s and state in ('done', 'assigned') group by product_uom", (id,product_id))
cr.execute("select product_uom,-sum(product_qty) as product_qty from stock_move where location_id=%s and location_dest_id<>%s and product_id=%s and state in ('done', 'assigned') group by product_uom", (id,id,product_id))
results += cr.dictfetchall()
total = 0.0
@@ -465,15 +465,19 @@ class stock_picking(osv.osv):
for pick in self.browse(cr, uid, ids):
wf_service.trg_validate(uid, 'stock.picking', pick.id,
'button_confirm', cr)
move_ids = [x.id for x in pick.move_lines]
self.pool.get('stock.move').force_assign(cr, uid, move_ids)
wf_service.trg_write(uid, 'stock.picking', pick.id, cr)
#move_ids = [x.id for x in pick.move_lines]
#self.pool.get('stock.move').force_assign(cr, uid, move_ids)
#wf_service.trg_write(uid, 'stock.picking', pick.id, cr)
return True
def draft_validate(self, cr, uid, ids, *args):
wf_service = netsvc.LocalService("workflow")
self.draft_force_assign(cr, uid, ids)
for pick in self.browse(cr, uid, ids):
move_ids = [x.id for x in pick.move_lines]
self.pool.get('stock.move').force_assign(cr, uid, move_ids)
wf_service.trg_write(uid, 'stock.picking', pick.id, cr)
self.action_move(cr, uid, [pick.id])
wf_service.trg_validate(uid, 'stock.picking', pick.id , 'button_done', cr)
return True
+21 -6
View File
@@ -350,7 +350,7 @@
<field name="chained_delay"/>
</group>
<group col="2" colspan="2">
<separator string="Localisation" colspan="2"/>>
<separator string="Localisation" colspan="2"/>
<field name="posx"/>
<field name="posy"/>
<field name="posz"/>
@@ -540,7 +540,10 @@
<field name="date_planned"/>
<field name="address_id" select="1" context="{'context_display':'partner'}"/>
<field groups="base.group_extended" name="product_packaging"/>
<field name="prodlot_id" select="2" context="{'location_id':location_id, 'product_id':product_id}" domain="[('product_id','=',product_id)]" on_change="onchange_lot_id(prodlot_id,product_qty, location_id)"/>
<field name="prodlot_id" select="2"
context="{'location_id':location_id, 'product_id':product_id}"
domain="[('product_id','=',product_id)]"
on_change="onchange_lot_id(prodlot_id,product_qty, location_id)"/>
<field groups="base.group_extended" name="tracking_id" select="2"/>
<newline/>
<label/>
@@ -633,7 +636,10 @@
<field invisible="1" name="date"/>
<field name="date_planned"/>
<field groups="base.group_extended" name="product_packaging"/>
<field name="prodlot_id" select="2" context="{'location_id':location_id, 'product_id':product_id}" domain="[('product_id','=',product_id)]" on_change="onchange_lot_id(prodlot_id,product_qty, location_id)"/>
<field name="prodlot_id" select="2"
context="{'location_id':location_id, 'product_id':product_id}"
domain="[('product_id','=',product_id)]"
on_change="onchange_lot_id(prodlot_id,product_qty, location_id)"/>
<field groups="base.group_extended" name="tracking_id" select="1"/>
<separator colspan="4" string="Move State"/>
<field name="state" select="1"/>
@@ -821,7 +827,10 @@
<field invisible="1" name="date"/>
<field name="date_planned"/>
<field groups="base.group_extended" name="product_packaging"/>
<field name="prodlot_id" select="1" context="{'location_id':location_id, 'product_id':product_id}" domain="[('product_id','=',product_id)]" on_change="onchange_lot_id(prodlot_id,product_qty, location_id)"/>
<field name="prodlot_id" select="1"
context="{'location_id':location_id, 'product_id':product_id}"
domain="[('product_id','=',product_id)]"
on_change="onchange_lot_id(prodlot_id,product_qty, location_id)"/>
<field groups="base.group_extended" name="tracking_id" select="1"/>
<button name="%(track_line)d" string="Split in production lots" type="action"/>
<separator colspan="4" string="Move State"/>
@@ -1005,7 +1014,10 @@
<newline/>
<field groups="base.group_extended" name="product_packaging"/>
<newline/>
<field name="prodlot_id" select="1" context="{'location_id':location_id, 'product_id':product_id}" domain="[('product_id','=',product_id)]" on_change="onchange_lot_id(prodlot_id,product_qty, location_id)"/>
<field name="prodlot_id" select="1"
context="{'location_id':location_id, 'product_id':product_id}"
domain="[('product_id','=',product_id)]"
on_change="onchange_lot_id(prodlot_id,product_qty, location_id)"/>
<field groups="base.group_extended" name="tracking_id" select="1"/>
<newline/>
<label/>
@@ -1220,7 +1232,10 @@
<field name="priority"/>
<field name="address_id" select="2" context="{'context_display':'partner'}"/>
<newline/>
<field name="prodlot_id" select="2" context="{'location_id':location_id, 'product_id':product_id}" domain="[('product_id','=',product_id)]" on_change="onchange_lot_id(prodlot_id,product_qty, location_id)"/>
<field name="prodlot_id" select="2"
context="{'location_id':location_id, 'product_id':product_id}"
domain="[('product_id','=',product_id)]"
on_change="onchange_lot_id(prodlot_id,product_qty, location_id)"/>
<field name="tracking_id" select="2"/>
<newline/>
<label/>
+2 -2
View File
@@ -13,7 +13,7 @@
<separator string="Warning on the sale order" colspan="4"/>
<field name="sale_warn"/>
<field name="sale_warn_msg" colspan="4" nolabel="1"/>
<separator string="Warning on the sale order" colspan="4"/>
<separator string="Warning on the purchase order" colspan="4"/>
<field name="purchase_warn"/>
<field name="purchase_warn_msg" colspan="4" nolabel="1"/>
<separator string="Warning on the picking" colspan="4"/>
@@ -38,7 +38,7 @@
<separator string="Warning when selling this product" colspan="4"/>
<field name="sale_line_warn"/>
<field name="sale_line_warn_msg" colspan="4" nolabel="1"/>
<separator string="Warning when puchasing this product" colspan="4"/>
<separator string="Warning when purchasing this product" colspan="4"/>
<field name="purchase_line_warn"/>
<field name="purchase_line_warn_msg" colspan="4" nolabel="1"/>
</page>
+4 -4
View File
@@ -17,7 +17,7 @@
<field name="type">tree</field>
<field name="field_parent">child_ids</field>
<field name="arch" type="xml">
<tree srting="Wiki Groups">
<tree string="Wiki Groups">
<field name="name"/>
</tree>
</field>
@@ -27,7 +27,7 @@
<field name="model">wiki.groups</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form srting="Wiki Groups">
<form string="Wiki Groups">
<group colspan="4" col="4">
<field name="name" select="1"/>
<field name="parent_id" select="2"/>
@@ -132,7 +132,7 @@
<field name="model">wiki.wiki.history</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree srting="Wiki History">
<tree string="Wiki History">
<field name="create_date"/>
<field name="write_uid"/>
<field name="minor_edit" groups="base.group_extended"/>
@@ -146,7 +146,7 @@
<field name="model">wiki.wiki.history</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form srting="Wiki History">
<form string="Wiki History">
<field name="wiki_id" select="1" colspan="4"/>
<field name="summary" select="1" colspan="4"/>
<field name="text_area" select="1" colspan="4" nolabel="1" widget="text_wiki"/>