merge
bzr revid: pso@tinyerp.com-20090106113354-lt0txytytk74qjzj bzr revid: pso@tinyerp.com-20090107062356-yv3wq40u2e91aw14 bzr revid: pso@tinyerp.com-20090110051234-v7q0qg7t2858t5tm
This commit is contained in:
+36
-37
@@ -19,9 +19,11 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
{
|
||||
"name" : "Accounting and financial management",
|
||||
"version" : "1.0",
|
||||
"version" : "1.1",
|
||||
"depends" : ["product", "base", "process"],
|
||||
"author" : "Tiny",
|
||||
"description": """Financial and accounting module that covers:
|
||||
@@ -33,43 +35,40 @@
|
||||
Customer and Supplier Invoices
|
||||
Bank statements
|
||||
""",
|
||||
"website" : "http://www.openerp.com",
|
||||
"category" : "Generic Modules/Accounting",
|
||||
"init_xml" : [
|
||||
'author': 'Tiny',
|
||||
'website': 'http://www.openerp.com',
|
||||
'depends': ['product', 'base', 'process'],
|
||||
'init_xml': [],
|
||||
'update_xml': [
|
||||
'security/account_security.xml',
|
||||
'security/ir.model.access.csv',
|
||||
'account_menuitem.xml',
|
||||
'account_wizard.xml',
|
||||
'account_view.xml',
|
||||
'account_end_fy.xml',
|
||||
'account_invoice_view.xml',
|
||||
'account_report.xml',
|
||||
'partner_view.xml',
|
||||
'data/account_invoice.xml',
|
||||
'data/account_data2.xml',
|
||||
'account_invoice_workflow.xml',
|
||||
'project/project_view.xml',
|
||||
'project/project_report.xml',
|
||||
'product_view.xml',
|
||||
'account_assert_test.xml',
|
||||
'process/statement_process.xml',
|
||||
'process/customer_invoice_process.xml',
|
||||
'process/supplier_invoice_process.xml'
|
||||
],
|
||||
"demo_xml" : [
|
||||
"account_demo.xml",
|
||||
"project/project_demo.xml",
|
||||
"project/analytic_account_demo.xml",
|
||||
"demo/account_minimal.xml",
|
||||
"account_unit_test.xml",
|
||||
'demo_xml': [
|
||||
'account_demo.xml',
|
||||
'project/project_demo.xml',
|
||||
'project/analytic_account_demo.xml',
|
||||
'demo/account_minimal.xml',
|
||||
'account_unit_test.xml'
|
||||
],
|
||||
"update_xml" : [
|
||||
"security/account_security.xml",
|
||||
"security/ir.model.access.csv",
|
||||
"account_menuitem.xml",
|
||||
"account_wizard.xml",
|
||||
"account_view.xml",
|
||||
"account_end_fy.xml",
|
||||
"account_invoice_view.xml",
|
||||
"account_report.xml",
|
||||
"partner_view.xml",
|
||||
"data/account_invoice.xml",
|
||||
"data/account_data2.xml",
|
||||
"account_invoice_workflow.xml",
|
||||
"project/project_view.xml",
|
||||
"project/project_report.xml",
|
||||
"product_view.xml",
|
||||
"account_assert_test.xml",
|
||||
"process/statement_process.xml",
|
||||
"process/customer_invoice_process.xml",
|
||||
"process/supplier_invoice_process.xml",
|
||||
],
|
||||
"translations" : {
|
||||
"fr": "i18n/french_fr.csv"
|
||||
},
|
||||
"active": False,
|
||||
"installable": True
|
||||
'installable': True,
|
||||
'active': False,
|
||||
'certificate': '80331923549',
|
||||
}
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
+18
-32
@@ -154,7 +154,7 @@ class account_account(osv.osv):
|
||||
args[pos] = ('id','in',ids1)
|
||||
pos+=1
|
||||
|
||||
if context and context.has_key('consolidate_childs'): #add concolidated childs of accounts
|
||||
if context and context.has_key('consolidate_childs'): #add consolidated childs of accounts
|
||||
ids = super(account_account,self).search(cr, uid, args, offset, limit,
|
||||
order, context=context, count=count)
|
||||
for consolidate_child in self.browse(cr, uid, context['account_id']).child_consol_ids:
|
||||
@@ -166,15 +166,14 @@ class account_account(osv.osv):
|
||||
|
||||
def _get_children_and_consol(self, cr, uid, ids, context={}):
|
||||
#this function search for all the children and all consolidated children (recursively) of the given account ids
|
||||
res = self.search(cr, uid, [('parent_id', 'child_of', ids)])
|
||||
for id in res:
|
||||
this = self.browse(cr, uid, id, context)
|
||||
for child in this.child_consol_ids:
|
||||
if child.id not in res:
|
||||
res.append(child.id)
|
||||
if len(res) != len(ids):
|
||||
return self._get_children_and_consol(cr, uid, res, context)
|
||||
return res
|
||||
ids2 = self.search(cr, uid, [('parent_id', 'child_of', ids)], context=context)
|
||||
ids3 = []
|
||||
for rec in self.browse(cr, uid, ids2, context=context):
|
||||
for child in rec.child_consol_ids:
|
||||
ids3.append(child.id)
|
||||
if ids3:
|
||||
ids3 = self._get_children_and_consol(cr, uid, ids3, context)
|
||||
return ids2+ids3
|
||||
|
||||
def __compute(self, cr, uid, ids, field_names, arg, context={}, query=''):
|
||||
#compute the balance/debit/credit accordingly to the value of field_name for the given account ids
|
||||
@@ -1224,15 +1223,15 @@ class account_tax(osv.osv):
|
||||
#
|
||||
'base_code_id': fields.many2one('account.tax.code', 'Base Code', help="Use this code for the VAT declaration."),
|
||||
'tax_code_id': fields.many2one('account.tax.code', 'Tax Code', help="Use this code for the VAT declaration."),
|
||||
'base_sign': fields.float('Base Code Sign', help="Usualy 1 or -1."),
|
||||
'tax_sign': fields.float('Tax Code Sign', help="Usualy 1 or -1."),
|
||||
'base_sign': fields.float('Base Code Sign', help="Usually 1 or -1."),
|
||||
'tax_sign': fields.float('Tax Code Sign', help="Usually 1 or -1."),
|
||||
|
||||
# Same fields for refund invoices
|
||||
|
||||
'ref_base_code_id': fields.many2one('account.tax.code', 'Refund Base Code', help="Use this code for the VAT declaration."),
|
||||
'ref_tax_code_id': fields.many2one('account.tax.code', 'Refund Tax Code', help="Use this code for the VAT declaration."),
|
||||
'ref_base_sign': fields.float('Base Code Sign', help="Usualy 1 or -1."),
|
||||
'ref_tax_sign': fields.float('Tax Code Sign', help="Usualy 1 or -1."),
|
||||
'ref_base_sign': fields.float('Base Code Sign', help="Usually 1 or -1."),
|
||||
'ref_tax_sign': fields.float('Tax Code Sign', help="Usually 1 or -1."),
|
||||
'include_base_amount': fields.boolean('Include in base amount', help="Indicate if the amount of tax must be included in the base amount for the computation of the next taxes"),
|
||||
'company_id': fields.many2one('res.company', 'Company', required=True),
|
||||
'description': fields.char('Internal Name',size=32),
|
||||
@@ -1594,7 +1593,7 @@ class account_config_wizard(osv.osv_memory):
|
||||
ids=module_obj.search(cr, uid, [('category_id', '=', 'Account Charts'), ('state', '<>', 'installed')])
|
||||
res=[(m.id, m.shortdesc) for m in module_obj.browse(cr, uid, ids)]
|
||||
res.append((-1, 'None'))
|
||||
res.sort(lambda x,y: cmp(x[1],y[1]))
|
||||
res.sort(key=lambda x: x[1])
|
||||
return res
|
||||
|
||||
_columns = {
|
||||
@@ -1621,25 +1620,12 @@ class account_config_wizard(osv.osv_memory):
|
||||
'target':'new',
|
||||
}
|
||||
|
||||
def install_account_chart(self, cr, uid,ids, context=None):
|
||||
def install_account_chart(self, cr, uid, ids, context=None):
|
||||
for res in self.read(cr,uid,ids):
|
||||
id = res['charts']
|
||||
def install(id):
|
||||
chart_id = res['charts']
|
||||
if chart_id > 0:
|
||||
mod_obj = self.pool.get('ir.module.module')
|
||||
mod_obj.write(cr , uid, [id] ,{'state' : 'to install'})
|
||||
mod_obj.download(cr, uid, [id], context=context)
|
||||
cr.commit()
|
||||
cr.execute("select m.id as id from ir_module_module_dependency d inner join ir_module_module m on (m.name=d.name) where d.module_id=%s and m.state='uninstalled'",(id,))
|
||||
ret = cr.fetchall()
|
||||
if len(ret):
|
||||
for r in ret:
|
||||
install(r[0])
|
||||
else:
|
||||
mod_obj.write(cr , uid, [id] ,{'state' : 'to install'})
|
||||
mod_obj.download(cr, uid, [id], context=context)
|
||||
cr.commit()
|
||||
if id>0:
|
||||
install(id)
|
||||
mod_obj.button_install(cr, uid, [chart_id], context=context)
|
||||
cr.commit()
|
||||
db, pool = pooler.restart_pool(cr.dbname, update_module=True)
|
||||
|
||||
|
||||
@@ -493,7 +493,7 @@ class account_move_line(osv.osv):
|
||||
merges_rec = []
|
||||
for line in self.browse(cr, uid, ids, context):
|
||||
if line.reconcile_id:
|
||||
raise _('Already Reconciled')
|
||||
raise osv.except_osv(_('Already Reconciled'), _('Already Reconciled'))
|
||||
if line.reconcile_partial_id:
|
||||
for line2 in line.reconcile_partial_id.line_partial_ids:
|
||||
if not line2.reconcile_id:
|
||||
@@ -791,6 +791,7 @@ class account_move_line(osv.osv):
|
||||
|
||||
move_id = vals.get('move_id', False)
|
||||
journal = self.pool.get('account.journal').browse(cr, uid, context['journal_id'])
|
||||
is_new_move = False
|
||||
if not move_id:
|
||||
if journal.centralisation:
|
||||
# use the first move ever created for this journal and period
|
||||
@@ -815,10 +816,7 @@ 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']
|
||||
is_new_move = True
|
||||
|
||||
ok = not (journal.type_control_ids or journal.account_control_ids)
|
||||
if ('account_id' in vals):
|
||||
@@ -931,6 +929,8 @@ class account_move_line(osv.osv):
|
||||
if data['tax_code_id']:
|
||||
self.create(cr, uid, data, context)
|
||||
|
||||
if not is_new_move and 'date' in vals:
|
||||
self.pool.get('account.move').write(cr, uid, [move_id], {'date':vals['date']}, context=context)
|
||||
if check:
|
||||
tmp = self.pool.get('account.move').validate(cr, uid, [vals['move_id']], context)
|
||||
if journal.entry_posted and tmp:
|
||||
|
||||
+28
-18
@@ -31,7 +31,7 @@ from tools import config
|
||||
from tools.translate import _
|
||||
|
||||
class account_invoice(osv.osv):
|
||||
def _amount_all(self, cr, uid, ids, name, args, context={}):
|
||||
def _amount_all(self, cr, uid, ids, name, args, context=None):
|
||||
res = {}
|
||||
for invoice in self.browse(cr,uid,ids, context=context):
|
||||
res[invoice.id] = {
|
||||
@@ -47,6 +47,8 @@ class account_invoice(osv.osv):
|
||||
return res
|
||||
|
||||
def _get_journal(self, cr, uid, context):
|
||||
if context is None:
|
||||
context = {}
|
||||
type_inv = context.get('type', 'out_invoice')
|
||||
type2journal = {'out_invoice': 'sale', 'in_invoice': 'purchase', 'out_refund': 'sale', 'in_refund': 'purchase'}
|
||||
journal_obj = self.pool.get('account.journal')
|
||||
@@ -63,7 +65,7 @@ class account_invoice(osv.osv):
|
||||
else:
|
||||
return pooler.get_pool(cr.dbname).get('res.currency').search(cr, uid, [('rate','=',1.0)])[0]
|
||||
|
||||
def _get_journal_analytic(self, cr, uid, type_inv, context={}):
|
||||
def _get_journal_analytic(self, cr, uid, type_inv, context=None):
|
||||
type2journal = {'out_invoice': 'sale', 'in_invoice': 'purchase', 'out_refund': 'sale', 'in_refund': 'purchase'}
|
||||
tt = type2journal.get(type_inv, 'sale')
|
||||
result = self.pool.get('account.analytic.journal').search(cr, uid, [('type','=',tt)], context=context)
|
||||
@@ -71,7 +73,9 @@ class account_invoice(osv.osv):
|
||||
raise osv.except_osv(_('No Analytic Journal !'),_("You have to define an analytic journal of type '%s' !") % (tt,))
|
||||
return result[0]
|
||||
|
||||
def _get_type(self, cr, uid, context={}):
|
||||
def _get_type(self, cr, uid, context=None):
|
||||
if context is None:
|
||||
context = {}
|
||||
type = context.get('type', 'out_invoice')
|
||||
return type
|
||||
|
||||
@@ -84,7 +88,7 @@ class account_invoice(osv.osv):
|
||||
def _get_reference_type(self, cr, uid, context=None):
|
||||
return [('none', _('Free Reference'))]
|
||||
|
||||
def _amount_residual(self, cr, uid, ids, name, args, context={}):
|
||||
def _amount_residual(self, cr, uid, ids, name, args, context=None):
|
||||
res = {}
|
||||
data_inv = self.browse(cr, uid, ids)
|
||||
for inv in data_inv:
|
||||
@@ -113,19 +117,19 @@ class account_invoice(osv.osv):
|
||||
res[id]=[x for x in l if x <> line.id]
|
||||
return res
|
||||
|
||||
def _get_invoice_line(self, cr, uid, ids, context={}):
|
||||
def _get_invoice_line(self, cr, uid, ids, context=None):
|
||||
result = {}
|
||||
for line in self.pool.get('account.invoice.line').browse(cr, uid, ids, context=context):
|
||||
result[line.invoice_id.id] = True
|
||||
return result.keys()
|
||||
|
||||
def _get_invoice_tax(self, cr, uid, ids, context={}):
|
||||
def _get_invoice_tax(self, cr, uid, ids, context=None):
|
||||
result = {}
|
||||
for tax in self.pool.get('account.invoice.tax').browse(cr, uid, ids, context=context):
|
||||
result[tax.invoice_id.id] = True
|
||||
return result.keys()
|
||||
|
||||
def _compute_lines(self, cr, uid, ids, name, args, context={}):
|
||||
def _compute_lines(self, cr, uid, ids, name, args, context=None):
|
||||
result = {}
|
||||
for invoice in self.browse(cr, uid, ids, context):
|
||||
moves = self.move_line_id_payment_get(cr, uid, [invoice.id])
|
||||
@@ -373,7 +377,7 @@ class account_invoice(osv.osv):
|
||||
ok = ok and bool(cr.fetchone()[0])
|
||||
return ok
|
||||
|
||||
def button_reset_taxes(self, cr, uid, ids, context={}):
|
||||
def button_reset_taxes(self, cr, uid, ids, context=None):
|
||||
ait_obj = self.pool.get('account.invoice.tax')
|
||||
for id in ids:
|
||||
cr.execute("DELETE FROM account_invoice_tax WHERE invoice_id=%s", (id,))
|
||||
@@ -381,7 +385,7 @@ class account_invoice(osv.osv):
|
||||
ait_obj.create(cr, uid, taxe)
|
||||
return True
|
||||
|
||||
def button_compute(self, cr, uid, ids, context={}, set_total=False):
|
||||
def button_compute(self, cr, uid, ids, context=None, set_total=False):
|
||||
self.button_reset_taxes(cr, uid, ids, context)
|
||||
for inv in self.browse(cr, uid, ids):
|
||||
if set_total:
|
||||
@@ -626,7 +630,7 @@ class account_invoice(osv.osv):
|
||||
self._log_event(cr, uid, ids)
|
||||
return True
|
||||
|
||||
def line_get_convert(self, cr, uid, x, part, date, context={}):
|
||||
def line_get_convert(self, cr, uid, x, part, date, context=None):
|
||||
return {
|
||||
'date_maturity': x.get('date_maturity', False),
|
||||
'partner_id':part,
|
||||
@@ -717,7 +721,7 @@ class account_invoice(osv.osv):
|
||||
self.pool.get('res.partner.event').create(cr, uid, {'name':'Invoice: '+name, 'som':False, 'description':name+' '+str(inv['id']), 'document':name, 'partner_id':part, 'date':time.strftime('%Y-%m-%d %H:%M:%S'), 'canal_id':False, 'user_id':uid, 'partner_type':partnertype, 'probability':1.0, 'planned_revenue':pr, 'planned_cost':pc, 'type':eventtype})
|
||||
return len(invs)
|
||||
|
||||
def name_get(self, cr, uid, ids, context={}):
|
||||
def name_get(self, cr, uid, ids, context=None):
|
||||
if not len(ids):
|
||||
return []
|
||||
types = {
|
||||
@@ -731,7 +735,7 @@ class account_invoice(osv.osv):
|
||||
def name_search(self, cr, user, name, args=None, operator='ilike', context=None, limit=80):
|
||||
if not args:
|
||||
args=[]
|
||||
if not context:
|
||||
if context is None:
|
||||
context={}
|
||||
ids = []
|
||||
if name:
|
||||
@@ -809,7 +813,9 @@ class account_invoice(osv.osv):
|
||||
new_ids.append(self.create(cr, uid, invoice))
|
||||
return new_ids
|
||||
|
||||
def pay_and_reconcile(self, cr, uid, ids, pay_amount, pay_account_id, period_id, pay_journal_id, writeoff_acc_id, writeoff_period_id, writeoff_journal_id, context={}, name=''):
|
||||
def pay_and_reconcile(self, cr, uid, ids, pay_amount, pay_account_id, period_id, pay_journal_id, writeoff_acc_id, writeoff_period_id, writeoff_journal_id, context=None, name=''):
|
||||
if context is None:
|
||||
context = {}
|
||||
#TODO check if we can use different period for payment and the writeoff line
|
||||
assert len(ids)==1, "Can only pay one invoice at a time"
|
||||
invoice = self.browse(cr, uid, ids[0])
|
||||
@@ -871,7 +877,9 @@ class account_invoice_line(osv.osv):
|
||||
res[line.id] = round(line.price_unit * line.quantity * (1-(line.discount or 0.0)/100.0),2)
|
||||
return res
|
||||
|
||||
def _price_unit_default(self, cr, uid, context={}):
|
||||
def _price_unit_default(self, cr, uid, context=None):
|
||||
if context is None:
|
||||
context = {}
|
||||
if 'check_total' in context:
|
||||
t = context['check_total']
|
||||
for l in context.get('invoice_line', {}):
|
||||
@@ -910,7 +918,7 @@ class account_invoice_line(osv.osv):
|
||||
'price_unit': _price_unit_default,
|
||||
}
|
||||
|
||||
def product_id_change_unit_price_inv(self, cr, uid, tax_id, price_unit, qty, address_invoice_id, product, partner_id, context={}):
|
||||
def product_id_change_unit_price_inv(self, cr, uid, tax_id, price_unit, qty, address_invoice_id, product, partner_id, context=None):
|
||||
tax_obj = self.pool.get('account.tax')
|
||||
if price_unit:
|
||||
taxes = tax_obj.browse(cr, uid, tax_id)
|
||||
@@ -918,7 +926,9 @@ class account_invoice_line(osv.osv):
|
||||
price_unit = price_unit - tax['amount']
|
||||
return {'price_unit': price_unit,'invoice_line_tax_id': tax_id}
|
||||
|
||||
def product_id_change(self, cr, uid, ids, product, uom, qty=0, name='', type='out_invoice', partner_id=False, price_unit=False, address_invoice_id=False, context={}):
|
||||
def product_id_change(self, cr, uid, ids, product, uom, qty=0, name='', type='out_invoice', partner_id=False, price_unit=False, address_invoice_id=False, context=None):
|
||||
if context is None:
|
||||
context = {}
|
||||
if not partner_id:
|
||||
raise osv.except_osv(_('No Partner Defined !'),_("You must first select a partner !") )
|
||||
if not product:
|
||||
@@ -965,7 +975,7 @@ class account_invoice_line(osv.osv):
|
||||
domain = {'uos_id':[('category_id','=',res2 )]}
|
||||
return {'value':result, 'domain':domain}
|
||||
|
||||
def move_line_get(self, cr, uid, invoice_id, context={}):
|
||||
def move_line_get(self, cr, uid, invoice_id, context=None):
|
||||
res = []
|
||||
tax_grouped = {}
|
||||
tax_obj = self.pool.get('account.tax')
|
||||
@@ -1007,7 +1017,7 @@ class account_invoice_line(osv.osv):
|
||||
res[-1]['tax_amount'] = cur_obj.compute(cr, uid, inv.currency_id.id, company_currency, tax_amount, context={'date': inv.date_invoice})
|
||||
return res
|
||||
|
||||
def move_line_get_item(self, cr, uid, line, context={}):
|
||||
def move_line_get_item(self, cr, uid, line, context=None):
|
||||
return {
|
||||
'type':'src',
|
||||
'name': line.name[:64],
|
||||
|
||||
@@ -297,7 +297,7 @@
|
||||
<para style="terp_default_8">
|
||||
<font color="white"> </font>
|
||||
</para>
|
||||
<blockTable colWidths="211.0,62.0,63.0,63.0,36.0,89.0" style="Table_Header_Invoice_Line">
|
||||
<blockTable colWidths="211.0,62.0,63.0,63.0,40.0,85.0" style="Table_Header_Invoice_Line">
|
||||
<tr>
|
||||
<td>
|
||||
<para style="terp_tblheader_Details">Description</para>
|
||||
@@ -312,7 +312,7 @@
|
||||
<para style="terp_tblheader_Details_Right">Unit Price</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_tblheader_Details_Right">Disc. (%)</para>
|
||||
<para style="terp_tblheader_Details_Right">Disc.(%)</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_tblheader_Details_Centre">Price</para>
|
||||
@@ -350,7 +350,7 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<para style="terp_default_Note">[[ format(l.note or removeParentNode('tr')) ]]</para>
|
||||
<para style="terp_default_Note">[[ format(l.note) or removeParentNode('tr') ]]</para>
|
||||
<para style="terp_default_Note">
|
||||
<font color="white"> </font>
|
||||
</para>
|
||||
@@ -463,7 +463,7 @@
|
||||
<blockTable colWidths="530.0" style="Table_Main_Table">
|
||||
<tr>
|
||||
<td>
|
||||
<!-- <para style="terp_default_8">[[ format(o.amount_tax or removeParentNode('blockTable')) ]]</para> -->
|
||||
<!-- <para style="terp_default_8">[[ format(o.amount_tax) or removeParentNode('blockTable') ]]</para> -->
|
||||
<blockTable colWidths="54.0,58.0,67.0" style="Table_Tax_Header">
|
||||
<tr>
|
||||
<td>
|
||||
@@ -541,7 +541,7 @@
|
||||
<blockTable colWidths="530.0" style="Table_Coment_Payment_Term">
|
||||
<tr>
|
||||
<td>
|
||||
<para style="terp_default_9">[[ format(o.comment or removeParentNode('blockTable')) ]]</para>
|
||||
<para style="terp_default_9">[[ format(o.comment) or removeParentNode('blockTable') ]]</para>
|
||||
</td>
|
||||
</tr>
|
||||
</blockTable>
|
||||
@@ -551,7 +551,7 @@
|
||||
<blockTable colWidths="530.0" style="Table_Payment_Terms">
|
||||
<tr>
|
||||
<td>
|
||||
<para style="terp_default_9">[[ format((o.payment_term and o.payment_term.note) or removeParentNode('blockTable')) ]]</para>
|
||||
<para style="terp_default_9">[[ format(o.payment_term and o.payment_term.note) or removeParentNode('blockTable') ]]</para>
|
||||
</td>
|
||||
</tr>
|
||||
</blockTable>
|
||||
|
||||
@@ -37,7 +37,7 @@ def _action_open_window(self, cr, uid, data, context):
|
||||
cr.execute('select default_credit_account_id from account_journal where id=%s', (form['journal_id'],))
|
||||
account_id = cr.fetchone()[0]
|
||||
if not account_id:
|
||||
raise Exception, _('You have to define the bank account\nin the journal definition for reconciliation.')
|
||||
raise wizard.except_wizard(_('Error'), _('You have to define the bank account\nin the journal definition for reconciliation.'))
|
||||
return {
|
||||
'domain': "[('journal_id','=',%d), ('account_id','=',%d), ('state','<>','draft')]" % (form['journal_id'],account_id),
|
||||
'name': _('Standard Encoding'),
|
||||
|
||||
@@ -51,18 +51,19 @@ def _data_load(self, cr, uid, data, context):
|
||||
|
||||
def _data_save(self, cr, uid, data, context):
|
||||
if not data['form']['sure']:
|
||||
raise wizard.except_wizard(_('UserError'), _('Closing of fiscal year canceled, please check the box !'))
|
||||
raise wizard.except_wizard(_('UserError'), _('Closing of fiscal year cancelled, please check the box !'))
|
||||
pool = pooler.get_pool(cr.dbname)
|
||||
|
||||
fy_id = data['form']['fy_id']
|
||||
new_fyear = pool.get('account.fiscalyear').browse(cr, uid, data['form']['fy2_id'])
|
||||
start_jp = new_fyear.start_journal_period_id
|
||||
|
||||
if data['form']['report_new']:
|
||||
periods_fy2 = pool.get('account.fiscalyear').browse(cr, uid, data['form']['fy2_id']).period_ids
|
||||
if not periods_fy2:
|
||||
raise wizard.except_wizard(_('UserError'),
|
||||
_('There are no periods defined on New Fiscal Year.'))
|
||||
period=periods_fy2[0]
|
||||
new_fyear = pool.get('account.fiscalyear').browse(cr, uid, data['form']['fy2_id'])
|
||||
start_jp = new_fyear.start_journal_period_id
|
||||
if not start_jp:
|
||||
raise wizard.except_wizard(_('UserError'),
|
||||
_('The new fiscal year should have a journal for new entries define on it'))
|
||||
@@ -98,7 +99,7 @@ def _data_save(self, cr, uid, data, context):
|
||||
'period_id': period.id,
|
||||
'account_id': account.id
|
||||
}, {'journal_id': new_journal.id, 'period_id':period.id})
|
||||
if accnt_type_data.close_method=='unreconciled':
|
||||
if accnt_type_data.close_method == 'unreconciled':
|
||||
offset = 0
|
||||
limit = 100
|
||||
while True:
|
||||
@@ -162,8 +163,8 @@ def _data_save(self, cr, uid, data, context):
|
||||
cr.execute('UPDATE account_period SET state = %s ' \
|
||||
'WHERE fiscalyear_id = %s', ('done',fy_id))
|
||||
cr.execute('UPDATE account_fiscalyear ' \
|
||||
'SET state = %s, end_journal_period_id = %s' \
|
||||
'WHERE id = %s', ('done',start_jp,fy_id))
|
||||
'SET state = %s, end_journal_period_id = %s ' \
|
||||
'WHERE id = %s', ('done', start_jp and start_jp.id or None, fy_id))
|
||||
return {}
|
||||
|
||||
class wiz_journal_close(wizard.interface):
|
||||
|
||||
@@ -19,12 +19,16 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
{
|
||||
"name" : "report_account_analytic",
|
||||
"description": """Modify account analytic view to show
|
||||
'name': 'report_account_analytic',
|
||||
'version': '1.0',
|
||||
'category': 'Generic Modules/Accounting',
|
||||
'description': """Modify account analytic view to show
|
||||
important data for project manager of services companies.
|
||||
Add menu to show relevant information for each manager.""",
|
||||
"version" : "1.0",
|
||||
"version" : "1.1",
|
||||
"author" : "Camptocamp",
|
||||
"category" : "Generic Modules/Accounting",
|
||||
"module": "",
|
||||
@@ -36,10 +40,9 @@ Add menu to show relevant information for each manager.""",
|
||||
"account_analytic_analysis_view.xml",
|
||||
"account_analytic_analysis_menu.xml",
|
||||
],
|
||||
"demo_xml" : [],
|
||||
"active": False,
|
||||
"installable": True
|
||||
'demo_xml': [],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
'certificate': '42927202589',
|
||||
}
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
@@ -19,13 +19,13 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
{
|
||||
"name" : "Account Analytic Default",
|
||||
"version" : "1.0",
|
||||
"author" : "Tiny",
|
||||
"website" : "http://www.openerp.com",
|
||||
"category" : "Generic Modules/Accounting",
|
||||
"description": """
|
||||
'name': 'Account Analytic Default',
|
||||
'version': '1.0',
|
||||
'category': 'Generic Modules/Accounting',
|
||||
'description': """
|
||||
Allows to automatically select analytic accounts based on criterions:
|
||||
* Product
|
||||
* Partner
|
||||
@@ -33,14 +33,14 @@ Allows to automatically select analytic accounts based on criterions:
|
||||
* Company
|
||||
* Date
|
||||
""",
|
||||
"depends" : ['account'],
|
||||
"init_xml" : [],
|
||||
"demo_xml" : [],
|
||||
"update_xml" : [
|
||||
"security/ir.model.access.csv",
|
||||
"account_analytic_default_view.xml"],
|
||||
"active": False,
|
||||
"installable": True
|
||||
'author': 'Tiny',
|
||||
'website': 'http://www.openerp.com',
|
||||
'depends': ['account'],
|
||||
'init_xml': [],
|
||||
'update_xml': ['security/ir.model.access.csv', 'account_analytic_default_view.xml'],
|
||||
'demo_xml': [],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
'certificate': '74229833581',
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
@@ -19,12 +19,13 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
{
|
||||
"name" : "Multiple-plans management in Analytic Accounting",
|
||||
"version" : "1.0",
|
||||
"depends" : ["account", "account_analytic_default"],
|
||||
"author" : "Tiny",
|
||||
"description": """This module allows to use several analytic plans, according to the general journal,
|
||||
'name': 'Multiple-plans management in Analytic Accounting',
|
||||
'version': '1.0',
|
||||
'category': 'Generic Modules/Accounting',
|
||||
'description': """This module allows to use several analytic plans, according to the general journal,
|
||||
so that multiple analytic lines are created when the invoice or the entries
|
||||
are confirmed.
|
||||
|
||||
@@ -52,19 +53,19 @@ Plan2:
|
||||
So when this line of invoice will be confirmed, it will generate 3 analytic lines,
|
||||
for one account entry.
|
||||
""",
|
||||
"website" : "http://www.openerp.com",
|
||||
"category" : "Generic Modules/Accounting",
|
||||
"init_xml" : [
|
||||
'author': 'Tiny',
|
||||
'website': 'http://www.openerp.com',
|
||||
'depends': ['account', 'account_analytic_default'],
|
||||
'init_xml': [],
|
||||
'update_xml': [
|
||||
'security/ir.model.access.csv',
|
||||
'model_wizard.xml',
|
||||
'account_analytic_plans_view.xml',
|
||||
'account_analytic_plans_report.xml'
|
||||
],
|
||||
"demo_xml" : [
|
||||
],
|
||||
"update_xml" : [
|
||||
"security/ir.model.access.csv",
|
||||
"model_wizard.xml","account_analytic_plans_view.xml",
|
||||
"account_analytic_plans_report.xml"],
|
||||
|
||||
"active": False,
|
||||
"installable": True
|
||||
'demo_xml': [],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
'certificate': '36417675373',
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
@@ -19,12 +19,13 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
{
|
||||
"name" : "Accounting and financial management-Compare Accounts",
|
||||
"version" : "1.1",
|
||||
"depends" : ["account"],
|
||||
"author" : "Tiny",
|
||||
"description": """Account Balance Module is an added functionality to the Financial Management module.
|
||||
'name': 'Accounting and financial management-Compare Accounts',
|
||||
'version': '1.1',
|
||||
'category': 'Generic Modules/Accounting',
|
||||
'description': """Account Balance Module is an added functionality to the Financial Management module.
|
||||
|
||||
This module gives you the various options for printing balance sheet.
|
||||
|
||||
@@ -38,17 +39,14 @@
|
||||
|
||||
5. You have an option to print the desired report in Landscape format.
|
||||
""",
|
||||
"website" : "http://www.openerp.com",
|
||||
"category" : "Generic Modules/Accounting",
|
||||
"init_xml" : [
|
||||
],
|
||||
"demo_xml" : [],
|
||||
"update_xml" : ["account_report.xml","account_wizard.xml",],
|
||||
# "translations" : {
|
||||
# "fr": "i18n/french_fr.csv"
|
||||
# },
|
||||
"active": False,
|
||||
"installable": True
|
||||
'author': 'Tiny',
|
||||
'website': 'http://www.openerp.com',
|
||||
'depends': ['account'],
|
||||
'init_xml': [],
|
||||
'update_xml': ['account_report.xml', 'account_wizard.xml'],
|
||||
'demo_xml': [],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
'certificate': '81928745309',
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
@@ -19,13 +19,13 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
{
|
||||
"name" : "Budget Management",
|
||||
"version" : "1.0",
|
||||
"author" : "Tiny",
|
||||
"website" : "http://www.openerp.com",
|
||||
"category" : "Generic Modules/Accounting",
|
||||
"description": """This module allows accountants to manage analytic and crossovered budgets.
|
||||
'name': 'Budget Management',
|
||||
'version': '1.0',
|
||||
'category': 'Generic Modules/Accounting',
|
||||
'description': """This module allows accountants to manage analytic and crossovered budgets.
|
||||
|
||||
Once the Master Budgets and the Budgets defined (in Financial
|
||||
Management/Budgets/), the Project Managers can set the planned amount on each
|
||||
@@ -44,15 +44,20 @@ Three reports are available:
|
||||
3. The last one is available from the Analytic Chart of Accounts. It gives the spreading, for the selected Analytic Accounts, of the Master Budgets per Budgets.
|
||||
|
||||
""",
|
||||
"depends" : ["account"],
|
||||
"init_xml" : [],
|
||||
"demo_xml" : ["crossovered_budget_demo.xml"],
|
||||
"update_xml" : [
|
||||
"security/ir.model.access.csv","account_budget_wizard.xml",
|
||||
"crossovered_budget_view.xml","crossovered_budget_report.xml","crossovered_budget_workflow.xml"
|
||||
'author': 'Tiny',
|
||||
'website': 'http://www.openerp.com',
|
||||
'depends': ['account'],
|
||||
'init_xml': [],
|
||||
'update_xml': [
|
||||
'security/ir.model.access.csv',
|
||||
'account_budget_wizard.xml',
|
||||
'crossovered_budget_view.xml',
|
||||
'crossovered_budget_report.xml',
|
||||
'crossovered_budget_workflow.xml'
|
||||
],
|
||||
"active": False,
|
||||
"installable": True
|
||||
'demo_xml': ['crossovered_budget_demo.xml'],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
'certificate': '43819694157',
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
@@ -19,24 +19,20 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
{
|
||||
"name" : "Charts of Accounts",
|
||||
"version" : "1.1",
|
||||
"depends" : ["account"],
|
||||
"author" : "Tiny",
|
||||
"description": """Remove minimal account chart""",
|
||||
"website" : "http://www.openerp.com",
|
||||
"category" : "Generic Modules/Accounting",
|
||||
"init_xml" : [
|
||||
],
|
||||
"demo_xml" : [
|
||||
],
|
||||
"update_xml" : [
|
||||
# Must be loaded by each modules
|
||||
# "account_chart.xml",
|
||||
],
|
||||
"installable": True
|
||||
'name': 'Charts of Accounts',
|
||||
'version': '1.1',
|
||||
'category': 'Generic Modules/Accounting',
|
||||
'description': """Remove minimal account chart""",
|
||||
'author': 'Tiny',
|
||||
'website': 'http://www.openerp.com',
|
||||
'depends': ['account'],
|
||||
'init_xml': [],
|
||||
'update_xml': [],
|
||||
'demo_xml': [],
|
||||
'installable': True,
|
||||
'certificate': '73332443901',
|
||||
}
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
@@ -19,16 +19,13 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
{
|
||||
"name" : "Account Date check",
|
||||
"version" : "1.0",
|
||||
"author" : "Tiny",
|
||||
"website" : "http://www.openerp.com",
|
||||
"depends" : ["account"],
|
||||
"category" : "Generic Modules/Accounting",
|
||||
"init_xml" : [],
|
||||
"demo_xml" : [],
|
||||
"description": """
|
||||
'name': 'Account Date check',
|
||||
'version': '1.0',
|
||||
'category': 'Generic Modules/Accounting',
|
||||
'description': """
|
||||
* Adds a field on journals: "Allows date not in the period"
|
||||
* By default, this field is checked.
|
||||
|
||||
@@ -37,11 +34,14 @@ period when you create an account entry. Otherwise, it generates an
|
||||
error message: "The date of your account move is not in the defined
|
||||
period !"
|
||||
""",
|
||||
"update_xml" : [
|
||||
"account_date_check_view.xml",
|
||||
],
|
||||
"active": False,
|
||||
"installable": True
|
||||
'author': 'Tiny',
|
||||
'website': 'http://www.openerp.com',
|
||||
'depends': ['account'],
|
||||
'init_xml': [],
|
||||
'update_xml': ['account_date_check_view.xml'],
|
||||
'demo_xml': [],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
'certificate': '66174843389',
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
@@ -19,12 +19,13 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
{
|
||||
"name" : "Accounting follow-ups management",
|
||||
"version" : "1.0",
|
||||
"depends" : ["account"],
|
||||
"author" : "Tiny",
|
||||
"description": """
|
||||
'name': 'Accounting follow-ups management',
|
||||
'version': '1.0',
|
||||
'category': 'Generic Modules/Accounting',
|
||||
'description': """
|
||||
Modules to automate letters for unpaid invoices, with multi-level recalls.
|
||||
|
||||
You can define your multiple levels of recall through the menu:
|
||||
@@ -37,20 +38,19 @@
|
||||
It will generate a PDF with all the letters according the the
|
||||
different levels of recall defined. You can define different policies
|
||||
for different companies.""",
|
||||
"website" : "http://www.openerp.com",
|
||||
"category" : "Generic Modules/Accounting",
|
||||
"init_xml" : [],
|
||||
"demo_xml" : ["followup_demo.xml"],
|
||||
"update_xml" : [
|
||||
"security/ir.model.access.csv",
|
||||
"wizard/wizard_view.xml",
|
||||
"followup_view.xml",
|
||||
"followup_report_view.xml",
|
||||
'author': 'Tiny',
|
||||
'website': 'http://www.openerp.com',
|
||||
'depends': ['account'],
|
||||
'init_xml': [],
|
||||
'update_xml': [
|
||||
'security/ir.model.access.csv',
|
||||
'wizard/wizard_view.xml',
|
||||
'followup_view.xml',
|
||||
'followup_report_view.xml'
|
||||
],
|
||||
"active": False,
|
||||
"installable": True
|
||||
'demo_xml': ['followup_demo.xml'],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
'certificate': '72481076453',
|
||||
}
|
||||
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
@@ -19,12 +19,13 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
{
|
||||
"name" : "account_invoice_layout",
|
||||
"version" : "1.0",
|
||||
"depends" : ["base", "account"],
|
||||
"author" : "Tiny",
|
||||
"description": """
|
||||
'name': 'account_invoice_layout',
|
||||
'version': '1.0',
|
||||
'category': 'Generic Modules/Projects & Services',
|
||||
'description': """
|
||||
This module provides some features to improve the layout of the invoices.
|
||||
|
||||
It gives you the possibility to
|
||||
@@ -35,17 +36,18 @@
|
||||
Moreover, there is one option which allow you to print all the selected invoices with a given special message at the bottom of it. This feature can be very useful for printing your invoices with end-of-year wishes, special punctual conditions...
|
||||
|
||||
""",
|
||||
"website" : "http://www.openerp.com",
|
||||
"category" : "Generic Modules/Projects & Services",
|
||||
"init_xml" : [],
|
||||
"demo_xml" : [],
|
||||
"update_xml" : [
|
||||
"security/ir.model.access.csv",
|
||||
"account_invoice_layout_view.xml",
|
||||
"account_invoice_layout_report.xml",
|
||||
'author': 'Tiny',
|
||||
'website': 'http://www.openerp.com',
|
||||
'depends': ['base', 'account'],
|
||||
'init_xml': [],
|
||||
'update_xml': [
|
||||
'security/ir.model.access.csv',
|
||||
'account_invoice_layout_view.xml',
|
||||
'account_invoice_layout_report.xml'
|
||||
],
|
||||
"active": False,
|
||||
"installable": True
|
||||
'demo_xml': [],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
'certificate': '57235078173',
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
@@ -287,11 +287,11 @@
|
||||
</td>
|
||||
</tr>
|
||||
</blockTable>
|
||||
<para style="P19">[[ format(o.comment or '') ]]</para>
|
||||
<para style="P19">[[ format(o.comment) or '' ]]</para>
|
||||
<para style="P19">
|
||||
<font color="white"> </font>
|
||||
</para>
|
||||
<para style="P19">[[ format((o.payment_term and o.payment_term.note) or '') ]]</para>
|
||||
<para style="P19">[[ format(o.payment_term and o.payment_term.note) or '' ]]</para>
|
||||
</story>
|
||||
</document>
|
||||
|
||||
|
||||
@@ -287,11 +287,11 @@
|
||||
</td>
|
||||
</tr>
|
||||
</blockTable>
|
||||
<para style="P19">[[ format(o.comment or '') ]]</para>
|
||||
<para style="P19">[[ format(o.comment) or '' ]]</para>
|
||||
<para style="P19">
|
||||
<font color="white"> </font>
|
||||
</para>
|
||||
<para style="P19">[[ format((o.payment_term and o.payment_term.note) or '') ]]</para>
|
||||
<para style="P19">[[ format(o.payment_term and o.payment_term.note) or '' ]]</para>
|
||||
<section>
|
||||
<para style="P19">[[ repeatIn((spcl_msg(data['form']) and spcl_msg(data['form']).splitlines()) or [], 'note') ]]</para>
|
||||
<para style="P19">[[ note or removeParentNode('para') ]]</para>
|
||||
|
||||
@@ -19,9 +19,11 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
{
|
||||
"name": "Payment Management",
|
||||
"version": "1.0",
|
||||
"version": "1.1",
|
||||
"author": "Tiny",
|
||||
"category": "Generic Modules/Payment",
|
||||
"depends": ["account"],
|
||||
@@ -31,21 +33,22 @@
|
||||
* a more efficient way to manage invoice payment.
|
||||
* a basic mechanism to easily plug various automated payment.
|
||||
""",
|
||||
"demo_xml": [],
|
||||
"update_xml": [
|
||||
"security/account_payment_security.xml",
|
||||
"security/ir.model.access.csv",
|
||||
"payment_wizard.xml",
|
||||
"payment_view.xml",
|
||||
"payment_workflow.xml",
|
||||
"payment_sequence.xml",
|
||||
"account_invoice_view.xml",
|
||||
"payment_report.xml",
|
||||
'author': 'Tiny',
|
||||
'depends': ['account'],
|
||||
'init_xml': [],
|
||||
'update_xml': [
|
||||
'security/account_payment_security.xml',
|
||||
'security/ir.model.access.csv',
|
||||
'payment_wizard.xml',
|
||||
'payment_view.xml',
|
||||
'payment_workflow.xml',
|
||||
'payment_sequence.xml',
|
||||
'account_invoice_view.xml',
|
||||
'payment_report.xml'
|
||||
],
|
||||
"active": False,
|
||||
"installable": True
|
||||
'demo_xml': [],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
'certificate': '61703998541',
|
||||
}
|
||||
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
@@ -19,31 +19,29 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
{
|
||||
"name" : "Reporting for accounting",
|
||||
"version" : "1.0",
|
||||
"depends" : ["account"],
|
||||
"author" : "Tiny",
|
||||
"description": """Financial and accounting reporting
|
||||
'name': 'Reporting for accounting',
|
||||
'version': '1.0',
|
||||
'category': 'Generic Modules/Accounting',
|
||||
'description': """Financial and accounting reporting
|
||||
Fiscal statements
|
||||
Indicators
|
||||
""",
|
||||
"website" : "http://www.openerp.com",
|
||||
"category" : "Generic Modules/Accounting",
|
||||
"init_xml" : [ ],
|
||||
"demo_xml" : [ ],
|
||||
"update_xml" : [
|
||||
"security/ir.model.access.csv",
|
||||
"account_view.xml",
|
||||
"account_report.xml",
|
||||
"account_wizard.xml",
|
||||
'author': 'Tiny',
|
||||
'website': 'http://www.openerp.com',
|
||||
'depends': ['account'],
|
||||
'init_xml': [],
|
||||
'update_xml': [
|
||||
'security/ir.model.access.csv',
|
||||
'account_view.xml',
|
||||
'account_report.xml',
|
||||
'account_wizard.xml'
|
||||
],
|
||||
# "translations" : {
|
||||
# "fr": "i18n/french_fr.csv"
|
||||
# },
|
||||
"active": False,
|
||||
"installable": True
|
||||
'demo_xml': [],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
'certificate': '50976406925',
|
||||
}
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
@@ -19,27 +19,26 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
{
|
||||
"name" : "Reporting of Balancesheet for accounting",
|
||||
"version" : "1.0",
|
||||
"depends" : ["account"],
|
||||
"author" : "Tiny",
|
||||
"description": """Financial and accounting reporting
|
||||
'name': 'Reporting of Balancesheet for accounting',
|
||||
'version': '1.0',
|
||||
'category': 'Generic Modules/Accounting',
|
||||
'description': """Financial and accounting reporting
|
||||
Balance Sheet Report""",
|
||||
"category" : "Generic Modules/Accounting",
|
||||
"init_xml" : [ ],
|
||||
"demo_xml" : [ ],
|
||||
"update_xml" : [
|
||||
"security/ir.model.access.csv",
|
||||
"account_view.xml",
|
||||
"account_report.xml",
|
||||
"account_data.xml",
|
||||
'author': 'Tiny',
|
||||
'depends': ['account'],
|
||||
'init_xml': [],
|
||||
'update_xml': [
|
||||
'security/ir.model.access.csv',
|
||||
'account_view.xml',
|
||||
'account_report.xml',
|
||||
'account_data.xml'
|
||||
],
|
||||
# "translations" : {
|
||||
# "fr": "i18n/french_fr.csv"
|
||||
# },
|
||||
"active": False,
|
||||
"installable": True
|
||||
'demo_xml': [],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
'certificate': '72305016797',
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
@@ -19,24 +19,25 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
{
|
||||
"name" : "Invoices and prices with taxes included",
|
||||
"version" : "1.0",
|
||||
"depends" : ["account"],
|
||||
"author" : "Tiny",
|
||||
"description": """Allow the user to work tax included prices.
|
||||
'name': 'Invoices and prices with taxes included',
|
||||
'version': '1.0',
|
||||
'category': 'Generic Modules/Accounting',
|
||||
'description': """Allow the user to work tax included prices.
|
||||
Especially useful for b2c businesses.
|
||||
|
||||
This module implement the modification on the invoice form.
|
||||
""",
|
||||
"website" : "http://www.openerp.com",
|
||||
"category" : "Generic Modules/Accounting",
|
||||
"init_xml" : [ ],
|
||||
"demo_xml" : [ ],
|
||||
"update_xml" : [ 'invoice_tax_incl.xml' ],
|
||||
"active": False,
|
||||
"installable": True
|
||||
'author': 'Tiny',
|
||||
'website': 'http://www.openerp.com',
|
||||
'depends': ['account'],
|
||||
'init_xml': [],
|
||||
'update_xml': ['invoice_tax_incl.xml'],
|
||||
'demo_xml': [],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
'certificate': '70514190381',
|
||||
}
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@ account_invoice()
|
||||
|
||||
class account_invoice_line(osv.osv):
|
||||
_inherit = "account.invoice.line"
|
||||
def _amount_line2(self, cr, uid, ids, name, args, context={}):
|
||||
def _amount_line2(self, cr, uid, ids, name, args, context=None):
|
||||
"""
|
||||
Return the subtotal excluding taxes with respect to price_type.
|
||||
"""
|
||||
@@ -87,7 +87,9 @@ class account_invoice_line(osv.osv):
|
||||
res[line.id]['price_subtotal_incl']= round(res[line.id]['price_subtotal_incl'], 2)
|
||||
return res
|
||||
|
||||
def _price_unit_default(self, cr, uid, context={}):
|
||||
def _price_unit_default(self, cr, uid, context=None):
|
||||
if context is None:
|
||||
context = {}
|
||||
if 'check_total' in context:
|
||||
t = context['check_total']
|
||||
if context.get('price_type', False) == 'tax_included':
|
||||
@@ -116,7 +118,7 @@ class account_invoice_line(osv.osv):
|
||||
'price_unit': _price_unit_default,
|
||||
}
|
||||
|
||||
def move_line_get_item(self, cr, uid, line, context={}):
|
||||
def move_line_get_item(self, cr, uid, line, context=None):
|
||||
return {
|
||||
'type':'src',
|
||||
'name':line.name,
|
||||
@@ -129,28 +131,30 @@ class account_invoice_line(osv.osv):
|
||||
'account_analytic_id':line.account_analytic_id.id,
|
||||
}
|
||||
|
||||
# TODO: check why ?
|
||||
#
|
||||
# def product_id_change_unit_price_inv(self, cr, uid, tax_id, price_unit, qty, address_invoice_id, product, partner_id, context={}):
|
||||
# if context.get('price_type', False) == 'tax_included':
|
||||
# return {'price_unit': price_unit,'invoice_line_tax_id': tax_id}
|
||||
# else:
|
||||
# return super(account_invoice_line, self).product_id_change_unit_price_inv(cr, uid, tax_id, price_unit, qty, address_invoice_id, product, partner_id, context=context)
|
||||
#
|
||||
# def product_id_change(self, cr, uid, ids, product, uom, qty=0, name='', type='out_invoice', partner_id=False, price_unit=False, address_invoice_id=False, price_type='tax_excluded', context={}):
|
||||
# context.update({'price_type': price_type})
|
||||
# return super(account_invoice_line, self).product_id_change(cr, uid, ids, product, uom, qty, name, type, partner_id, price_unit, address_invoice_id, context=context)
|
||||
def product_id_change_unit_price_inv(self, cr, uid, tax_id, price_unit, qty, address_invoice_id, product, partner_id, context=None):
|
||||
if context is None:
|
||||
context = {}
|
||||
# if the tax is already included, just return the value without calculations
|
||||
if context.get('price_type', False) == 'tax_included':
|
||||
return {'price_unit': price_unit,'invoice_line_tax_id': tax_id}
|
||||
else:
|
||||
return super(account_invoice_line, self).product_id_change_unit_price_inv(cr, uid, tax_id, price_unit, qty, address_invoice_id, product, partner_id, context=context)
|
||||
|
||||
def product_id_change(self, cr, uid, ids, product, uom, qty=0, name='', type='out_invoice', partner_id=False, price_unit=False, address_invoice_id=False, price_type='tax_excluded', context=None):
|
||||
# note: will call product_id_change_unit_price_inv with context...
|
||||
if context is None:
|
||||
context = {}
|
||||
context.update({'price_type': price_type})
|
||||
return super(account_invoice_line, self).product_id_change(cr, uid, ids, product, uom, qty, name, type, partner_id, price_unit, address_invoice_id, context=context)
|
||||
account_invoice_line()
|
||||
|
||||
class account_invoice_tax(osv.osv):
|
||||
_inherit = "account.invoice.tax"
|
||||
|
||||
def compute(self, cr, uid, invoice_id, context={}):
|
||||
def compute(self, cr, uid, invoice_id, context=None):
|
||||
inv = self.pool.get('account.invoice').browse(cr, uid, invoice_id)
|
||||
line_ids = map(lambda x: x.id, inv.invoice_line)
|
||||
|
||||
|
||||
|
||||
tax_grouped = {}
|
||||
tax_obj = self.pool.get('account.tax')
|
||||
cur_obj = self.pool.get('res.currency')
|
||||
|
||||
@@ -19,11 +19,13 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
{
|
||||
"name" : "Accounting - Voucher Management",
|
||||
"version" : "1.0",
|
||||
"author" : "Tiny",
|
||||
"description": """
|
||||
'name': 'Accounting - Voucher Management',
|
||||
'version': '1.0',
|
||||
'category': 'Generic Modules/Accounting',
|
||||
'description': """
|
||||
India Accounting module includes all the basic requirenment of
|
||||
Basic Accounting, plus new things which available are:
|
||||
* New Invoice - (Local, Retail)
|
||||
@@ -33,22 +35,20 @@ Basic Accounting, plus new things which available are:
|
||||
* VAT Declaration report
|
||||
* Accounting Periods
|
||||
""",
|
||||
"category" : "Generic Modules/Accounting",
|
||||
"website" : "http://www.openerp.com",
|
||||
"depends" : ["base", "account"],
|
||||
"init_xml" : [
|
||||
'author': 'Tiny',
|
||||
'website': 'http://www.openerp.com',
|
||||
'depends': ['base', 'account'],
|
||||
'init_xml': [],
|
||||
'update_xml': [
|
||||
'security/ir.model.access.csv',
|
||||
'account_voucher_sequence.xml',
|
||||
'account_view.xml',
|
||||
'account_report.xml',
|
||||
'voucher_view.xml'
|
||||
],
|
||||
|
||||
"demo_xml" : [
|
||||
],
|
||||
|
||||
"update_xml" : [
|
||||
"security/ir.model.access.csv",
|
||||
"account_voucher_sequence.xml",
|
||||
"account_view.xml",
|
||||
"account_report.xml",
|
||||
"voucher_view.xml",
|
||||
],
|
||||
"active": False,
|
||||
"installable": True
|
||||
'demo_xml': [],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
'certificate': '37580727101',
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
@@ -19,28 +19,27 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
{
|
||||
"name" : "Analytic Journal Billing Rate",
|
||||
"version" : "1.0",
|
||||
"depends" : ["analytic_user_function", "account", "hr_timesheet_invoice"],
|
||||
"author" : "Tiny",
|
||||
"description": """
|
||||
'name': 'Analytic Journal Billing Rate',
|
||||
'version': '1.0',
|
||||
'category': 'Generic Modules/Others',
|
||||
'description': """
|
||||
|
||||
This module allows you to define what is the default invoicing rate for a specific journal on a given account. This is mostly used when a user encode his timesheet: the values are retrieved and the fields are auto-filled... but the possibility to change these values is still available.
|
||||
|
||||
Obviously if no data has been recorded for the current account, the default value is given as usual by the account data so that this module is perfectly compatible with older configurations.
|
||||
|
||||
""",
|
||||
"website" : "http://www.openerp.com",
|
||||
"category" : "Generic Modules/Others",
|
||||
"init_xml" : [],
|
||||
"demo_xml" : [],
|
||||
"update_xml" : [
|
||||
"analytic_journal_billing_rate_view.xml",
|
||||
"security/ir.model.access.csv",
|
||||
],
|
||||
"active": False,
|
||||
"installable": True
|
||||
'author': 'Tiny',
|
||||
'website': 'http://www.openerp.com',
|
||||
'depends': ['analytic_user_function', 'account', 'hr_timesheet_invoice'],
|
||||
'init_xml': [],
|
||||
'update_xml': ['analytic_journal_billing_rate_view.xml', 'security/ir.model.access.csv'],
|
||||
'demo_xml': [],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
'certificate': '30271787965',
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
@@ -19,28 +19,27 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
{
|
||||
"name" : "Analytic User Function",
|
||||
"version" : "1.0",
|
||||
"depends" : ["hr_timesheet_sheet"],
|
||||
"author" : "Tiny",
|
||||
"description": """
|
||||
'name': 'Analytic User Function',
|
||||
'version': '1.0',
|
||||
'category': 'Generic Modules/Others',
|
||||
'description': """
|
||||
|
||||
This module allows you to define what is the default function of a specific user on a given account. This is mostly used when a user encode his timesheet: the values are retrieved and the fields are auto-filled... but the possibility to change these values is still available.
|
||||
|
||||
Obviously if no data has been recorded for the current account, the default value is given as usual by the employee data so that this module is perfectly compatible with older configurations.
|
||||
|
||||
""",
|
||||
"website" : "http://www.openerp.com",
|
||||
"category" : "Generic Modules/Others",
|
||||
"init_xml" : [],
|
||||
"demo_xml" : [],
|
||||
"update_xml" : [
|
||||
"analytic_user_function_view.xml",
|
||||
"security/ir.model.access.csv",
|
||||
],
|
||||
"active": False,
|
||||
"installable": True
|
||||
'author': 'Tiny',
|
||||
'website': 'http://www.openerp.com',
|
||||
'depends': ['hr_timesheet_sheet'],
|
||||
'init_xml': [],
|
||||
'update_xml': ['analytic_user_function_view.xml', 'security/ir.model.access.csv'],
|
||||
'demo_xml': [],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
'certificate': '82277138269',
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
+19
-20
@@ -19,30 +19,29 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
{
|
||||
"name" : "Auction module",
|
||||
"version" : "1.0",
|
||||
"author" : "Tiny",
|
||||
"category" : "Generic Modules/Auction",
|
||||
"depends" : ["base","account","hr_attendance"],
|
||||
"description": '''This module provides functionality to
|
||||
'name': 'Auction module',
|
||||
'version': '1.0',
|
||||
'category': 'Generic Modules/Auction',
|
||||
'description': """This module provides functionality to
|
||||
manage artists, articles, sellers, buyers and auction.
|
||||
Manage bids, track of sold, paid and unpaid objects.
|
||||
Delivery Management.
|
||||
''',
|
||||
"update_xml" : [
|
||||
# FIXME: review security rules...
|
||||
"security/ir.model.access.csv",
|
||||
"auction_view.xml",
|
||||
"auction_report.xml",
|
||||
"auction_wizard.xml",
|
||||
""",
|
||||
'author': 'Tiny',
|
||||
'depends': ['base', 'account', 'hr_attendance'],
|
||||
'init_xml': ['auction_sequence.xml'],
|
||||
'update_xml': [
|
||||
'security/ir.model.access.csv',
|
||||
'auction_view.xml',
|
||||
'auction_report.xml',
|
||||
'auction_wizard.xml'
|
||||
],
|
||||
"demo_xml" : [
|
||||
"auction_demo.xml"
|
||||
],
|
||||
"init_xml" : ["auction_sequence.xml"],
|
||||
"active": False,
|
||||
"installable": True
|
||||
'demo_xml': ['auction_demo.xml'],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
'certificate': '39333102717',
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
@@ -161,7 +161,7 @@ def _get_dates(self,cr,uid, datas,context={}):
|
||||
return (x.split(' - ')[0], (' - '.join(x.split(' - ')[1:]).decode('latin1','replace').encode('utf-8','replace')))
|
||||
send_fields['dates']['selection'] = map(_date_decode, response.read().split('\n'))
|
||||
else:
|
||||
raise "Connection to WWW.Auction-in-Europe.com failed !"
|
||||
raise wizard.except_wizard(_('Error'), _("Connection to WWW.Auction-in-Europe.com failed !"))
|
||||
return {'objects':len(datas['ids'])}
|
||||
|
||||
def _send(self,db_name,uid, datas,context={}):
|
||||
|
||||
@@ -103,7 +103,8 @@ def _get_dates(self,cr,uid, datas, context):
|
||||
return (x.split(' - ')[0], (' - '.join(x.split(' - ')[1:]).decode('latin1').encode('utf-8')))
|
||||
send_fields['dates']['selection'] = map(_date_decode, response.read().split('\n'))
|
||||
else:
|
||||
raise "Connection to WWW.Auction-in-Europe.com failed !"
|
||||
raise wizard.except_wizard(_('Error'),
|
||||
_("Connection to WWW.Auction-in-Europe.com failed !"))
|
||||
return {'objects':len(datas['ids'])}
|
||||
|
||||
def _send(self,cr,uid, datas, context):
|
||||
|
||||
@@ -19,23 +19,26 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
{
|
||||
"name" : "Audit Trail",
|
||||
"version" : "1.0",
|
||||
"depends" : ["base","account","purchase","mrp"],
|
||||
"website" : "http://www.openerp.com",
|
||||
"author" : "Tiny",
|
||||
"init_xml" : [],
|
||||
"description": """Allows the administrator to track every user operations on all objects of the system.
|
||||
'name': 'Audit Trail',
|
||||
'version': '1.0',
|
||||
'category': 'Generic Modules/Others',
|
||||
'description': """Allows the administrator to track every user operations on all objects of the system.
|
||||
Subscribe Rules for read, write, create and delete on objects and check logs""",
|
||||
"category" : "Generic Modules/Others",
|
||||
"update_xml" : ["audittrail_view.xml",
|
||||
"security/ir.model.access.csv",
|
||||
"security/audittrail_security.xml",
|
||||
],
|
||||
"demo_xml" : ["audittrail_demo.xml"],
|
||||
"active" : False,
|
||||
"installable": True
|
||||
'author': 'Tiny',
|
||||
'website': 'http://www.openerp.com',
|
||||
'depends': ['base', 'account', 'purchase', 'mrp'],
|
||||
'init_xml': [],
|
||||
'update_xml': [
|
||||
'audittrail_view.xml',
|
||||
'security/ir.model.access.csv',
|
||||
'security/audittrail_security.xml'
|
||||
],
|
||||
'demo_xml': ['audittrail_demo.xml'],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
'certificate': '62572348749',
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
@@ -341,7 +341,7 @@ def tmp_fct(fct_src):
|
||||
return res
|
||||
return execute
|
||||
|
||||
obj = netsvc._service['object']
|
||||
obj = netsvc.SERVICES['object']
|
||||
obj.execute = tmp_fct(obj.execute)
|
||||
obj.exportMethod(obj.execute)
|
||||
|
||||
|
||||
@@ -19,13 +19,13 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
{
|
||||
"name" : "Base Contact",
|
||||
"version" : "1.0",
|
||||
"author" : "Tiny",
|
||||
"website" : "http://www.openerp.com",
|
||||
"category" : "Generic Modules/Base",
|
||||
"description": """
|
||||
'name': 'Base Contact',
|
||||
'version': '1.0',
|
||||
'category': 'Generic Modules/Base',
|
||||
'description': """
|
||||
This module allows you to manage entirely your contacts.
|
||||
|
||||
It lets you define
|
||||
@@ -39,18 +39,18 @@
|
||||
|
||||
Pay attention that this module converts the existing addresses into "addresses + contacts". It means that some fields of the addresses will be missing (like the contact name), since these are supposed to be defined in an other object.
|
||||
""",
|
||||
"depends" : ["base", "process"],
|
||||
"init_xml" : [],
|
||||
"demo_xml" : [
|
||||
"base_contact_demo.xml"
|
||||
],
|
||||
"update_xml" : [
|
||||
"security/ir.model.access.csv",
|
||||
'author': 'Tiny',
|
||||
'website': 'http://www.openerp.com',
|
||||
'depends': ['base', 'process'],
|
||||
'init_xml': [],
|
||||
'update_xml': [
|
||||
'security/ir.model.access.csv',
|
||||
'base_contact_view.xml',
|
||||
"process/base_contact_process.xml"
|
||||
'process/base_contact_process.xml'
|
||||
],
|
||||
"active": False,
|
||||
"installable": True
|
||||
'demo_xml': ['base_contact_demo.xml'],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
'certificate': '31287885469',
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
@@ -19,21 +19,22 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
{
|
||||
"name" : "IBAN",
|
||||
"version" : "1.0",
|
||||
"author" : "Tiny",
|
||||
"category" : "Generic Modules/Base",
|
||||
"depends" : ["base"],
|
||||
"description": """
|
||||
'name': 'IBAN',
|
||||
'version': '1.0',
|
||||
'category': 'Generic Modules/Base',
|
||||
'description': """
|
||||
This module install the base for IBAN bank accounts.
|
||||
|
||||
""",
|
||||
"update_xml" : ["base_iban_view.xml"],
|
||||
"init_xml" : ["base_iban_data.xml"],
|
||||
"active": False,
|
||||
"installable": True
|
||||
'author': 'Tiny',
|
||||
'depends': ['base'],
|
||||
'init_xml': ['base_iban_data.xml'],
|
||||
'update_xml': ['base_iban_view.xml'],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
'certificate': '50014379549',
|
||||
}
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
@@ -19,13 +19,13 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
{
|
||||
"name" : "Module Merger",
|
||||
"version" : "1.0",
|
||||
"author" : "Tiny",
|
||||
"website" : "http://www.openerp.com",
|
||||
"category" : "Generic Modules/Base",
|
||||
"description": """
|
||||
'name': 'Module Merger',
|
||||
'version': '1.0',
|
||||
'category': 'Generic Modules/Base',
|
||||
'description': """
|
||||
* The wizard asks a many2many of modules
|
||||
* And then generate a module which is the merge of all selected modules
|
||||
* The new module is provided as a .zip file
|
||||
@@ -34,11 +34,13 @@
|
||||
* Merging all .py files with the same name in the new module
|
||||
* merging all .xml files and take care of id's.
|
||||
""",
|
||||
"depends" : ["base"],
|
||||
"init_xml" : [ ],
|
||||
"demo_xml" : [ ],
|
||||
"update_xml" : [ "base_module_merge_wizard.xml" ],
|
||||
"installable": True
|
||||
'author': 'Tiny',
|
||||
'website': 'http://www.openerp.com',
|
||||
'depends': ['base'],
|
||||
'init_xml': [],
|
||||
'update_xml': ['base_module_merge_wizard.xml'],
|
||||
'demo_xml': [],
|
||||
'installable': True,
|
||||
'certificate': '35756279709',
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
@@ -193,7 +193,7 @@ class base_module_merge(wizard.interface):
|
||||
pool = pooler.get_pool(cr.dbname)
|
||||
dep_obj=pool.get('ir.module.module.dependency')
|
||||
if level<1:
|
||||
raise Exception, 'Recursion error in modules dependencies !'
|
||||
raise wizard.except_wizard(_('Error'), _('Recursion error in modules dependencies !'))
|
||||
for module in pool.get('ir.module.module').browse(cr, uid, ids):
|
||||
dep_ids = dep_obj.search(cr, uid, [('module_id', '=', module.id)])
|
||||
if dep_ids:
|
||||
|
||||
@@ -19,13 +19,13 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
{
|
||||
"name" : "Module publisher",
|
||||
"version" : "1.0",
|
||||
"author" : "Tiny",
|
||||
"website" : "http://www.openerp.com",
|
||||
"category" : "Generic Modules/Base",
|
||||
"description": """
|
||||
'name': 'Module publisher',
|
||||
'version': '1.0',
|
||||
'category': 'Generic Modules/Base',
|
||||
'description': """
|
||||
This module can be used by developpers to automatically publish their modules
|
||||
in a few click to the following websites:
|
||||
* http://OpenERP.com, section module
|
||||
@@ -36,12 +36,13 @@ in a few click to the following websites:
|
||||
It adds a button "Publish module" on each module, so that you simply have
|
||||
to call this button when you want to release a new version of your module.
|
||||
""",
|
||||
"depends" : ["base"],
|
||||
"init_xml" : [ ],
|
||||
"demo_xml" : [ ],
|
||||
"update_xml" : [ "base_module_publish_wizard.xml" ],
|
||||
"installable": True
|
||||
'author': 'Tiny',
|
||||
'website': 'http://www.openerp.com',
|
||||
'depends': ['base'],
|
||||
'init_xml': [],
|
||||
'update_xml': ['base_module_publish_wizard.xml'],
|
||||
'demo_xml': [],
|
||||
'installable': True,
|
||||
'certificate': '67939821245',
|
||||
}
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
@@ -19,23 +19,25 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
{
|
||||
"name" : "Base module quality",
|
||||
"author" : "Tiny",
|
||||
"version" : "1.0",
|
||||
"depends" : ["base",],
|
||||
"description": """"
|
||||
'name': 'Base module quality',
|
||||
'version': '1.0',
|
||||
'category': 'Tiny Specific Modules/Base module quality',
|
||||
'description': """"
|
||||
This module's aim is to check the quality of other modules.
|
||||
|
||||
It defines a wizard on the list of modules in OpenERP, which allow you to evaluate them on different criteria such as: the respect of OpenERP coding standards, the speed efficiency...
|
||||
|
||||
This module also provides generic framework to define your own quality test. For further info, coders may take a look into base_module_quality\README.txt
|
||||
""",
|
||||
"init_xml" : [],
|
||||
"update_xml" : ["base_module_quality_wizard.xml", "security/ir.model.access.csv",],
|
||||
"category" : "Tiny Specific Modules/Base module quality",
|
||||
"active": False,
|
||||
"installable": True
|
||||
'author': 'Tiny',
|
||||
'depends': ['base'],
|
||||
'init_xml': [],
|
||||
'update_xml': ['base_module_quality_wizard.xml', 'security/ir.model.access.csv'],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
'certificate': '75119475677',
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
@@ -21,38 +21,29 @@
|
||||
##############################################################################
|
||||
import pooler
|
||||
import os
|
||||
import osv
|
||||
from tools import config
|
||||
|
||||
class abstract_quality_check(object):
|
||||
'''
|
||||
This Class provide...
|
||||
This Class provides...
|
||||
'''
|
||||
|
||||
# #This float have to store the rating of the module.
|
||||
# #Used to compute the final score (average of all scores).
|
||||
# score = 0.0
|
||||
#
|
||||
# #This char have to store the result.
|
||||
# #Used to display the result of the test.
|
||||
# result = ""
|
||||
#
|
||||
# #This char have to store the result with more details.
|
||||
# #Used to provide more details if necessary.
|
||||
# result_details = ""
|
||||
#
|
||||
# #This bool defines if the test can be run only if the module is installed.
|
||||
# #True => the module have to be installed.
|
||||
# #False => the module can be uninstalled.
|
||||
# bool_installed_only = True
|
||||
|
||||
def __init__(self):
|
||||
'''
|
||||
this method should initialize the var
|
||||
'''
|
||||
#This float have to store the rating of the module.
|
||||
#Used to compute the final score (average of all scores).
|
||||
#0 <= self.score <= 1
|
||||
self.score = 0.0
|
||||
|
||||
#This char have to store the name of the test.
|
||||
self.name = ""
|
||||
|
||||
#This char have to store the aim of the test and eventually a note.
|
||||
self.note = ""
|
||||
|
||||
#This char have to store the result.
|
||||
#Used to display the result of the test.
|
||||
self.result = ""
|
||||
@@ -66,13 +57,13 @@ class abstract_quality_check(object):
|
||||
#False => the module can be uninstalled.
|
||||
self.bool_installed_only = True
|
||||
|
||||
|
||||
#This variable is use to make result of test should have more weight (Some tests are more critical than others)
|
||||
self.ponderation = 0.0
|
||||
self.ponderation = 1.0
|
||||
|
||||
#Specify test got an error on module
|
||||
self.error = False
|
||||
|
||||
#The tests have to subscribe itselfs in this list, that contains all the test that have to be performed.
|
||||
self.tests = []
|
||||
self.list_folders = os.listdir(config['addons_path']+'/base_module_quality/')
|
||||
for item in self.list_folders:
|
||||
@@ -86,11 +77,12 @@ class abstract_quality_check(object):
|
||||
self.tests.append(x3)
|
||||
# raise 'Not Implemented'
|
||||
|
||||
def run_test(self, cr, uid, module_path="", module_state=""):
|
||||
def run_test(self, cr, uid, module_path=""):
|
||||
'''
|
||||
this method should do the test and fill the score, result and result_details var
|
||||
'''
|
||||
# raise 'Not Implemented'
|
||||
|
||||
raise osv.except_osv(_('Programming Error'), _('Test Is Not Implemented'))
|
||||
|
||||
def get_objects(self, cr, uid, module):
|
||||
# This function returns all object of the given module..
|
||||
@@ -114,40 +106,19 @@ class abstract_quality_check(object):
|
||||
result_ids[obj] = ids
|
||||
return result_ids
|
||||
|
||||
def format_table(self, test='', header=[], data_list=[]):
|
||||
res_format = {}
|
||||
if test=='method':
|
||||
detail = ""
|
||||
detail += "\n===Method Test===\n"
|
||||
res_format['detail'] = detail
|
||||
if not data_list[2]:
|
||||
detail += ('{| border="1" cellspacing="0" cellpadding="5" align="left" \n! %-40s \n! %-16s \n! %-20s \n! %-16s ') % (header[0].ljust(40), header[1].ljust(16), header[2].ljust(20), header[3].ljust(16))
|
||||
for res in data_list[1]:
|
||||
detail += ('\n|-\n| %s \n| %s \n| %s \n| %s ') % (res, data_list[1][res][0], data_list[1][res][1], data_list[1][res][2])
|
||||
res_format['detail'] = detail + '\n|}'
|
||||
res_format['summary'] = data_list[0]
|
||||
elif test=='pylint':
|
||||
res_format['summary'] = data_list[0]
|
||||
res_format['detail'] = data_list[1]
|
||||
elif test=='speed':
|
||||
detail = ""
|
||||
detail += "\n===Speed Test===\n"
|
||||
res_format['detail'] = detail
|
||||
if not data_list[2]:
|
||||
detail += ('{| border="1" cellspacing="0" cellpadding="5" align="left" \n! %-40s \n! %-10s \n! %-10s \n! %-10s \n! %-10s \n! %-20s') % (header[0].ljust(40), header[1].ljust(10), header[2].ljust(10), header[3].ljust(10), header[4].ljust(10), header[5].ljust(20))
|
||||
for data in data_list[1]:
|
||||
detail += ('\n|-\n| %s \n| %s \n| %s \n| %s \n| %s \n| %s ') % (data[0], data[1], data[2], data[3], data[4], data[5])
|
||||
res_format['detail'] = detail + '\n|}\n'
|
||||
res_format['summary'] = data_list[0]
|
||||
elif test=='terp':
|
||||
res_format['summary'] = data_list[0]
|
||||
res_format['detail'] = data_list[1]
|
||||
return res_format
|
||||
def format_table(self, header=[], data_list=[]):
|
||||
detail = ""
|
||||
detail += (header[0]) % tuple(header[1])
|
||||
frow = '\n|-'
|
||||
for i in header[1]:
|
||||
frow += '\n| %s'
|
||||
for key, value in data_list.items():
|
||||
detail += (frow) % tuple(value)
|
||||
detail = detail + '\n|}'
|
||||
return detail
|
||||
|
||||
def add_quatation(self, x, y):
|
||||
return x/y
|
||||
|
||||
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
@@ -3,46 +3,75 @@
|
||||
<data>
|
||||
<!--<wizard id="base_module_quality" model="ir.module.module" name="base.module.quality" string="Check the Quality of module"/>-->
|
||||
|
||||
<record id="view_wizard_quality_check" model="ir.ui.view">
|
||||
<record id="view_wizard_quality_check_tree" model="ir.ui.view">
|
||||
<field name="name">Results of Quality Checks</field>
|
||||
<field name="model">wizard.quality.check</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Result">
|
||||
<field name="name"/>
|
||||
<field name="final_score"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_wizard_quality_check_form" model="ir.ui.view">
|
||||
<field name="name">Results of Quality Checks</field>
|
||||
<field name="model">wizard.quality.check</field>
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Result">
|
||||
<notebook>
|
||||
<page string="Verbose detail">
|
||||
<field name="verbose_detail" string="Verbose detail" nolabel="1" colspan="4" height="350" width="800"/>
|
||||
</page>
|
||||
</notebook>
|
||||
<field name="name" readonly="1" search="1"/>
|
||||
<field name="final_score" readonly="1" search="1"/>
|
||||
<separator colspan="4" string="Tests"/>
|
||||
<field name="test_ids" nolabel="1" colspan="4" height="350" width="800" readonly="1"/>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record id="view_wizard_quality_detail" model="ir.ui.view">
|
||||
<record id="view_wizard_quality_detail_form" model="ir.ui.view">
|
||||
<field name="name">Results of Quality Checks with detail</field>
|
||||
<field name="model">quality.check.detail</field>
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Result">
|
||||
<notebook>
|
||||
<page string="Summary">
|
||||
<field name="general_info" widget="text_wiki" nolabel="1" colspan="4" height="350" width="800"/>
|
||||
</page>
|
||||
<page string="Detail">
|
||||
<field name="detail" widget="text_wiki" nolabel="1" colspan="4" height="350" width="800"/>
|
||||
</page>
|
||||
</notebook>
|
||||
<page string="Summary">
|
||||
<field name="name" readonly="1"/>
|
||||
<field name="score" readonly="1"/>
|
||||
<field name="note" readonly="1" colspan="4"/>
|
||||
<field name="summary" widget="text_wiki" nolabel="1" colspan="4" height="350" width="800" readonly="1"/>
|
||||
|
||||
<field name="ponderation" readonly="1"/>
|
||||
<field name="state" readonly="1"/>
|
||||
</page>
|
||||
<page string="Detail">
|
||||
<field name="detail" widget="html_tag" nolabel="1" colspan="4" readonly="1"/>
|
||||
</page>
|
||||
</notebook>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<act_window
|
||||
id="act_view_wiz_quality_check"
|
||||
name="Quality Check"
|
||||
res_model="wizard.quality.check"
|
||||
src_model="ir.module.module"
|
||||
target="new"
|
||||
view_mode="form"
|
||||
context="{'module_id': active_id}"
|
||||
/>
|
||||
|
||||
<record id="view_wizard_quality_detail_tree" model="ir.ui.view">
|
||||
<field name="name">Results of Quality Checks with detail</field>
|
||||
<field name="model">quality.check.detail</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Result">
|
||||
<field name="name" required="1"/>
|
||||
<field name="state"/>
|
||||
<field name="score" required="1"/>
|
||||
<field name="ponderation"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
<wizard string="Quality Check"
|
||||
model="ir.module.module"
|
||||
name="create_quality_check_wiz"
|
||||
id="create_quality_check_id"
|
||||
menu="True"/>
|
||||
</data>
|
||||
|
||||
</openerp>
|
||||
|
||||
@@ -20,9 +20,7 @@
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
import os
|
||||
from tools import config
|
||||
from tools.translate import _
|
||||
|
||||
from base_module_quality import base_module_quality
|
||||
import pooler
|
||||
@@ -31,69 +29,56 @@ class quality_test(base_module_quality.abstract_quality_check):
|
||||
|
||||
def __init__(self):
|
||||
super(quality_test, self).__init__()
|
||||
# self.result = """
|
||||
#===Method Test===:
|
||||
#
|
||||
#This test checks if the module classes are raising exception when calling basic methods or no.
|
||||
#
|
||||
#"""
|
||||
self.name = _("Method Test")
|
||||
self.note = _("""
|
||||
This test checks if the module classes are raising exception when calling basic methods or not.
|
||||
""")
|
||||
self.bool_installed_only = True
|
||||
self.ponderation = 1.0
|
||||
return None
|
||||
|
||||
def run_test(self, cr, uid, module_path, module_state):
|
||||
def run_test(self, cr, uid, module_path):
|
||||
pool = pooler.get_pool(cr.dbname)
|
||||
module_name = module_path.split('/')[-1]
|
||||
obj_list = self.get_objects(cr, uid, module_name)
|
||||
result = {}
|
||||
ok_count = 0
|
||||
ex_count = 0
|
||||
result_dict = {}
|
||||
for obj in obj_list:
|
||||
temp = []
|
||||
temp = [obj]
|
||||
try:
|
||||
res = pool.get(obj).search(cr, uid, [])
|
||||
temp.append('Ok')
|
||||
temp.append(_('Ok'))
|
||||
ok_count += 1
|
||||
except:
|
||||
temp.append('Exception')
|
||||
temp.append(_('Exception'))
|
||||
ex_count += 1
|
||||
try:
|
||||
res1 = pool.get(obj).fields_view_get(cr, uid,)
|
||||
temp.append('Ok')
|
||||
temp.append(_('Ok'))
|
||||
ok_count += 1
|
||||
except:
|
||||
temp.append('Exception')
|
||||
temp.append(_('Exception'))
|
||||
ex_count += 1
|
||||
try:
|
||||
res2 = pool.get(obj).read(cr, uid, [])
|
||||
temp.append('Ok')
|
||||
temp.append(_('Ok'))
|
||||
ok_count += 1
|
||||
except:
|
||||
temp.append('Exception')
|
||||
temp.append(_('Exception'))
|
||||
ex_count += 1
|
||||
result[obj] = temp
|
||||
# self.result += ('{| border="1" cellspacing="0" cellpadding="5" align="left" \n! %-40s \n! %-16s \n! %-20s \n! %-16s ') % ('Object Name'.ljust(40), 'search()'.ljust(16), 'fields_view_get()'.ljust(20), 'read()'.ljust(16))
|
||||
header_list = ['Object Name', 'search()', 'fields_view_get', 'read']
|
||||
# for res in result:
|
||||
# self.result += ('\n|-\n| %s \n| %s \n| %s \n| %s ') % (res, result[res][0],result[res][1], result[res][2])
|
||||
# self.result += '\n|}'
|
||||
result_dict[obj] = temp
|
||||
self.score = (ok_count + ex_count) and float(ok_count)/float(ok_count + ex_count) or 0.0
|
||||
if not self.bool_installed_only or module_state=="installed":
|
||||
summary = """
|
||||
===Method Test===:
|
||||
|
||||
This test checks if the module classes are raising exception when calling basic methods or no.
|
||||
|
||||
""" #+ "Score: " + str(self.score) + "/10\n"
|
||||
else:
|
||||
summary =""" \n===Method Test===:
|
||||
|
||||
The module has to be installed before running this test.\n\n """
|
||||
header_list = ""
|
||||
self.error = True
|
||||
self.result = self.format_table(test='method', header=header_list, data_list=[summary,result,self.error])
|
||||
self.result = self.get_result(result_dict)
|
||||
return None
|
||||
|
||||
|
||||
def get_result(self, dict):
|
||||
header = ('{| border="1" cellspacing="0" cellpadding="5" align="left" \n! %-40s \n! %-16s \n! %-20s \n! %-16s ', [_('Object Name'), 'search()', 'fields_view_get()', 'read()'])
|
||||
detail = ""
|
||||
if not self.error:
|
||||
detail += self.format_table(header, dict)
|
||||
return detail
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
|
||||
import os
|
||||
from tools import config
|
||||
from tools.translate import _
|
||||
|
||||
from base_module_quality import base_module_quality
|
||||
|
||||
@@ -31,17 +32,15 @@ class quality_test(base_module_quality.abstract_quality_check):
|
||||
|
||||
def __init__(self):
|
||||
super(quality_test, self).__init__()
|
||||
# self.result = """
|
||||
#===Pylint Test===:
|
||||
#
|
||||
# This test checks if the module satisfy the current coding standard used by OpenERP.
|
||||
#
|
||||
#"""
|
||||
self.name = _("Pylint Test")
|
||||
self.note = _("""This test uses Pylint and checks if the module satisfies the coding standard of Python. See http://www.logilab.org/project/name/pylint for further info.\n """)
|
||||
self.bool_installed_only = False
|
||||
self.ponderation = 1.0
|
||||
self.result = ""
|
||||
self.result_details = ""
|
||||
return None
|
||||
|
||||
def run_test(self, cr, uid, module_path, module_state):
|
||||
def run_test(self, cr, uid, module_path):
|
||||
config_file_path = config['addons_path']+'/base_module_quality/pylint_test/pylint_test_config.txt'
|
||||
list_files = os.listdir(module_path)
|
||||
for i in list_files:
|
||||
@@ -52,12 +51,20 @@ class quality_test(base_module_quality.abstract_quality_check):
|
||||
|
||||
n = 0
|
||||
score = 0.0
|
||||
detail = ""
|
||||
detail = "\n===Pylint Test===\n"
|
||||
dict = {}
|
||||
self.result_details += '''<html>
|
||||
<head>
|
||||
<link rel="stylesheet" type="text/css" href="/tg_widgets/openerp/css/wiki.css" media="all">
|
||||
</head>
|
||||
<body>'''
|
||||
for file in list_files:
|
||||
if file.split('.')[-1] == 'py' and not file.endswith('__init__.py') and not file.endswith('__terp__.py'):
|
||||
file_path = os.path.join(module_path, file)
|
||||
res = os.popen('pylint --rcfile=' + config_file_path + ' ' + file_path).read()
|
||||
try:
|
||||
res = os.popen('pylint --rcfile=' + config_file_path + ' ' + file_path).read()
|
||||
except:
|
||||
self.result += _("Error. Is pylint correctly installed?")+"\n"
|
||||
break
|
||||
n += 1
|
||||
leftchar = -1
|
||||
while res[leftchar:leftchar+1] != ' ' and leftchar-1 <= 0:
|
||||
@@ -65,33 +72,26 @@ class quality_test(base_module_quality.abstract_quality_check):
|
||||
rightchar = -10
|
||||
while res[rightchar:rightchar+1] != '/' and rightchar+1 <= 0:
|
||||
rightchar += 1
|
||||
|
||||
try:
|
||||
score += float(res[leftchar+1:rightchar])
|
||||
# self.result += file + ": " + res[leftchar+1:rightchar] + "/10\n"
|
||||
detail += file + ": " + res[leftchar+1:rightchar] + "/10\n"
|
||||
#self.result += file + ": " + res[leftchar+1:rightchar] + "/10\n"
|
||||
dict[file] = [file, res[leftchar+1:rightchar]]
|
||||
except:
|
||||
score += 0
|
||||
# self.result += file + ": Unable to parse the result. Check the details.\n"
|
||||
detail += file + ": Unable to parse the result. Check the details.\n"
|
||||
self.result_details += res
|
||||
self.score = n and score / n or score
|
||||
if not self.bool_installed_only or module_state=="installed":
|
||||
summary ="""
|
||||
===Pylint Test===:
|
||||
|
||||
This test checks if the module satisfies the current coding standard used by OpenERP.
|
||||
|
||||
""" #+ "Score: " + str(self.score) + "/10\n"
|
||||
else:
|
||||
summary =""" \n===Pylint Test===:
|
||||
|
||||
The module has to be installed before running this test.\n\n """
|
||||
header_list = ""
|
||||
self.error = True
|
||||
self.result = self.format_table(test='pylint', data_list=[summary,detail,self.error])
|
||||
#self.result += file + ": "+_("Unable to parse the result. Check the details.")+"\n"
|
||||
dict[file] = [file, _("Unable to parse the result. Check the details.")]
|
||||
self.result_details += res.replace('''<div''', '''<div class="wikiwidget readonlyfield"''')
|
||||
self.result_details += '</body></html>'
|
||||
average_score = n and score / n or score
|
||||
self.score = (max(average_score,0)) / 10
|
||||
self.result = self.get_result(dict)
|
||||
return None
|
||||
|
||||
def get_result(self, dict):
|
||||
header = ('{| border="1" cellspacing="0" cellpadding="5" align="left" \n! %-40s \n! %-10s \n', [_('File Name'), _('Result (/10)')])
|
||||
if not self.error:
|
||||
return self.format_table(header, data_list=dict)
|
||||
return ""
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
@@ -62,7 +62,7 @@ disable-msg=C0103,F0401,E0611,R0903,W0232,W0102,E1002,R0913,R0904
|
||||
|
||||
# set the output format. Available formats are text, parseable, colorized and
|
||||
# html
|
||||
output-format=text
|
||||
output-format=html
|
||||
|
||||
# Include message's id in output
|
||||
include-ids=yes
|
||||
|
||||
@@ -24,6 +24,7 @@ import netsvc
|
||||
from osv import fields, osv
|
||||
import os
|
||||
from tools import config
|
||||
from tools.translate import _
|
||||
import pooler
|
||||
import time
|
||||
|
||||
@@ -35,83 +36,84 @@ class quality_test(base_module_quality.abstract_quality_check):
|
||||
|
||||
def __init__(self):
|
||||
super(quality_test, self).__init__()
|
||||
# self.result = """
|
||||
#===Speed Test===:
|
||||
#
|
||||
#This test checks the speed of the module.
|
||||
#
|
||||
#"""
|
||||
self.bool_installed_only = True
|
||||
self.ponderation = 1.0
|
||||
self.name = _("Speed Test")
|
||||
self.note = _("""
|
||||
This test checks the speed of the module. Note that at least 5 demo data is needed in order to run it.
|
||||
|
||||
""")
|
||||
return None
|
||||
def run_test(self, cr, uid, module_path, module_state):
|
||||
|
||||
def run_test(self, cr, uid, module_path):
|
||||
pool = pooler.get_pool(cr.dbname)
|
||||
module_name = module_path.split('/')[-1]
|
||||
# self.result+=('{| border="1" cellspacing="0" cellpadding="5" align="left" \n! %-40s \n! %-10s \n! %-10s \n! %-10s \n! %-10s \n! %-20s') % ('Object Name'.ljust(40), 'Size-Number of Records (S)'.ljust(10), '1'.ljust(10), 'S/2'.ljust(10), 'S'.ljust(10), 'Complexity using query'.ljust(20))
|
||||
header_list = ['Object Name', 'Size-Number of Records (S)', '1', 'S/2', 'S', 'Complexity using query']
|
||||
obj_list = self.get_objects(cr, uid, module_name)
|
||||
obj_counter = 0
|
||||
score = 0
|
||||
obj_ids = self.get_ids(cr, uid, obj_list)
|
||||
detail = ""
|
||||
list1 = []
|
||||
for obj in obj_ids:
|
||||
result_dict = {}
|
||||
result_dict2 = {}
|
||||
self.result_details += _("O(1) means that the number of SQL requests to read the object does not depand on the number of objects we are reading. This feature is hardly wished.\n")
|
||||
for obj, ids in obj_ids.items():
|
||||
obj_counter += 1
|
||||
ids = obj_ids[obj]
|
||||
ids = ids[:100]
|
||||
size = len(ids)
|
||||
list2 = []
|
||||
if size:
|
||||
c1 = cr.count
|
||||
list = []
|
||||
|
||||
#we perform the operation twice, and count the number of queries in the second run. This allows to avoid the cache effect. (like translated terms that asks for more queries)
|
||||
pool.get(obj).read(cr, uid, [ids[0]])
|
||||
c = cr.count
|
||||
pool.get(obj).read(cr, uid, [ids[0]])
|
||||
code_base_complexity = cr.count - c1
|
||||
code_base_complexity = cr.count - c
|
||||
|
||||
pool.get(obj).read(cr, uid, ids[:size/2])
|
||||
c = cr.count
|
||||
pool.get(obj).read(cr, uid, ids[:size/2])
|
||||
code_half_complexity = cr.count - c1
|
||||
code_half_complexity = cr.count - c
|
||||
|
||||
pool.get(obj).read(cr, uid, ids)
|
||||
c = cr.count
|
||||
pool.get(obj).read(cr, uid, ids)
|
||||
code_size_complexity = cr.count - c1
|
||||
code_size_complexity = cr.count - c
|
||||
|
||||
if size < 5:
|
||||
self.score += -2
|
||||
# self.result += ('\n|-\n| %s \n| %s \n| %s \n| %s \n| %s \n| %s ') % (obj, size, code_base_complexity, code_half_complexity, code_size_complexity, "Warning! Not enough demo data")
|
||||
list = [obj, size, code_base_complexity, code_half_complexity, code_size_complexity, "Warning! Not enough demo data"]
|
||||
list1.append(list)
|
||||
list = [obj, size, code_base_complexity, code_half_complexity, code_size_complexity, _("Warning! Not enough demo data")]
|
||||
list2 = [obj, _("No enough data")]
|
||||
else:
|
||||
if code_size_complexity <= (code_base_complexity + size):
|
||||
complexity = "O(1)"
|
||||
score = 10
|
||||
complexity = _("O(1)")
|
||||
score += 1
|
||||
list2 = [obj, _("Efficient")]
|
||||
else:
|
||||
complexity = "O(n) or worst"
|
||||
score = 0
|
||||
# self.result += ('\n|-\n| %s \n| %s \n| %s \n| %s \n| %s \n| %s ') % (obj, size, code_base_complexity, code_half_complexity, code_size_complexity, complexity)
|
||||
complexity = _("O(n) or worst")
|
||||
list2 = [obj, _("Not Efficient")]
|
||||
|
||||
list = [obj, size, code_base_complexity, code_half_complexity, code_size_complexity, complexity]
|
||||
list1.append(list)
|
||||
|
||||
else:
|
||||
score += -5
|
||||
# self.result += ('\n|-\n| %s \n| %s \n| %s \n| %s \n| %s \n| %s ') % (obj, size, "", "", "", "Warning! Object has no demo data")
|
||||
list = [obj, size, "", "", "", "Warning! Object has no demo data"]
|
||||
list1.append(list)
|
||||
# self.result += '\n|}\n'
|
||||
self.score = obj_counter and score/obj_counter or 0.0
|
||||
if not self.bool_installed_only or module_state=="installed":
|
||||
summary = """
|
||||
===Speed Test===:
|
||||
|
||||
This test checks the speed of the module.
|
||||
|
||||
"""#+ "Score: " + str(self.score) + "/10\n"
|
||||
else:
|
||||
summary =""" \n===Speed Test===:
|
||||
|
||||
The module has to be installed before running this test.\n\n """
|
||||
header_list = ""
|
||||
self.error = True
|
||||
self.result = self.format_table(test='speed', header=header_list, data_list=[summary,list1,self.error])
|
||||
list = [obj, size, "", "", "", _("Warning! Object has no demo data")]
|
||||
list2 = [obj, _("No data")]
|
||||
result_dict[obj] = list
|
||||
result_dict2[obj] = list2
|
||||
self.score = obj_counter and score / obj_counter or 0.0
|
||||
self.result_details += self.get_result_details(result_dict)
|
||||
self.result += self.get_result(result_dict2)
|
||||
return None
|
||||
|
||||
def get_result(self, dict):
|
||||
header = ('{| border="1" cellspacing="0" cellpadding="5" align="left" \n! %-40s \n! %-10s', [_('Object Name'), _('Result')])
|
||||
if not self.error:
|
||||
return self.format_table(header, data_list=dict)
|
||||
return ""
|
||||
|
||||
def get_result_details(self, dict):
|
||||
header = ('{| border="1" cellspacing="0" cellpadding="5" align="left" \n! %-40s \n! %-10s \n! %-10s \n! %-10s \n! %-10s \n! %-20s', [_('Object Name'), _('N (Number of Records)'), _('1'), _('N/2'), _('N'), _('Reading Complexity')])
|
||||
if not self.error:
|
||||
return self.format_table(header, data_list=dict)
|
||||
return ""
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
@@ -30,16 +30,23 @@ import re
|
||||
class quality_test(base_module_quality.abstract_quality_check):
|
||||
|
||||
def __init__(self):
|
||||
'''
|
||||
This test checks the quality of __terp__.py file in the selected module.
|
||||
'''
|
||||
# '''
|
||||
# This test checks the quality of __terp__.py file in the selected module.
|
||||
# '''
|
||||
super(quality_test, self).__init__()
|
||||
self.bool_installed_only = True
|
||||
self.name = _("Terp Test")
|
||||
self.note = _("This test checks if the module satisfies the current coding standard used by OpenERP.")
|
||||
self.bool_installed_only = False
|
||||
self.no_terp = False
|
||||
self.ponderation = 2
|
||||
|
||||
return None
|
||||
|
||||
def run_test(self, cr, uid, module_path, module_state):
|
||||
no_terp = False
|
||||
def run_test_terp(self, cr, uid, module_path):
|
||||
list_files = os.listdir(module_path)
|
||||
|
||||
current_module = module_path.split('/')[-1]
|
||||
|
||||
for i in list_files:
|
||||
path = os.path.join(module_path, i)
|
||||
if os.path.isdir(path):
|
||||
@@ -50,59 +57,84 @@ class quality_test(base_module_quality.abstract_quality_check):
|
||||
score = 0.0
|
||||
feel_good_factor = 0
|
||||
feel_bad_factor = 0
|
||||
detail = "\n===TERP Test===\n"
|
||||
summary = "\n===TERP Test===:\n"
|
||||
|
||||
if '__terp__.py' not in list_files:
|
||||
no_terp = True
|
||||
|
||||
if no_terp:
|
||||
summary += """
|
||||
The module does not contain the __terp__.py file.\n\n """
|
||||
header_list = ""
|
||||
self.error = True
|
||||
self.result = self.format_table(test='terp', data_list=[summary, detail, self.error])
|
||||
self.no_terp = True
|
||||
self.result += _("The module does not contain the __terp__.py file")
|
||||
return None
|
||||
|
||||
terp_file = os.path.join(module_path,'__terp__.py')
|
||||
res = eval(tools.file_open(terp_file).read())
|
||||
|
||||
terp_keys = ['category', 'name', 'description', 'author', 'website', 'update_xml', 'init_xml', 'depends', 'version', 'active', 'installable', 'demo_xml']
|
||||
terp_keys = ['category', 'name', 'description', 'author', 'website', 'update_xml', 'init_xml', 'depends', 'version', 'active', 'installable', 'demo_xml', 'certificate']
|
||||
|
||||
for key in terp_keys:
|
||||
if key in res:
|
||||
feel_good_factor += 1
|
||||
feel_good_factor += 1 # each tag should appear
|
||||
if isinstance(res[key],(str,unicode)):
|
||||
if not res[key]:
|
||||
feel_bad_factor += 1
|
||||
else:
|
||||
if key == 'description' and res[key] and len(str(res[key]))>=25:
|
||||
|
||||
if key == 'description' and res[key] and len(str(res[key])) >= 150: # no. of chars should be >=150
|
||||
feel_good_factor += 1
|
||||
if res['description'].count('\n') >= 4:# description contains minimum 5 lines
|
||||
feel_good_factor += 1
|
||||
if key == 'website':
|
||||
ptrn = re.compile('https?://[\w\.]*') # reg ex matching on temporary basis.
|
||||
ptrn = re.compile('https?://[\w\.]*') # reg ex matching on temporary basis.Website is correctly formatted
|
||||
result = ptrn.search(str(res[key]))
|
||||
if result:
|
||||
feel_good_factor += 1
|
||||
else:
|
||||
feel_bad_factor += 1
|
||||
|
||||
if isinstance(res[key],bool):
|
||||
if key == 'active':
|
||||
if current_module != 'base':
|
||||
if res[key]:
|
||||
feel_bad_factor += 1
|
||||
else:
|
||||
if not res[key]:
|
||||
feel_bad_factor += 1
|
||||
|
||||
if key == 'installable' and not res[key]: # installable tag is provided and True
|
||||
feel_bad_factor +=1
|
||||
else:
|
||||
feel_bad_factor += 1
|
||||
|
||||
self.score = round((feel_good_factor * 10) / float(feel_good_factor + feel_bad_factor),2)
|
||||
# if not self.bool_installed_only or module_state=="installed":
|
||||
summary += """
|
||||
This test checks if the module satisfies the current coding standard for __terp__.py file used by OpenERP.
|
||||
score = round((feel_good_factor) / float(feel_good_factor + feel_bad_factor),2)
|
||||
|
||||
"""
|
||||
# else:
|
||||
# summary += """
|
||||
#The module has to be installed before running this test.\n\n """
|
||||
# header_list = ""
|
||||
# error = True
|
||||
# self.result += "__terp__.py : "+ str(self.score) + "/10\n"
|
||||
return [_('__terp__.py file'), score]
|
||||
|
||||
detail += "__terp__.py : "+ str(self.score) + "/10\n"
|
||||
self.result = self.format_table(test='terp', data_list=[summary, detail, self.error])
|
||||
|
||||
def run_test(self, cr, uid, module_path):
|
||||
terp_score = self.run_test_terp(cr, uid, module_path)
|
||||
self.score = terp_score[1]
|
||||
self.result = self.get_result({'__terp__.py': terp_score})
|
||||
return None
|
||||
|
||||
def get_result(self, dict):
|
||||
header = ('{| border="1" cellspacing="0" cellpadding="5" align="left" \n! %-40s \n! %-10s \n', [_('Object Name'), _('Result (/1)'),])
|
||||
if not self.error:
|
||||
return self.format_table(header, data_list=dict)
|
||||
return ""
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
#~ def get_result(self, cr, uid, module_path, module_state):
|
||||
#~ # self.run_test(cr, uid, module_path)
|
||||
#~ # summary = "\n===TERP Test===:\n"
|
||||
#~ if self.no_terp:
|
||||
#~ summary += """
|
||||
#~ The module does not contain the __terp__.py file.\n\n """
|
||||
#~ # else:
|
||||
#~ # summary += """
|
||||
#~ # This test checks if the module satisfies the current coding standard for __terp__.py file used by OpenERP.
|
||||
#~ # """ + "Score: " + str(self.score) + "/10\n"
|
||||
#~ return summary
|
||||
|
||||
#~ def get_result_details(self):
|
||||
#~ detail = "\n===TERP Test===\n" + self.result
|
||||
#~ return detail
|
||||
|
||||
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
@@ -27,108 +27,108 @@ import tools
|
||||
import os
|
||||
|
||||
from base_module_quality import base_module_quality
|
||||
#TODO: (utiliser les nouveaux wizards pour heriter la vue et rajouter un onglet par test?)
|
||||
#TODO: implement the speed test
|
||||
|
||||
#TODO: add cheks: do the class quality_check inherits the class abstract_quality_check?
|
||||
#TODO: improve translability
|
||||
#TODO: clean
|
||||
|
||||
|
||||
#To keep or not? to be discussed...
|
||||
|
||||
#~ view_form = """<?xml version="1.0"?>
|
||||
#~ <form string="Check quality">
|
||||
#~ <notebook>
|
||||
#~ <page string="Summary">
|
||||
#~ <field name="general_info" widget="text_wiki" nolabel="1" colspan="4" height="350" width="800"/>
|
||||
#~ </page>
|
||||
#~ </notebook>
|
||||
#~ </form>"""
|
||||
|
||||
|
||||
#~ view_field = {
|
||||
#~ "general_info": {'type': 'text', 'string': 'General Info', 'readonly':True},
|
||||
#~ }
|
||||
|
||||
|
||||
class wiz_quality_check(osv.osv_memory):
|
||||
|
||||
# general_info = ""
|
||||
class wiz_quality_check(osv.osv):
|
||||
_name = 'wizard.quality.check'
|
||||
|
||||
def _check(self, cr, uid, data, context={}):
|
||||
string_ret = ""
|
||||
string_detail = ""
|
||||
from tools import config
|
||||
data['ids'] = data.get('module_id', False)
|
||||
pool = pooler.get_pool(cr.dbname)
|
||||
module_data = pool.get('ir.module.module').browse(cr, uid, [data['ids']])
|
||||
list_folders = os.listdir(config['addons_path']+'/base_module_quality/')
|
||||
module_name = module_data[0].name
|
||||
abstract_obj = base_module_quality.abstract_quality_check()
|
||||
score_sum = 0.0
|
||||
ponderation_sum = 0.0
|
||||
final_score = ""
|
||||
for test in abstract_obj.tests:
|
||||
ad = tools.config['addons_path']
|
||||
if module_data[0].name == 'base':
|
||||
ad = tools.config['root_path']+'/addons'
|
||||
module_path = os.path.join(ad, module_data[0].name)
|
||||
val = test.quality_test()
|
||||
val.run_test(cr, uid, str(module_path), str(module_data[0].state))
|
||||
string_ret += val.result['summary'] #summary tab
|
||||
if not val.error:
|
||||
string_ret += "Score: " + str(val.score) + "/10\n" #val.score = val.score * val.ponderation ???
|
||||
string_detail += val.result['detail'] # detail tab
|
||||
score_sum += (val.add_quatation(val.score, 10) * val.ponderation)
|
||||
ponderation_sum += val.ponderation
|
||||
final_score = str(score_sum / ponderation_sum * 100) + "%"
|
||||
string_ret += "\n\nPonderation Result for module:" + final_score
|
||||
self.string_detail = string_detail
|
||||
return ""
|
||||
|
||||
def _check_detail(self, cr, uid, data, context={}):
|
||||
return self.string_detail
|
||||
|
||||
|
||||
# def _general_info(self, cr, uid, data, context={}):
|
||||
# return self.general_info
|
||||
|
||||
#~ states = {
|
||||
|
||||
#~ 'init': {
|
||||
#~ 'actions': [_check],
|
||||
#~ 'result': {'type':'form', 'arch':view_form, 'fields':view_field, 'state':[('end','Ok')]},
|
||||
#~ },
|
||||
#~ }
|
||||
#To keep or not? to be discussed...
|
||||
|
||||
#~ 'init': {
|
||||
#~ 'actions': [],
|
||||
#~ 'result': {'type':'form', 'arch':form_check, 'fields':fields_check, 'state':[('end','Cancel'),('do','Do Test')]}
|
||||
#~ },
|
||||
_columns = {
|
||||
# 'general_info': fields.text('General Info', readonly="1",),
|
||||
# 'detail' : fields.text('Detail', readonly="0",),
|
||||
'verbose_detail' : fields.one2many('quality.check.detail', 'quality_check', 'Verbose Detail', readonly="0",)
|
||||
'name': fields.char('Rated Module', size=64, ),
|
||||
'final_score': fields.char('Final Score (%)', size=10,),
|
||||
'test_ids' : fields.one2many('quality.check.detail', 'quality_check_id', 'Tests',)
|
||||
}
|
||||
_defaults = {
|
||||
# 'general_info': _check,
|
||||
# 'detail': _check_detail
|
||||
'verbose_detail': _check,
|
||||
}
|
||||
|
||||
wiz_quality_check()
|
||||
|
||||
class quality_check_detail(osv.osv_memory):
|
||||
|
||||
class quality_check_detail(osv.osv):
|
||||
_name = 'quality.check.detail'
|
||||
_rec_name = 'quality_check'
|
||||
_columns = {
|
||||
'quality_check': fields.many2one('wizard.quality.check', 'Quality'),
|
||||
'general_info': fields.text('General Info', readonly="1",),
|
||||
'detail' : fields.text('Detail', readonly="1",),
|
||||
'quality_check_id': fields.many2one('wizard.quality.check', 'Quality'),
|
||||
'name': fields.char('Name',size=128,),
|
||||
'score': fields.float('Score (%)',),
|
||||
'ponderation': fields.float('Ponderation',help='Some tests are more critical than others, so they have a bigger weight in the computation of final rating'),
|
||||
'note': fields.text('Note',),
|
||||
'summary': fields.text('Summary',),
|
||||
'detail' : fields.text('Details',),
|
||||
'state': fields.selection([('done','Done'),('skipped','Skipped'),], 'State', size=6, help='The test will be completed only if the module is installed or if the test may be processed on uninstalled module.'),
|
||||
}
|
||||
quality_check_detail()
|
||||
|
||||
|
||||
class create_quality_check(wizard.interface):
|
||||
|
||||
def _create_quality_check(self, cr, uid, data, context={}):
|
||||
pool = pooler.get_pool(cr.dbname)
|
||||
print data, context
|
||||
objs = []
|
||||
for id in data['ids']:
|
||||
module_data = pool.get('ir.module.module').browse(cr, uid, id)
|
||||
#list_folders = os.listdir(config['addons_path']+'/base_module_quality/')
|
||||
abstract_obj = base_module_quality.abstract_quality_check()
|
||||
score_sum = 0.0
|
||||
ponderation_sum = 0.0
|
||||
create_ids = []
|
||||
for test in abstract_obj.tests:
|
||||
ad = tools.config['addons_path']
|
||||
if module_data.name == 'base':
|
||||
ad = tools.config['root_path']+'/addons'
|
||||
module_path = os.path.join(ad, module_data.name)
|
||||
val = test.quality_test()
|
||||
|
||||
if not val.bool_installed_only or module_data.state=="installed":
|
||||
val.run_test(cr, uid, str(module_path))
|
||||
data = {
|
||||
'name': val.name,
|
||||
'score': val.score * 100,
|
||||
'ponderation': val.ponderation,
|
||||
'summary': val.result,
|
||||
'detail': val.result_details,
|
||||
'state': 'done',
|
||||
'note': val.note,
|
||||
}
|
||||
create_ids.append((0,0,data))
|
||||
score_sum += val.score * val.ponderation
|
||||
ponderation_sum += val.ponderation
|
||||
else:
|
||||
data = {
|
||||
'name': val.name,
|
||||
'note': val.note,
|
||||
'score': 0,
|
||||
'state': 'skipped',
|
||||
'summary': _("The module has to be installed before running this test.")
|
||||
}
|
||||
create_ids.append((0,0,data))
|
||||
|
||||
final_score = str(score_sum / ponderation_sum * 100) + "%"
|
||||
data = {
|
||||
'name': module_data.name,
|
||||
'final_score': final_score,
|
||||
'test_ids' : create_ids,
|
||||
}
|
||||
obj = pool.get('wizard.quality.check').create(cr, uid, data, context)
|
||||
objs.append(obj)
|
||||
return objs
|
||||
|
||||
def _open_quality_check(self, cr, uid, data, context):
|
||||
obj_ids = self._create_quality_check(cr, uid, data, context)
|
||||
return {
|
||||
'domain': "[('id','in', ["+','.join(map(str,obj_ids))+"])]",
|
||||
'name': _('Quality Check'),
|
||||
'view_type': 'form',
|
||||
'view_mode': 'tree,form',
|
||||
'res_model': 'wizard.quality.check',
|
||||
'type': 'ir.actions.act_window'
|
||||
}
|
||||
|
||||
states = {
|
||||
'init' : {
|
||||
'actions' : [],
|
||||
'result': {'type':'action', 'action':_open_quality_check, 'state':'end'}
|
||||
}
|
||||
}
|
||||
|
||||
create_quality_check("create_quality_check_wiz")
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
@@ -19,13 +19,13 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
{
|
||||
"name" : "Module Recorder",
|
||||
"version" : "1.0",
|
||||
"author" : "Tiny",
|
||||
"website" : "http://www.openerp.com",
|
||||
"category" : "Generic Modules/Base",
|
||||
"description": """
|
||||
'name': 'Module Recorder',
|
||||
'version': '1.0',
|
||||
'category': 'Generic Modules/Base',
|
||||
'description': """
|
||||
This module allows you to create a new module without any development.
|
||||
It records all operations on objects during the recording session and
|
||||
produce a .ZIP module. So you can create your own module directly from
|
||||
@@ -44,14 +44,13 @@ How to use it:
|
||||
3. Stop the recording session
|
||||
4. Export to a reusable module
|
||||
""",
|
||||
"depends" : ["base"],
|
||||
"init_xml" : [ ],
|
||||
"demo_xml" : [ ],
|
||||
"update_xml" : [
|
||||
"security/ir.model.access.csv",
|
||||
"base_module_record_wizard.xml"
|
||||
],
|
||||
"installable": True
|
||||
'author': 'Tiny',
|
||||
'website': 'http://www.openerp.com',
|
||||
'depends': ['base'],
|
||||
'init_xml': [],
|
||||
'update_xml': ['security/ir.model.access.csv', 'base_module_record_wizard.xml'],
|
||||
'demo_xml': [],
|
||||
'installable': True,
|
||||
'certificate': '83134865813',
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
@@ -71,7 +71,7 @@ class base_module_record(osv.osv):
|
||||
self.recording_data = []
|
||||
self.depends = {}
|
||||
if not installed:
|
||||
obj = netsvc._service['object']
|
||||
obj = netsvc.SERVICES['object']
|
||||
obj.execute = fnct_call(obj.execute)
|
||||
obj.exportMethod(obj.execute)
|
||||
obj.exec_workflow = fnct_call_workflow(obj.exec_workflow)
|
||||
|
||||
@@ -19,29 +19,31 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
{
|
||||
"name" : "Report Creator",
|
||||
"version" : "1.0",
|
||||
"author" : "Tiny & Axelor",
|
||||
"website" : "",
|
||||
"category" : "Generic Modules/Base",
|
||||
"description": """This modules allows you to create any statistic
|
||||
'name': 'Report Creator',
|
||||
'version': '1.0',
|
||||
'category': 'Generic Modules/Base',
|
||||
'description': """This modules allows you to create any statistic
|
||||
report on several object. It's a SQL query builder and browser
|
||||
for and users.
|
||||
|
||||
After installing the module, it adds a menu to define custom report in
|
||||
the "Dashboard" menu.
|
||||
""",
|
||||
"depends" : ["base","board"],
|
||||
"init_xml" : [],
|
||||
"demo_xml" : [],
|
||||
"update_xml" : [
|
||||
"security/ir.model.access.csv",
|
||||
"base_report_creator_wizard.xml",
|
||||
"base_report_creator_view.xml"
|
||||
'author': 'Tiny & Axelor',
|
||||
'website': '',
|
||||
'depends': ['base', 'board'],
|
||||
'init_xml': [],
|
||||
'update_xml': [
|
||||
'security/ir.model.access.csv',
|
||||
'base_report_creator_wizard.xml',
|
||||
'base_report_creator_view.xml'
|
||||
],
|
||||
"active": False,
|
||||
"installable": True
|
||||
'demo_xml': [],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
'certificate': '31285794149',
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
@@ -19,22 +19,24 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
{
|
||||
"name" : "Report designer interface module",
|
||||
"description" : """
|
||||
'name': 'Report designer interface module',
|
||||
'version': '0.1',
|
||||
'category': 'Generic Modules/Base',
|
||||
'description': """
|
||||
This module adds wizards to import/export documents to be edited in
|
||||
OpenOffice.
|
||||
""",
|
||||
"version" : "0.1",
|
||||
"depends" : ["base"],
|
||||
"author" : "Tiny",
|
||||
"website" : "http://www.openerp.com",
|
||||
"category" : "Generic Modules/Base",
|
||||
"init_xml" : [ ],
|
||||
"demo_xml" : ["base_report_data.xml"],
|
||||
"update_xml" : [ "base_report_designer_wizard.xml" ],
|
||||
"active": False,
|
||||
"installable": True
|
||||
'author': 'Tiny',
|
||||
'website': 'http://www.openerp.com',
|
||||
'depends': ['base'],
|
||||
'init_xml': [],
|
||||
'update_xml': ['base_report_designer_wizard.xml'],
|
||||
'demo_xml': ['base_report_data.xml'],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
'certificate': '56379010493',
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
@@ -160,7 +160,7 @@ class base_report_designer_modify(wizard.interface):
|
||||
try:
|
||||
return {'file_sxw': base64.encodestring(report.report_sxw_content)}
|
||||
except:
|
||||
raise Exception, _('Report does not contain the sxw content!')
|
||||
raise wizard.except_wizard(_('Error'), _('Report does not contain the sxw content!'))
|
||||
|
||||
states = {
|
||||
'init': {
|
||||
|
||||
@@ -19,13 +19,13 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
{
|
||||
"name" : "Base Setup",
|
||||
"version" : "1.0",
|
||||
"author" : "Tiny",
|
||||
"website" : "http://www.openerp.com",
|
||||
"category" : "Generic Modules/Base",
|
||||
"description": """
|
||||
'name': 'Base Setup',
|
||||
'version': '1.0',
|
||||
'category': 'Generic Modules/Base',
|
||||
'description': """
|
||||
This module implements a configuration system that helps user
|
||||
to configure the system at the installation of a new database.
|
||||
|
||||
@@ -38,20 +38,14 @@
|
||||
It also asks screens to help easily configure your company, the header and
|
||||
footer, the account chart to install and the language.
|
||||
""",
|
||||
"depends" : ["base"],
|
||||
"init_xml" : [
|
||||
"base_setup_data.xml",
|
||||
],
|
||||
"demo_xml" : [
|
||||
"base_setup_demo.xml",
|
||||
],
|
||||
"update_xml" : [
|
||||
"security/ir.model.access.csv",
|
||||
"base_setup_wizard.xml",
|
||||
],
|
||||
"active": True,
|
||||
"installable": True
|
||||
'author': 'Tiny',
|
||||
'website': 'http://www.openerp.com',
|
||||
'depends': ['base'],
|
||||
'init_xml': ['base_setup_data.xml'],
|
||||
'update_xml': ['security/ir.model.access.csv', 'base_setup_wizard.xml'],
|
||||
'demo_xml': ['base_setup_demo.xml'],
|
||||
'installable': True,
|
||||
'active': True,
|
||||
'certificate': '86711085869',
|
||||
}
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
+12
-11
@@ -19,17 +19,18 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
{
|
||||
"name" : "VAT",
|
||||
"description": "Enable the VAT Number for the partner. Check the validity of that VAT Number.",
|
||||
"version" : "1.0",
|
||||
"author" : "Tiny",
|
||||
"category" : "Generic Modules/Base",
|
||||
"depends" : ["base","account"],
|
||||
"update_xml" : ["base_vat_data.xml"],
|
||||
"active": False,
|
||||
"installable": True
|
||||
'name': 'VAT',
|
||||
'version': '1.0',
|
||||
'category': 'Generic Modules/Base',
|
||||
'description': """Enable the VAT Number for the partner. Check the validity of that VAT Number.""",
|
||||
'author': 'Tiny',
|
||||
'depends': ['base', 'account'],
|
||||
'update_xml': ['base_vat_data.xml'],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
'certificate': '84849360989',
|
||||
}
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
+13
-14
@@ -19,20 +19,19 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
{
|
||||
"name":"Dashboard main module",
|
||||
"version":"1.0",
|
||||
"author":"Tiny",
|
||||
"category":"Board/Base",
|
||||
"depends":["base"],
|
||||
"demo_xml":[],
|
||||
"update_xml":[
|
||||
"security/ir.model.access.csv",
|
||||
"board_view.xml"],
|
||||
"description": "Base module for all dashboards.",
|
||||
"active":False,
|
||||
"installable":True,
|
||||
'name': 'Dashboard main module',
|
||||
'version': '1.0',
|
||||
'category': 'Board/Base',
|
||||
'description': """Base module for all dashboards.""",
|
||||
'author': 'Tiny',
|
||||
'depends': ['base'],
|
||||
'update_xml': ['security/ir.model.access.csv', 'board_view.xml'],
|
||||
'demo_xml': [],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
'certificate': '76912305725',
|
||||
}
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
@@ -19,23 +19,13 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
{
|
||||
"name":"Board for accountant",
|
||||
"version":"1.0",
|
||||
"author":"Tiny",
|
||||
"category":"Board/Accounting",
|
||||
"depends":[
|
||||
"account",
|
||||
"hr_timesheet_invoice",
|
||||
"board",
|
||||
"report_account",
|
||||
"report_analytic",
|
||||
"report_analytic_line",
|
||||
"account_report",
|
||||
],
|
||||
"demo_xml":["board_account_demo.xml"],
|
||||
"update_xml":["board_account_view.xml"],
|
||||
"description": """
|
||||
'name': 'Board for accountant',
|
||||
'version': '1.0',
|
||||
'category': 'Board/Accounting',
|
||||
'description': """
|
||||
This module creates a dashboards for accountants that includes:
|
||||
* List of analytic accounts to close
|
||||
* List of uninvoiced quotations
|
||||
@@ -44,9 +34,20 @@
|
||||
* Graph of aged receivables
|
||||
* Graph of aged incomes
|
||||
""",
|
||||
"active":False,
|
||||
"installable":True,
|
||||
'author': 'Tiny',
|
||||
'depends': [
|
||||
'account',
|
||||
'hr_timesheet_invoice',
|
||||
'board',
|
||||
'report_account',
|
||||
'report_analytic',
|
||||
'report_analytic_line',
|
||||
'account_report'
|
||||
],
|
||||
'update_xml': ['board_account_view.xml'],
|
||||
'demo_xml': ['board_account_demo.xml'],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
'certificate': '76016921229',
|
||||
}
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
@@ -19,19 +19,21 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
{
|
||||
"name":"Dashboard for Associations",
|
||||
"version":"1.0",
|
||||
"author":"Tiny",
|
||||
"category":"Board/Associations",
|
||||
"depends":["event","membership","board","project"],
|
||||
"demo_xml":["board_association_demo.xml"],
|
||||
"update_xml":["board_association_view.xml"],
|
||||
"description": """
|
||||
'name': 'Dashboard for Associations',
|
||||
'version': '1.0',
|
||||
'category': 'Board/Associations',
|
||||
'description': """
|
||||
This module implements a dashboard for associations.
|
||||
""",
|
||||
"active":False,
|
||||
"installable":True,
|
||||
'author': 'Tiny',
|
||||
'depends': ['event', 'membership', 'board', 'project'],
|
||||
'update_xml': ['board_association_view.xml'],
|
||||
'demo_xml': ['board_association_demo.xml'],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
'certificate': '79647781773',
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
@@ -19,29 +19,22 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
{
|
||||
"name":"Board for Auction",
|
||||
"version":"1.0",
|
||||
"author":"Tiny",
|
||||
"category":"Board/Auction",
|
||||
"depends":[
|
||||
"board",
|
||||
"auction",
|
||||
# "report_auction",
|
||||
],
|
||||
"demo_xml":["board_auction_demo.xml"],
|
||||
"update_xml":["board_auction_view.xml","board_auction_manager_view.xml"],
|
||||
"description": """
|
||||
'name': 'Board for Auction',
|
||||
'version': '1.0',
|
||||
'category': 'Board/Auction',
|
||||
'description': """
|
||||
This module creates a dashboards for auction that includes:
|
||||
|
||||
""",
|
||||
"active":False,
|
||||
"installable":True,
|
||||
'author': 'Tiny',
|
||||
'depends': ['board', 'auction'],
|
||||
'update_xml': ['board_auction_view.xml', 'board_auction_manager_view.xml'],
|
||||
'demo_xml': ['board_auction_demo.xml'],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
'certificate': '49187078189',
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
@@ -19,17 +19,13 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
{
|
||||
"name":"Dashboard for CRM Configuration",
|
||||
"version":"1.0",
|
||||
"author":"Tiny",
|
||||
"category":"Board/CRM",
|
||||
"depends":["board","crm_configuration"],
|
||||
"demo_xml":["board_crm_demo.xml"],
|
||||
"update_xml":["board_crm_statistical_view.xml",
|
||||
"board_crm_view.xml"
|
||||
],
|
||||
"description": """
|
||||
'name': 'Dashboard for CRM Configuration',
|
||||
'version': '1.0',
|
||||
'category': 'Board/CRM',
|
||||
'description': """
|
||||
This module implements a dashboard for CRM that includes:
|
||||
* My Leads (list)
|
||||
* Leads by Stage (graph)
|
||||
@@ -38,8 +34,12 @@ This module implements a dashboard for CRM that includes:
|
||||
* My Cases (list)
|
||||
* Jobs Tracking (graph)
|
||||
""",
|
||||
"active":False,
|
||||
"installable":True,
|
||||
'author': 'Tiny',
|
||||
'depends': ['board', 'crm_configuration'],
|
||||
'update_xml': ['board_crm_statistical_view.xml', 'board_crm_view.xml'],
|
||||
'demo_xml': ['board_crm_demo.xml'],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
'certificate': '71599098909',
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
@@ -19,17 +19,19 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
{
|
||||
"name":"Dashboard for Document Management",
|
||||
"version":"1.0",
|
||||
"author":"Tiny",
|
||||
"category":"Board/Document",
|
||||
"depends":["board","document", "report_document"],
|
||||
"demo_xml":["board_document_demo.xml"],
|
||||
"update_xml":["board_document_view.xml"],
|
||||
"description": """ This module implements a dashboard for Document """,
|
||||
"active":False,
|
||||
"installable":True,
|
||||
'name': 'Dashboard for Document Management',
|
||||
'version': '1.0',
|
||||
'category': 'Board/Document',
|
||||
'description': """ This module implements a dashboard for Document """,
|
||||
'author': 'Tiny',
|
||||
'depends': ['board', 'document', 'report_document'],
|
||||
'update_xml': ['board_document_view.xml'],
|
||||
'demo_xml': ['board_document_demo.xml'],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
'certificate': '44628458429',
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
@@ -19,31 +19,25 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
{
|
||||
"name":"Board for manufacturing",
|
||||
"version":"1.0",
|
||||
"author":"Tiny",
|
||||
"category":"Board/Manufacturing",
|
||||
"depends":[
|
||||
"board",
|
||||
"mrp",
|
||||
"stock",
|
||||
"report_mrp",
|
||||
|
||||
|
||||
],
|
||||
"demo_xml":["board_manufacturing_demo.xml"],
|
||||
"update_xml":["board_manufacturing_view.xml"],
|
||||
"description": """
|
||||
'name': 'Board for manufacturing',
|
||||
'version': '1.0',
|
||||
'category': 'Board/Manufacturing',
|
||||
'description': """
|
||||
This module creates a dashboards for Manufaturing that includes:
|
||||
* List of next production orders
|
||||
* List of deliveries (out packing)
|
||||
* Graph of workcenter load
|
||||
* List of procurement in exception
|
||||
""",
|
||||
"active":False,
|
||||
"installable":True,
|
||||
'author': 'Tiny',
|
||||
'depends': ['board', 'mrp', 'stock', 'report_mrp'],
|
||||
'update_xml': ['board_manufacturing_view.xml'],
|
||||
'demo_xml': ['board_manufacturing_demo.xml'],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
'certificate': '30407612797',
|
||||
}
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
@@ -19,23 +19,13 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
{
|
||||
"name":"Board for project users",
|
||||
"version":"1.0",
|
||||
"author":"Tiny",
|
||||
"category":"Board/Projects & Services",
|
||||
"depends":[
|
||||
"project",
|
||||
"report_timesheet",
|
||||
"board",
|
||||
"report_analytic_planning",
|
||||
"report_analytic_line",
|
||||
"report_task",
|
||||
"hr_timesheet_sheet"
|
||||
],
|
||||
"demo_xml":["board_project_demo.xml"],
|
||||
"update_xml":["board_project_view.xml", "board_project_manager_view.xml"],
|
||||
"description": """
|
||||
'name': 'Board for project users',
|
||||
'version': '1.0',
|
||||
'category': 'Board/Projects & Services',
|
||||
'description': """
|
||||
This module implements a dashboard for project member that includes:
|
||||
* List of my open tasks
|
||||
* List of my next deadlines
|
||||
@@ -43,9 +33,20 @@ This module implements a dashboard for project member that includes:
|
||||
* Graph of my timesheet
|
||||
* Graph of my work analysis
|
||||
""",
|
||||
"active":False,
|
||||
"installable":True,
|
||||
'author': 'Tiny',
|
||||
'depends': [
|
||||
'project',
|
||||
'report_timesheet',
|
||||
'board',
|
||||
'report_analytic_planning',
|
||||
'report_analytic_line',
|
||||
'report_task',
|
||||
'hr_timesheet_sheet'
|
||||
],
|
||||
'update_xml': ['board_project_view.xml', 'board_project_manager_view.xml'],
|
||||
'demo_xml': ['board_project_demo.xml'],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
'certificate': '39350482013',
|
||||
}
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
@@ -19,15 +19,13 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
{
|
||||
"name":"Dashboard for sales",
|
||||
"version":"1.0",
|
||||
"author":"Tiny",
|
||||
"category":"Board/Sales & Purchase",
|
||||
"depends":["board","sale", "report_crm", "report_sale"],
|
||||
"demo_xml":["board_sale_demo.xml"],
|
||||
"update_xml":["board_sale_view.xml"],
|
||||
"description": """
|
||||
'name': 'Dashboard for sales',
|
||||
'version': '1.0',
|
||||
'category': 'Board/Sales & Purchase',
|
||||
'description': """
|
||||
This module implements a dashboard for salesman that includes:
|
||||
* You open quotations
|
||||
* Top 10 sales of the month
|
||||
@@ -35,9 +33,12 @@ This module implements a dashboard for salesman that includes:
|
||||
* Graph of sales by product
|
||||
* Graph of cases of the month
|
||||
""",
|
||||
"active":False,
|
||||
"installable":True,
|
||||
'author': 'Tiny',
|
||||
'depends': ['board', 'sale', 'report_crm', 'report_sale'],
|
||||
'update_xml': ['board_sale_view.xml'],
|
||||
'demo_xml': ['board_sale_demo.xml'],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
'certificate': '46503501021',
|
||||
}
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
+20
-19
@@ -19,13 +19,13 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
{
|
||||
"name" : "Customer & Supplier Relationship Management",
|
||||
"version" : "1.0",
|
||||
"author" : "Tiny",
|
||||
"website" : "http://www.openerp.com",
|
||||
"category" : "Generic Modules/CRM & SRM",
|
||||
"description": """The generic Open ERP Customer Relationship Management
|
||||
'name': 'Customer & Supplier Relationship Management',
|
||||
'version': '1.0',
|
||||
'category': 'Generic Modules/CRM & SRM',
|
||||
'description': """The generic Open ERP Customer Relationship Management
|
||||
system enables a group of people to intelligently and efficiently manage
|
||||
leads, opportunities, tasks, issues, requests, bugs, campaign, claims, etc.
|
||||
It manages key tasks such as communication, identification, prioritization,
|
||||
@@ -43,19 +43,20 @@ place.
|
||||
|
||||
The CRM module has a email gateway for the synchronisation interface
|
||||
between mails and Open ERP.""",
|
||||
"depends" : ["base"],
|
||||
"init_xml" : ["crm_data.xml"],
|
||||
"demo_xml" : ["crm_demo.xml"],
|
||||
"update_xml" : [
|
||||
"crm_view.xml",
|
||||
"crm_report.xml",
|
||||
"crm_wizard.xml",
|
||||
"security/crm_security.xml",
|
||||
"security/ir.model.access.csv",
|
||||
'author': 'Tiny',
|
||||
'website': 'http://www.openerp.com',
|
||||
'depends': ['base'],
|
||||
'init_xml': ['crm_data.xml'],
|
||||
'update_xml': [
|
||||
'crm_view.xml',
|
||||
'crm_report.xml',
|
||||
'crm_wizard.xml',
|
||||
'security/crm_security.xml',
|
||||
'security/ir.model.access.csv'
|
||||
],
|
||||
"active": False,
|
||||
"installable": True
|
||||
'demo_xml': ['crm_demo.xml'],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
'certificate': '79056041421',
|
||||
}
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
@@ -19,13 +19,13 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
{
|
||||
"name" : "Customer Relationship Management",
|
||||
"version" : "1.0",
|
||||
"author" : "Tiny",
|
||||
"website" : "http://www.openerp.com",
|
||||
"category" : "Generic Modules/CRM & SRM",
|
||||
"description": """
|
||||
'name': 'Customer Relationship Management',
|
||||
'version': '1.0',
|
||||
'category': 'Generic Modules/CRM & SRM',
|
||||
'description': """
|
||||
The Open ERP case and request tracker enables a group of
|
||||
people to intelligently and efficiently manage tasks, issues,
|
||||
and requests. It manages key tasks such as communication,
|
||||
@@ -35,53 +35,26 @@ This module provide screens like: jobs hiring process, leads, business
|
||||
opportunities, fund raising trackings, support & helpdesk, calendar of
|
||||
meetings, eso.
|
||||
""",
|
||||
"depends" : ["crm","report_crm", "process"],
|
||||
"init_xml" : [
|
||||
"crm_configuration_wizard.xml",
|
||||
"crm_config_view.xml",
|
||||
"crm_bugs_view.xml",
|
||||
"crm_jobs_view.xml",
|
||||
"crm_lead_view.xml",
|
||||
"crm_meeting_view.xml",
|
||||
"crm_opportunity_view.xml",
|
||||
"crm_fund_view.xml",
|
||||
"crm_claims_view.xml",
|
||||
"crm_phonecall_view.xml",
|
||||
"crm_report_view.xml"
|
||||
'author': 'Tiny',
|
||||
'website': 'http://www.openerp.com',
|
||||
'depends': ['crm', 'report_crm', 'process'],
|
||||
'init_xml': [
|
||||
'crm_configuration_wizard.xml',
|
||||
'crm_config_view.xml',
|
||||
'crm_bugs_view.xml',
|
||||
'crm_jobs_view.xml',
|
||||
'crm_lead_view.xml',
|
||||
'crm_meeting_view.xml',
|
||||
'crm_opportunity_view.xml',
|
||||
'crm_fund_view.xml',
|
||||
'crm_claims_view.xml',
|
||||
'crm_phonecall_view.xml',
|
||||
'crm_report_view.xml'
|
||||
],
|
||||
"demo_xml" : [
|
||||
# "crm_bugs_demo.xml",
|
||||
# "crm_fund_demo.xml",
|
||||
# "crm_jobs_demo.xml",
|
||||
# "crm_meeting_demo.xml",
|
||||
# "crm_lead_demo.xml",
|
||||
# "crm_opportunity_demo.xml",
|
||||
# "crm_claims_demo.xml",
|
||||
# "crm_phonecall_demo.xml",
|
||||
],
|
||||
"update_xml" : [
|
||||
# "crm_bugs_data.xml",
|
||||
# "crm_fund_data.xml",
|
||||
# "crm_jobs_data.xml",
|
||||
# "crm_meeting_data.xml",
|
||||
# "crm_lead_data.xml",
|
||||
# "crm_bugs_menu.xml",
|
||||
# "crm_fund_menu.xml",
|
||||
# "crm_jobs_menu.xml",
|
||||
# "crm_helpdesk_menu.xml",
|
||||
# "crm_lead_menu.xml",
|
||||
# "crm_meeting_menu.xml",
|
||||
# "crm_opportunity_data.xml",
|
||||
# "crm_opportunity_menu.xml",
|
||||
# "crm_claims_data.xml",
|
||||
# "crm_claims_menu.xml",
|
||||
# "crm_phonecall_data.xml",
|
||||
# "crm_phonecall_menu.xml",
|
||||
"security/ir.model.access.csv",
|
||||
"process/crm_configuration_process.xml",
|
||||
],
|
||||
"active": False,
|
||||
"installable": True
|
||||
'update_xml': ['security/ir.model.access.csv', 'process/crm_configuration_process.xml'],
|
||||
'demo_xml': [],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
'certificate': '80531386589',
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
@@ -19,33 +19,32 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
{
|
||||
"name" : "crm_profiling management",
|
||||
"version" : "1.3",
|
||||
"depends" : ["base", "crm"],
|
||||
"author" : "Tiny",
|
||||
"description": """
|
||||
'name': 'crm_profiling management',
|
||||
'version': '1.3',
|
||||
'category': 'Generic Modules/CRM & SRM',
|
||||
'description': """
|
||||
This module allow users to perform segmentation within partners.
|
||||
It use the profiles criteria from the earlier segmentation module and improve it thanks to the new concept of questionnaire. You can now regroup questions into a questionnaire and directly use it on a partner.
|
||||
|
||||
It also has been merged with the earlier CRM & SRM segmentation tool because they were overlapping.
|
||||
|
||||
|
||||
The menu items related are in "CRM & SRM\Configuration\Segmentations\"
|
||||
The menu items related are in "CRM & SRM\Configuration\Segmentations"
|
||||
|
||||
|
||||
* Note: this module is not compatible with the module segmentation, since it's the same which has been renamed.
|
||||
""",
|
||||
"website" : "http://www.openerp.com",
|
||||
"category" : "Generic Modules/CRM & SRM",
|
||||
"init_xml" : [],
|
||||
"demo_xml" : ["crm_profiling_demo.xml"],
|
||||
"update_xml" : [
|
||||
"security/ir.model.access.csv",
|
||||
"crm_profiling_view.xml",
|
||||
],
|
||||
"active": False,
|
||||
"installable": True
|
||||
'author': 'Tiny',
|
||||
'website': 'http://www.openerp.com',
|
||||
'depends': ['base', 'crm'],
|
||||
'init_xml': [],
|
||||
'update_xml': ['security/ir.model.access.csv', 'crm_profiling_view.xml'],
|
||||
'demo_xml': ['crm_profiling_demo.xml'],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
'certificate': '33984979005',
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
@@ -19,18 +19,20 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
{
|
||||
"name" : "CRM Verticalisation",
|
||||
"version" : "1.0",
|
||||
"author" : "Tiny",
|
||||
"website" : "http://www.openerp.com",
|
||||
"category" : "Vertical Modules/Parametrization",
|
||||
"description": """Simplification of the interface for CRM.""",
|
||||
"depends" : ["crm_configuration"],
|
||||
"init_xml" : [ ],
|
||||
"demo_xml" : [ ],
|
||||
"update_xml" : [],
|
||||
"installable": True
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
{
|
||||
'name': 'CRM Verticalisation',
|
||||
'version': '1.0',
|
||||
'category': 'Vertical Modules/Parametrization',
|
||||
'description': """Simplification of the interface for CRM.""",
|
||||
'author': 'Tiny',
|
||||
'website': 'http://www.openerp.com',
|
||||
'depends': ['crm_configuration'],
|
||||
'init_xml': [],
|
||||
'update_xml': [],
|
||||
'demo_xml': [],
|
||||
'installable': True,
|
||||
'certificate': '59915476845',
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
+13
-13
@@ -19,19 +19,19 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
{
|
||||
"name" : "Module for custom developments",
|
||||
"version" : "1.0",
|
||||
"author" : "Tiny",
|
||||
"category" : "Generic Modules/Others",
|
||||
"website": "http://www.openerp.com",
|
||||
"description": "Sample custom module where you can put your customer specific developments.",
|
||||
"depends" : ["base"],
|
||||
"init_xml" : [],
|
||||
"update_xml" : ["custom_view.xml"],
|
||||
"active": False,
|
||||
"installable": True
|
||||
'name': 'Module for custom developments',
|
||||
'version': '1.0',
|
||||
'category': 'Generic Modules/Others',
|
||||
'description': """Sample custom module where you can put your customer specific developments.""",
|
||||
'author': 'Tiny',
|
||||
'website': 'http://www.openerp.com',
|
||||
'depends': ['base'],
|
||||
'init_xml': [],
|
||||
'update_xml': ['custom_view.xml'],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
}
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
+18
-17
@@ -19,24 +19,25 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
{
|
||||
"name" : "Carriers and deliveries",
|
||||
"version" : "1.0",
|
||||
"author" : "Tiny",
|
||||
"category" : "Generic Modules/Sales & Purchases",
|
||||
"description": "Allows to add delivery methods in sales order and packing. You can define your own carrier and delivery grids for prices. When creating invoices from pickings, Open ERP is able to add and compute the shipping line.",
|
||||
"depends" : ["sale","purchase", "stock",],
|
||||
"init_xml" : ["delivery_data.xml"],
|
||||
"demo_xml" : ["delivery_demo.xml"],
|
||||
"update_xml" : [
|
||||
"security/ir.model.access.csv",
|
||||
"delivery_view.xml",
|
||||
"delivery_wizard.xml",
|
||||
"partner_view.xml",
|
||||
'name': 'Carriers and deliveries',
|
||||
'version': '1.0',
|
||||
'category': 'Generic Modules/Sales & Purchases',
|
||||
'description': """Allows to add delivery methods in sales order and packing. You can define your own carrier and delivery grids for prices. When creating invoices from pickings, Open ERP is able to add and compute the shipping line.""",
|
||||
'author': 'Tiny',
|
||||
'depends': ['sale', 'purchase', 'stock'],
|
||||
'init_xml': ['delivery_data.xml'],
|
||||
'update_xml': [
|
||||
'security/ir.model.access.csv',
|
||||
'delivery_view.xml',
|
||||
'delivery_wizard.xml',
|
||||
'partner_view.xml'
|
||||
],
|
||||
"active": False,
|
||||
"installable": True,
|
||||
'demo_xml': ['delivery_demo.xml'],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
'certificate': '33981912253',
|
||||
}
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
+20
-19
@@ -19,29 +19,30 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
{
|
||||
"name" : "Integrated Document Management System",
|
||||
"version" : "1.0",
|
||||
"author" : "Tiny",
|
||||
"category" : "Generic Modules/Others",
|
||||
"website": "http://www.openerp.com",
|
||||
"description": """This is a complete document management system:
|
||||
'name': 'Integrated Document Management System',
|
||||
'version': '1.0',
|
||||
'category': 'Generic Modules/Others',
|
||||
'description': """This is a complete document management system:
|
||||
* FTP Interface
|
||||
* User Authentication
|
||||
* Document Indexation
|
||||
""",
|
||||
"depends" : ["base","process"],
|
||||
"init_xml" : [
|
||||
"document_data.xml",
|
||||
"document_demo.xml"
|
||||
'author': 'Tiny',
|
||||
'website': 'http://www.openerp.com',
|
||||
'depends': ['base', 'process'],
|
||||
'init_xml': ['document_data.xml', 'document_demo.xml'],
|
||||
'update_xml': [
|
||||
'document_view.xml',
|
||||
'document_data.xml',
|
||||
'security/document_security.xml',
|
||||
'security/ir.model.access.csv'
|
||||
],
|
||||
"update_xml" : [
|
||||
"document_view.xml",
|
||||
"document_data.xml",
|
||||
"security/document_security.xml",
|
||||
"security/ir.model.access.csv",
|
||||
],
|
||||
"demo_xml" : [],
|
||||
"active": False,
|
||||
"installable": True
|
||||
'demo_xml': [],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
'certificate': '70515416461',
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
@@ -376,14 +376,14 @@ class document_directory(osv.osv):
|
||||
return True
|
||||
def write(self, cr, uid, ids, vals, context=None):
|
||||
if not self._check_duplication(cr,uid,vals,ids,op='write'):
|
||||
raise except_orm('ValidateError', 'Directory name must be unique!')
|
||||
raise osv.except_osv('ValidateError', _('Directory name must be unique!'))
|
||||
return super(document_directory,self).write(cr,uid,ids,vals,context=context)
|
||||
|
||||
def create(self, cr, uid, vals, context=None):
|
||||
if not self._check_duplication(cr,uid,vals):
|
||||
raise except_orm('ValidateError', 'Directory name must be unique!')
|
||||
raise osv.except_osv('ValidateError', _('Directory name must be unique!'))
|
||||
if vals.get('name',False) and (vals.get('name').find('/')+1 or vals.get('name').find('@')+1 or vals.get('name').find('$')+1 or vals.get('name').find('#')+1) :
|
||||
raise 'Error'
|
||||
raise osv.except_osv('ValidateError', _('Directory name contains special characters!'))
|
||||
return super(document_directory,self).create(cr, uid, vals, context)
|
||||
|
||||
document_directory()
|
||||
|
||||
@@ -19,22 +19,21 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
{
|
||||
"name" : "Support for iCal based on Document Management System",
|
||||
"version" : "1.0",
|
||||
"author" : "Tiny",
|
||||
"category" : "Generic Modules/Others",
|
||||
"website": "http://www.openerp.com",
|
||||
"description": """Allows to synchronise calendars with others applications.""",
|
||||
"depends" : ["document","crm_configuration"],
|
||||
"init_xml" : ["document_data.xml"],
|
||||
"update_xml" : [
|
||||
"document_view.xml",
|
||||
"security/ir.model.access.csv",
|
||||
],
|
||||
"demo_xml" : [
|
||||
"document_demo.xml"
|
||||
],
|
||||
"active": False,
|
||||
"installable": True
|
||||
'name': 'Support for iCal based on Document Management System',
|
||||
'version': '1.0',
|
||||
'category': 'Generic Modules/Others',
|
||||
'description': """Allows to synchronise calendars with others applications.""",
|
||||
'author': 'Tiny',
|
||||
'website': 'http://www.openerp.com',
|
||||
'depends': ['document', 'crm_configuration'],
|
||||
'init_xml': ['document_data.xml'],
|
||||
'update_xml': ['document_view.xml', 'security/ir.model.access.csv'],
|
||||
'demo_xml': ['document_demo.xml'],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
'certificate': '71242387229',
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# -*- encoding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# OpenERP, Open Source Management Solution
|
||||
# OpenERP, Open Source Management Solution
|
||||
# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>). All Rights Reserved
|
||||
# $Id$
|
||||
#
|
||||
@@ -41,7 +41,9 @@ ICS_TAGS = {
|
||||
'attendee':'multiple',
|
||||
'location':'normal',
|
||||
'categories': 'normal',
|
||||
'description':'normal'
|
||||
'description':'normal',
|
||||
|
||||
# TODO: handle the 'duration' property
|
||||
}
|
||||
|
||||
class document_directory_ics_fields(osv.osv):
|
||||
@@ -126,8 +128,6 @@ class document_directory_content(osv.osv):
|
||||
if len(dt)==10:
|
||||
dt = dt+' 09:00:00'
|
||||
value = datetime.datetime.strptime(dt, '%Y-%m-%d %H:%M:%S')
|
||||
if field.name=='dtend':
|
||||
value += datetime.timedelta(hours=3)
|
||||
event.add(field.name).value = value
|
||||
s= StringIO.StringIO(cal.serialize().encode('utf8'))
|
||||
s.name = node
|
||||
@@ -142,3 +142,5 @@ class crm_case(osv.osv):
|
||||
}
|
||||
crm_case()
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
+19
-19
@@ -19,12 +19,13 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
{
|
||||
"name" : "Event",
|
||||
"version" : "0.1",
|
||||
"author" : "Tiny",
|
||||
"category" : "Generic Modules/Association",
|
||||
"description": """Organization and management of events.
|
||||
'name': 'Event',
|
||||
'version': '0.1',
|
||||
'category': 'Generic Modules/Association',
|
||||
'description': """Organization and management of events.
|
||||
|
||||
This module allow you
|
||||
* to manage your events and their registrations
|
||||
@@ -37,20 +38,19 @@
|
||||
- You can access predefined reports about number of registration per event or per event category in :
|
||||
Events \ Reporting
|
||||
""",
|
||||
"depends" : [
|
||||
"crm","base_contact","account"
|
||||
'author': 'Tiny',
|
||||
'depends': ['crm', 'base_contact', 'account'],
|
||||
'init_xml': ['event_data.xml'],
|
||||
'update_xml': [
|
||||
'event_wizard.xml',
|
||||
'event_view.xml',
|
||||
'event_sequence.xml',
|
||||
'security/event_security.xml',
|
||||
'security/ir.model.access.csv'
|
||||
],
|
||||
"demo_xml" : ["event_demo.xml"],
|
||||
"init_xml" : ["event_data.xml"],
|
||||
"update_xml" : [
|
||||
"event_wizard.xml",
|
||||
"event_view.xml",
|
||||
"event_sequence.xml",
|
||||
"security/event_security.xml",
|
||||
"security/ir.model.access.csv",
|
||||
],
|
||||
"active" : False,
|
||||
"installable" : True,
|
||||
'demo_xml': ['event_demo.xml'],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
'certificate': '83059161581',
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
@@ -19,26 +19,23 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
{
|
||||
"name" : "Event - Project",
|
||||
"version" : "0.1",
|
||||
"author" : "Tiny",
|
||||
"category" : "Generic Modules/Association",
|
||||
"description": """Organization and management of events.
|
||||
'name': 'Event - Project',
|
||||
'version': '0.1',
|
||||
'category': 'Generic Modules/Association',
|
||||
'description': """Organization and management of events.
|
||||
|
||||
This module allow you to create retro planning for managing your events.
|
||||
""",
|
||||
"depends" : [
|
||||
"project_retro_planning","event",
|
||||
],
|
||||
"demo_xml" : [],
|
||||
"init_xml" : [],
|
||||
"update_xml" : [
|
||||
"event_wizard.xml",
|
||||
"event_view.xml",
|
||||
],
|
||||
"active" : False,
|
||||
"installable" : True,
|
||||
'author': 'Tiny',
|
||||
'depends': ['project_retro_planning', 'event'],
|
||||
'init_xml': [],
|
||||
'update_xml': ['event_wizard.xml', 'event_view.xml'],
|
||||
'demo_xml': [],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
'certificate': '69726863885',
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
@@ -19,21 +19,23 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
{
|
||||
"name" : "Google Map",
|
||||
"version" : "1.0",
|
||||
"author" : "Tiny",
|
||||
"website" : "http://www.openerp.com",
|
||||
"category" : "Generic Modules/Others",
|
||||
"description": """The module adds google map field in partner address
|
||||
'name': 'Google Map',
|
||||
'version': '1.0',
|
||||
'category': 'Generic Modules/Others',
|
||||
'description': """The module adds google map field in partner address
|
||||
so that we can directly open google map from the
|
||||
url widget.""",
|
||||
"depends" : ["base"],
|
||||
"init_xml" : [],
|
||||
"demo_xml" : [],
|
||||
"update_xml" : ["google_map_wizard.xml","google_map_view.xml"],
|
||||
"active": False,
|
||||
"installable": True
|
||||
'author': 'Tiny',
|
||||
'website': 'http://www.openerp.com',
|
||||
'depends': ['base'],
|
||||
'init_xml': [],
|
||||
'update_xml': ['google_map_wizard.xml', 'google_map_view.xml'],
|
||||
'demo_xml': [],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
'certificate': '29498930765',
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
+18
-18
@@ -19,9 +19,11 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
{
|
||||
"name" : "Human Resources",
|
||||
"version" : "1.0",
|
||||
"version" : "1.1",
|
||||
"author" : "Tiny",
|
||||
"category" : "Generic Modules/Human Resources",
|
||||
"website" : "http://www.openerp.com",
|
||||
@@ -33,23 +35,21 @@
|
||||
|
||||
Different reports are also provided, mainly for attendance statistics.
|
||||
""",
|
||||
"depends" : ["base", "process"],
|
||||
"init_xml" : [],
|
||||
"demo_xml" : [
|
||||
"hr_demo.xml",
|
||||
"hr_department_demo.xml",
|
||||
'author': 'Tiny',
|
||||
'website': 'http://www.openerp.com',
|
||||
'depends': ['base', 'process'],
|
||||
'init_xml': [],
|
||||
'update_xml': [
|
||||
'security/hr_security.xml',
|
||||
'security/ir.model.access.csv',
|
||||
'hr_view.xml',
|
||||
'hr_wizard.xml',
|
||||
'hr_department_view.xml',
|
||||
'process/hr_process.xml'
|
||||
],
|
||||
"update_xml" : [
|
||||
"security/hr_security.xml",
|
||||
"security/ir.model.access.csv",
|
||||
"hr_view.xml",
|
||||
"hr_wizard.xml",
|
||||
"hr_department_view.xml",
|
||||
"process/hr_process.xml"
|
||||
],
|
||||
"active": False,
|
||||
"installable": True
|
||||
'demo_xml': ['hr_demo.xml', 'hr_department_demo.xml'],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
'certificate': '86710558965',
|
||||
}
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
<separator string="Contact Information" colspan="2"/>
|
||||
<field name="address_id" colspan="2"/>
|
||||
<field name="work_phone"/>
|
||||
<field name="work_email"/>
|
||||
<field name="work_email" widget="email" />
|
||||
<field name="work_location"/>
|
||||
</group>
|
||||
|
||||
|
||||
@@ -19,21 +19,25 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
{
|
||||
"name" : "Attendances Of Employees",
|
||||
"version" : "1.1",
|
||||
"author" : "Tiny",
|
||||
"category" : "Generic Modules/Human Resources",
|
||||
"description": "This module aims to manage employee's attendances.",
|
||||
"depends" : ["base","hr",],
|
||||
"demo_xml" : ["hr_attendance_demo.xml"],
|
||||
"update_xml" : [
|
||||
"security/hr_security.xml",
|
||||
"hr_attendance_view.xml",
|
||||
"hr_attendance_wizard.xml",
|
||||
"hr_attendance_report.xml",
|
||||
"security/ir.model.access.csv"
|
||||
'name': 'Attendances Of Employees',
|
||||
'version': '1.1',
|
||||
'category': 'Generic Modules/Human Resources',
|
||||
'description': """This module aims to manage employee's attendances.""",
|
||||
'author': 'Tiny',
|
||||
'depends': ['base', 'hr'],
|
||||
'update_xml': [
|
||||
'security/hr_security.xml',
|
||||
'hr_attendance_view.xml',
|
||||
'hr_attendance_wizard.xml',
|
||||
'hr_attendance_report.xml',
|
||||
'security/ir.model.access.csv'
|
||||
],
|
||||
"active": False,
|
||||
"installable": True,
|
||||
'demo_xml': ['hr_attendance_demo.xml'],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
'certificate': '63495605613',
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
@@ -19,15 +19,13 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
{
|
||||
"name" : "Human Resources Contracts",
|
||||
"version" : "1.0",
|
||||
"author" : "Tiny",
|
||||
"category" : "Generic Modules/Human Resources",
|
||||
"website" : "http://www.openerp.com",
|
||||
"depends" : ["hr"],
|
||||
"module": "",
|
||||
"description": """
|
||||
'name': 'Human Resources Contracts',
|
||||
'version': '1.0',
|
||||
'category': 'Generic Modules/Human Resources',
|
||||
'description': """
|
||||
Add all information on the employee form to manage contracts:
|
||||
* Martial status,
|
||||
* Security number,
|
||||
@@ -35,16 +33,18 @@
|
||||
|
||||
You can assign several contracts per employee.
|
||||
""",
|
||||
"init_xml" : ["hr_contract_data.xml", ],
|
||||
"demo_xml" : [],
|
||||
"update_xml" : [
|
||||
"security/hr_contract_security.xml",
|
||||
"security/ir.model.access.csv",
|
||||
"hr_contract_view.xml",
|
||||
'author': 'Tiny',
|
||||
'website': 'http://www.openerp.com',
|
||||
'depends': ['hr'],
|
||||
'init_xml': ['hr_contract_data.xml'],
|
||||
'update_xml': [
|
||||
'security/hr_contract_security.xml',
|
||||
'security/ir.model.access.csv',
|
||||
'hr_contract_view.xml'
|
||||
],
|
||||
"active": False,
|
||||
"installable": True
|
||||
'demo_xml': [],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
'certificate': '46298028637',
|
||||
}
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
@@ -19,14 +19,13 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
{
|
||||
"name" : "Human Resources Expenses Tracking",
|
||||
"version" : "1.0",
|
||||
"author" : "Tiny",
|
||||
"category" : "Generic Modules/Human Resources",
|
||||
"website" : "http://www.openerp.com",
|
||||
"depends" : ["hr","account", "account_tax_include",],
|
||||
"description": """
|
||||
'name': 'Human Resources Expenses Tracking',
|
||||
'version': '1.0',
|
||||
'category': 'Generic Modules/Human Resources',
|
||||
'description': """
|
||||
This module aims to manage employee's expenses.
|
||||
|
||||
The whole workflow is implemented:
|
||||
@@ -40,19 +39,21 @@
|
||||
the invoice on timesheet module so that you will be able to automatically
|
||||
re-invoice your customer's expenses if your work by project.
|
||||
""",
|
||||
"init_xml" : [],
|
||||
"demo_xml" : ["hr_expense_demo.xml", "hr.expense.expense.csv"],
|
||||
"update_xml" : [
|
||||
"security/ir.model.access.csv",
|
||||
"hr_expense_sequence.xml",
|
||||
"hr_expense_workflow.xml",
|
||||
"hr_expense_view.xml",
|
||||
"hr_expense_report.xml",
|
||||
"process/hr_expense_process.xml"
|
||||
'author': 'Tiny',
|
||||
'website': 'http://www.openerp.com',
|
||||
'depends': ['hr', 'account', 'account_tax_include'],
|
||||
'init_xml': [],
|
||||
'update_xml': [
|
||||
'security/ir.model.access.csv',
|
||||
'hr_expense_sequence.xml',
|
||||
'hr_expense_workflow.xml',
|
||||
'hr_expense_view.xml',
|
||||
'hr_expense_report.xml',
|
||||
'process/hr_expense_process.xml'
|
||||
],
|
||||
"active": False,
|
||||
"installable": True
|
||||
'demo_xml': ['hr_expense_demo.xml', 'hr.expense.expense.csv'],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
'certificate': '62479841789',
|
||||
}
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
# -*- encoding: utf-8 -*-
|
||||
|
||||
|
||||
{
|
||||
"name" : "Human Resources: Holidays management",
|
||||
"version" : "0.1",
|
||||
"version" : "1.1",
|
||||
"author" : "Tiny & Axelor",
|
||||
"category" : "Generic Modules/Human Resources",
|
||||
"website" : "http://www.openerp.com",
|
||||
"description": """Human Resources: Holidays tracking and workflow
|
||||
"description": """Human Ressources: Holidays tracking and workflow
|
||||
|
||||
This module allows you to manage holidays and holidays requests. For each employee, you can also define a number of available holidays per holiday status.
|
||||
|
||||
@@ -24,20 +26,21 @@
|
||||
Administration \ Users \ Users
|
||||
for example, you maybe will do it for the user 'admin'.
|
||||
""",
|
||||
"depends" : ["hr","crm_configuration", "process"],
|
||||
"init_xml" : [],
|
||||
"update_xml" : [
|
||||
"security/ir.model.access.csv",
|
||||
"hr_workflow.xml",
|
||||
"hr_view.xml",
|
||||
"hr_holidays_report.xml",
|
||||
"hr_holidays_wizard.xml",
|
||||
"process/hr_holidays_process.xml"
|
||||
'author': 'Tiny & Axelor',
|
||||
'website': 'http://www.openerp.com',
|
||||
'depends': ['hr', 'crm_configuration', 'process'],
|
||||
'init_xml': [],
|
||||
'update_xml': [
|
||||
'security/ir.model.access.csv',
|
||||
'hr_workflow.xml',
|
||||
'hr_view.xml',
|
||||
'hr_holidays_report.xml',
|
||||
'hr_holidays_wizard.xml',
|
||||
'process/hr_holidays_process.xml'
|
||||
],
|
||||
# "demo_xml" : ["hr_bel_holidays_2008.xml",],
|
||||
"demo_xml" : [],
|
||||
"active": False,
|
||||
"installable": True
|
||||
'demo_xml': [],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
'certificate': '86579209325',
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
@@ -19,13 +19,13 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
{
|
||||
"name" : "Human Resources (Timesheet encoding)",
|
||||
"version" : "1.0",
|
||||
"author" : "Tiny",
|
||||
"category" : "Generic Modules/Human Resources",
|
||||
"website" : "http://www.openerp.com",
|
||||
"description": """
|
||||
'name': 'Human Resources (Timesheet encoding)',
|
||||
'version': '1.0',
|
||||
'category': 'Generic Modules/Human Resources',
|
||||
'description': """
|
||||
This module implement a timesheet system. Each employee can encode and
|
||||
track their time spent on the different projects. A project is an
|
||||
analytic account and the time spent on a project generate costs on
|
||||
@@ -36,19 +36,20 @@ Lots of reporting on time and employee tracking are provided.
|
||||
It is completely integrated with the cost accounting module. It allows you
|
||||
to set up a management by affair.
|
||||
""",
|
||||
"depends" : ["account", "hr", "base", "hr_attendance", "process"],
|
||||
"init_xml" : ["hr_timesheet_data.xml"],
|
||||
"demo_xml" : ["hr_timesheet_demo.xml",],
|
||||
"update_xml" : [
|
||||
"security/ir.model.access.csv",
|
||||
"hr_timesheet_view.xml",
|
||||
"hr_timesheet_report.xml",
|
||||
"hr_timesheet_wizard.xml",
|
||||
"process/hr_timesheet_process.xml"
|
||||
'author': 'Tiny',
|
||||
'website': 'http://www.openerp.com',
|
||||
'depends': ['account', 'hr', 'base', 'hr_attendance', 'process'],
|
||||
'init_xml': ['hr_timesheet_data.xml'],
|
||||
'update_xml': [
|
||||
'security/ir.model.access.csv',
|
||||
'hr_timesheet_view.xml',
|
||||
'hr_timesheet_report.xml',
|
||||
'hr_timesheet_wizard.xml',
|
||||
'process/hr_timesheet_process.xml'
|
||||
],
|
||||
"active": False,
|
||||
"installable": True
|
||||
'demo_xml': ['hr_timesheet_demo.xml'],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
'certificate': '71405533469',
|
||||
}
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
@@ -19,30 +19,29 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
{
|
||||
"name" : "Invoice on analytic lines",
|
||||
"version" : "1.0",
|
||||
"author" : "Tiny",
|
||||
"category" : "Generic Modules/Accounting",
|
||||
"website" : "http://www.openerp.com",
|
||||
"depends" : ["account",'hr_timesheet'],
|
||||
"description": """
|
||||
'name': 'Invoice on analytic lines',
|
||||
'version': '1.0',
|
||||
'category': 'Generic Modules/Accounting',
|
||||
'description': """
|
||||
Module to generate invoices based on costs (human resources, expenses, ...).
|
||||
You can define price lists in analytic account, make some theoretical revenue
|
||||
reports, eso.""",
|
||||
"init_xml" : [],
|
||||
"demo_xml" : [
|
||||
'hr_timesheet_invoice_demo.xml'
|
||||
],
|
||||
"update_xml" : [
|
||||
"security/ir.model.access.csv",
|
||||
'author': 'Tiny',
|
||||
'website': 'http://www.openerp.com',
|
||||
'depends': ['account', 'hr_timesheet'],
|
||||
'init_xml': [],
|
||||
'update_xml': [
|
||||
'security/ir.model.access.csv',
|
||||
'hr_timesheet_invoice_view.xml',
|
||||
'hr_timesheet_invoice_wizard.xml',
|
||||
'hr_timesheet_invoice_report.xml'
|
||||
],
|
||||
"active": False,
|
||||
"installable": True
|
||||
'demo_xml': ['hr_timesheet_invoice_demo.xml'],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
'certificate': '56091842381',
|
||||
}
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
@@ -19,20 +19,19 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
{
|
||||
"name" : "Human Resources (Timesheet encoding from project tasks)",
|
||||
"version" : "1.0",
|
||||
"author" : "Tiny",
|
||||
"category" : "Generic Modules/Human Resources",
|
||||
"description": """Auto-complete timesheet based on tasks made on the project management module.""",
|
||||
"website" : "http://www.openerp.com",
|
||||
"depends" : ["project", "hr_timesheet_sheet"],
|
||||
"update_xml" : ["hr_timesheet_project_view.xml",
|
||||
"process/hr_timesheet_project_process.xml",
|
||||
],
|
||||
"active": False,
|
||||
"installable": True
|
||||
'name': 'Human Resources (Timesheet encoding from project tasks)',
|
||||
'version': '1.0',
|
||||
'category': 'Generic Modules/Human Resources',
|
||||
'description': """Auto-complete timesheet based on tasks made on the project management module.""",
|
||||
'author': 'Tiny',
|
||||
'website': 'http://www.openerp.com',
|
||||
'depends': ['project', 'hr_timesheet_sheet'],
|
||||
'update_xml': ['hr_timesheet_project_view.xml', 'process/hr_timesheet_project_process.xml'],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
'certificate': '68570797709',
|
||||
}
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
@@ -57,7 +57,7 @@ def _action_line_create(self, cr, uid, data, context):
|
||||
if res2:
|
||||
res.update(res2['value'])
|
||||
if hasattr(ts, 'on_change_account_id'):
|
||||
res2 = ts.on_change_account_id(cr, uid, False, aa.id)
|
||||
res2 = ts.on_change_account_id(cr, uid, False, uid, aa.id, context)
|
||||
if res2:
|
||||
res.update(res2['value'])
|
||||
id = ts.create(cr, uid, res, context)
|
||||
|
||||
@@ -19,13 +19,13 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
{
|
||||
"name" : "Timesheets",
|
||||
"version" : "1.0",
|
||||
"author" : "Tiny",
|
||||
"category" : "Generic Modules/Human Resources",
|
||||
"website" : "http://www.openerp.com",
|
||||
"description": """
|
||||
'name': 'Timesheets',
|
||||
'version': '1.0',
|
||||
'category': 'Generic Modules/Human Resources',
|
||||
'description': """
|
||||
This module help you easily encode and validate timesheet and attendances
|
||||
within the same view. The upper part of the view is for attendances and
|
||||
track (sign in/sign out) events. The lower part is for timesheet.
|
||||
@@ -44,18 +44,19 @@ The validation can be configured in te company:
|
||||
* Period size (day, week, month, year)
|
||||
* Maximal difference between timesheet and attendances
|
||||
""",
|
||||
"depends" : ["hr_timesheet", "hr_timesheet_invoice", "process"],
|
||||
"init_xml" : [],
|
||||
"demo_xml" : ["hr_timesheet_sheet_demo.xml",],
|
||||
"update_xml" : [
|
||||
"security/ir.model.access.csv",
|
||||
"hr_timesheet_sheet_view.xml",
|
||||
"hr_timesheet_workflow.xml",
|
||||
"process/hr_timesheet_sheet_process.xml",
|
||||
'author': 'Tiny',
|
||||
'website': 'http://www.openerp.com',
|
||||
'depends': ['hr_timesheet', 'hr_timesheet_invoice', 'process'],
|
||||
'init_xml': [],
|
||||
'update_xml': [
|
||||
'security/ir.model.access.csv',
|
||||
'hr_timesheet_sheet_view.xml',
|
||||
'hr_timesheet_workflow.xml',
|
||||
'process/hr_timesheet_sheet_process.xml'
|
||||
],
|
||||
"active": False,
|
||||
"installable": True
|
||||
'demo_xml': ['hr_timesheet_sheet_demo.xml'],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
'certificate': '73297700829',
|
||||
}
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
+18
-17
@@ -20,23 +20,24 @@
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
{
|
||||
"name" : "Idea Manager",
|
||||
"version" : "0.1",
|
||||
"author" : "Tiny",
|
||||
"website" : "http://openerp.com",
|
||||
"category" : "Tools",
|
||||
"description": """This module allows your user to easily and efficiently participate in the innovation of the enterprise. It allows everybody to express ideas about different subjects. Then, others users can comment these ideas and vote for particular ideas. Each idea as a score based on the different votes. The managers can obtain an easy view on best ideas from all the users. Once installed, check the menu 'Ideas' in the 'Tools' main menu.""",
|
||||
"depends" : ['base'],
|
||||
"init_xml" : [ ],
|
||||
"demo_xml" : [ ],
|
||||
"update_xml" : [
|
||||
'idea_view.xml',
|
||||
'idea_workflow.xml',
|
||||
"security/idea_security.xml",
|
||||
"security/ir.model.access.csv",
|
||||
],
|
||||
"installable": True
|
||||
'name': 'Idea Manager',
|
||||
'version': '0.1',
|
||||
'category': 'Tools',
|
||||
'description': """This module allows your user to easily and efficiently participate in the innovation of the enterprise. It allows everybody to express ideas about different subjects. Then, others users can comment these ideas and vote for particular ideas. Each idea as a score based on the different votes. The managers can obtain an easy view on best ideas from all the users. Once installed, check the menu 'Ideas' in the 'Tools' main menu.""",
|
||||
'author': 'Tiny',
|
||||
'website': 'http://openerp.com',
|
||||
'depends': ['base'],
|
||||
'init_xml': [],
|
||||
'update_xml': [
|
||||
'idea_view.xml',
|
||||
'idea_workflow.xml',
|
||||
'security/idea_security.xml',
|
||||
'security/ir.model.access.csv'
|
||||
],
|
||||
'demo_xml': [],
|
||||
'installable': True,
|
||||
'certificate': '71515601309',
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
+13
-16
@@ -19,15 +19,13 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
{
|
||||
"name" : "Belgium - Plan Comptable Minimum Normalise",
|
||||
"version" : "1.1",
|
||||
"author" : "Tiny",
|
||||
"category" : "Localisation/Account Charts",
|
||||
"depends" : ["account", "account_report", "base_vat", "base_iban",
|
||||
"account_chart"],
|
||||
"init_xml" : [],
|
||||
"description": """
|
||||
'name': 'Belgium - Plan Comptable Minimum Normalise',
|
||||
'version': '1.1',
|
||||
'category': 'Localisation/Account Charts',
|
||||
'description': """
|
||||
This is the base module to manage the accounting chart for Belgium in Open ERP.
|
||||
|
||||
After Installing this module,The Configuration wizard for accounting is launched.
|
||||
@@ -41,13 +39,12 @@
|
||||
* Prepares an XML file for Vat Declaration of the Main company of the User currently Logged in.Path to access : Financial Management/Reporting/Listing of VAT Customers.
|
||||
|
||||
""",
|
||||
"demo_xml" : [
|
||||
# "account_demo.xml",
|
||||
# "account.report.report.csv"
|
||||
],
|
||||
"update_xml" : ["account_pcmn_belgium.xml","l10n_be_wizard.xml", "l10n_be_sequence.xml"],
|
||||
"installable": True
|
||||
'author': 'Tiny',
|
||||
'depends': ['account', 'account_report', 'base_vat', 'base_iban', 'account_chart'],
|
||||
'init_xml': [],
|
||||
'update_xml': ['account_pcmn_belgium.xml', 'l10n_be_wizard.xml', 'l10n_be_sequence.xml'],
|
||||
'demo_xml': [],
|
||||
'installable': True,
|
||||
'certificate': '31977724637',
|
||||
}
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
@@ -57,20 +57,25 @@
|
||||
# Status 1.0 - tested on Open ERP 4.1.0, 4.0.3
|
||||
# - COGS account type fixed
|
||||
#
|
||||
|
||||
|
||||
{
|
||||
"name" : "United Kingdom - minimal",
|
||||
"version" : "1.1",
|
||||
"author" : "Seath Solutions Ltd",
|
||||
"website": "http://www.seathsolutions.com",
|
||||
"category" : "Localisation/Account Charts",
|
||||
"description": "This is the base module to manage the accounting chart for United Kingdom in Open ERP.",
|
||||
"depends" : ["base", "account", "base_iban", "base_vat", "account_chart"],
|
||||
"init_xml" : [],
|
||||
"demo_xml" : [],
|
||||
"update_xml" : ["account_types.xml","account_chart.xml",
|
||||
"account_tax.xml","l10n_uk_wizard.xml"],
|
||||
"installable": True
|
||||
'name': 'United Kingdom - minimal',
|
||||
'version': '1.1',
|
||||
'category': 'Localisation/Account Charts',
|
||||
'description': """This is the base module to manage the accounting chart for United Kingdom in Open ERP.""",
|
||||
'author': 'Seath Solutions Ltd',
|
||||
'website': 'http://www.seathsolutions.com',
|
||||
'depends': ['base', 'account', 'base_iban', 'base_vat', 'account_chart'],
|
||||
'init_xml': [],
|
||||
'update_xml': [
|
||||
'account_types.xml',
|
||||
'account_chart.xml',
|
||||
'account_tax.xml',
|
||||
'l10n_uk_wizard.xml'
|
||||
],
|
||||
'demo_xml': [],
|
||||
'installable': True,
|
||||
'certificate': '64392144797',
|
||||
}
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
+20
-14
@@ -27,14 +27,13 @@
|
||||
# Règlement disponible sur http://comptabilite.erp-libre.info
|
||||
# Mise en forme et paramétrage par http://sisalp.fr et http://nbconseil.net
|
||||
#
|
||||
|
||||
|
||||
{
|
||||
"name" : "France - Plan comptable Societe - 99-03",
|
||||
"version" : "1.1",
|
||||
"author" : "SISalp-NBconseil",
|
||||
"category" : "Localisation/Account Charts",
|
||||
"website": "http://erp-libre.info",
|
||||
"depends" : ["base", "account", "account_chart", 'base_vat'],
|
||||
"description": """
|
||||
'name': 'France - Plan comptable Societe - 99-03',
|
||||
'version': '1.1',
|
||||
'category': 'Localisation/Account Charts',
|
||||
'description': """
|
||||
This is the base module to manage the accounting chart for France in Open ERP.
|
||||
|
||||
After Installing this module,The Configuration wizard for accounting is launched.
|
||||
@@ -46,12 +45,19 @@
|
||||
* This module installs :
|
||||
The Tax Code chart and taxes for French Accounting.
|
||||
""",
|
||||
"init_xml" : ["fr_data.xml"],
|
||||
"update_xml" : ["l10n_fr_view.xml","types.xml", "plan-99-03_societe.xml",
|
||||
"taxes.xml","fr_wizard.xml",],
|
||||
"demo_xml" : [],
|
||||
"installable": True
|
||||
'author': 'SISalp-NBconseil',
|
||||
'website': 'http://erp-libre.info',
|
||||
'depends': ['base', 'account', 'account_chart', 'base_vat'],
|
||||
'init_xml': ['fr_data.xml'],
|
||||
'update_xml': [
|
||||
'l10n_fr_view.xml',
|
||||
'types.xml',
|
||||
'plan-99-03_societe.xml',
|
||||
'taxes.xml',
|
||||
'fr_wizard.xml'
|
||||
],
|
||||
'demo_xml': [],
|
||||
'installable': True,
|
||||
'certificate': '30349198621',
|
||||
}
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
+21
-17
@@ -19,27 +19,31 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
{
|
||||
"name" : "Luxembourg - Plan Comptable Minimum Normalise",
|
||||
"version" : "1.0",
|
||||
"author" : "Tiny",
|
||||
"website" : "http://openerp.com",
|
||||
"category" : "Localisation/Account Charts",
|
||||
"description": """
|
||||
'name': 'Luxembourg - Plan Comptable Minimum Normalise',
|
||||
'version': '1.0',
|
||||
'category': 'Localisation/Account Charts',
|
||||
'description': """
|
||||
This module installs:
|
||||
|
||||
*the KLUWER Chart of Accounts,
|
||||
*the Tax Code Chart for Luxembourg
|
||||
*the main taxes used in Luxembourg""",
|
||||
"depends" : ["account","account_report","base_vat","base_iban"],
|
||||
"init_xml" : [ ],
|
||||
"demo_xml" : ["account.report.report.csv"],
|
||||
"update_xml" : [
|
||||
"account.tax.code.template.csv",
|
||||
"l10n_lu_data.xml",
|
||||
"account.tax.template.csv",
|
||||
"l10n_lu_wizard.xml",
|
||||
"l10n_lu_report.xml",
|
||||
],
|
||||
"installable": True
|
||||
'author': 'Tiny',
|
||||
'website': 'http://openerp.com',
|
||||
'depends': ['account', 'account_report', 'base_vat', 'base_iban'],
|
||||
'init_xml': [],
|
||||
'update_xml': [
|
||||
'account.tax.code.template.csv',
|
||||
'l10n_lu_data.xml',
|
||||
'account.tax.template.csv',
|
||||
'l10n_lu_wizard.xml',
|
||||
'l10n_lu_report.xml'
|
||||
],
|
||||
'demo_xml': ['account.report.report.csv'],
|
||||
'installable': True,
|
||||
'certificate': '78164766621',
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
@@ -19,19 +19,13 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
{
|
||||
"name" : "Membership",
|
||||
"version" : "0.1",
|
||||
"author" : "Tiny",
|
||||
"category" : "Generic Modules/Association",
|
||||
"depends" : [
|
||||
"base", "product", "account","process"
|
||||
],
|
||||
"demo_xml" : [
|
||||
#"demo_data.xml",
|
||||
"membership_demo.xml"
|
||||
],
|
||||
"description": """
|
||||
'name': 'Membership',
|
||||
'version': '0.1',
|
||||
'category': 'Generic Modules/Association',
|
||||
'description': """
|
||||
This module allows you to manage all operations for managing memberships.
|
||||
It supports different kind of members:
|
||||
* Free member
|
||||
@@ -43,16 +37,18 @@ It supports different kind of members:
|
||||
It is integrated with sales and accounting to allow you to automatically
|
||||
invoice and send propositions for membership renewal.
|
||||
""",
|
||||
"init_xml" : [
|
||||
"membership_data.xml",
|
||||
],
|
||||
"update_xml" : [
|
||||
"security/ir.model.access.csv",
|
||||
"membership_view.xml","membership_wizard.xml",
|
||||
"process/membership_process.xml"
|
||||
],
|
||||
"active" : False,
|
||||
"installable" : True,
|
||||
'author': 'Tiny',
|
||||
'depends': ['base', 'product', 'account', 'process'],
|
||||
'init_xml': ['membership_data.xml'],
|
||||
'update_xml': [
|
||||
'security/ir.model.access.csv',
|
||||
'membership_view.xml',
|
||||
'membership_wizard.xml',
|
||||
'process/membership_process.xml'
|
||||
],
|
||||
'demo_xml': ['membership_demo.xml'],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
'certificate': '42907796381',
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
Executable → Regular
+23
-19
@@ -19,9 +19,11 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
{
|
||||
"name" : "Manufacturing Resource Planning",
|
||||
"version" : "1.0",
|
||||
"version" : "1.1",
|
||||
"author" : "Tiny",
|
||||
"website" : "http://www.openerp.com",
|
||||
"category" : "Generic Modules/Production",
|
||||
@@ -53,24 +55,26 @@
|
||||
* Print a production order
|
||||
* Stock forecasts
|
||||
""",
|
||||
"init_xml" : [],
|
||||
"demo_xml" : ["mrp_demo.xml","mrp_order_point.xml"],
|
||||
"update_xml" : [
|
||||
"security/mrp_security.xml",
|
||||
"security/ir.model.access.csv",
|
||||
"mrp_workflow.xml",
|
||||
"mrp_data.xml",
|
||||
"mrp_view.xml",
|
||||
"mrp_wizard.xml",
|
||||
"mrp_report.xml",
|
||||
"company_view.xml",
|
||||
"process/stockable_product_process.xml",
|
||||
"process/service_product_process.xml",
|
||||
"process/procurement_process.xml",
|
||||
'author': 'Tiny',
|
||||
'website': 'http://www.openerp.com',
|
||||
'depends': ['stock', 'hr', 'purchase', 'product', 'process'],
|
||||
'init_xml': [],
|
||||
'update_xml': [
|
||||
'security/mrp_security.xml',
|
||||
'security/ir.model.access.csv',
|
||||
'mrp_workflow.xml',
|
||||
'mrp_data.xml',
|
||||
'mrp_view.xml',
|
||||
'mrp_wizard.xml',
|
||||
'mrp_report.xml',
|
||||
'company_view.xml',
|
||||
'process/stockable_product_process.xml',
|
||||
'process/service_product_process.xml',
|
||||
'process/procurement_process.xml'
|
||||
],
|
||||
"active": False,
|
||||
"installable": True
|
||||
'demo_xml': ['mrp_demo.xml', 'mrp_order_point.xml'],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
'certificate': '32052481373',
|
||||
}
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
@@ -41,10 +41,13 @@ parameter_fields = {
|
||||
def _procure_calculation_orderpoint(self, db_name, uid, data, context):
|
||||
db, pool = pooler.get_db_and_pool(db_name)
|
||||
cr = db.cursor()
|
||||
proc_obj = pool.get('mrp.procurement')
|
||||
automatic = data['form']['automatic']
|
||||
proc_obj._procure_orderpoint_confirm(cr, uid, automatic=automatic,\
|
||||
use_new_cursor=cr.dbname, context=context)
|
||||
try:
|
||||
proc_obj = pool.get('mrp.procurement')
|
||||
automatic = data['form']['automatic']
|
||||
proc_obj._procure_orderpoint_confirm(cr, uid, automatic=automatic,\
|
||||
use_new_cursor=cr.dbname, context=context)
|
||||
finally:
|
||||
cr.close()
|
||||
return {}
|
||||
|
||||
def _procure_calculation(self, cr, uid, data, context):
|
||||
|
||||
@@ -35,8 +35,11 @@ parameter_fields = {
|
||||
def _procure_calculation_procure(self, db_name, uid, data, context):
|
||||
db, pool = pooler.get_db_and_pool(db_name)
|
||||
cr = db.cursor()
|
||||
proc_obj = pool.get('mrp.procurement')
|
||||
proc_obj._procure_confirm(cr, uid, use_new_cursor=cr.dbname, context=context)
|
||||
try:
|
||||
proc_obj = pool.get('mrp.procurement')
|
||||
proc_obj._procure_confirm(cr, uid, use_new_cursor=cr.dbname, context=context)
|
||||
finally:
|
||||
cr.close()
|
||||
return {}
|
||||
|
||||
def _procure_calculation(self, cr, uid, data, context):
|
||||
|
||||
+13
-11
@@ -19,12 +19,13 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
{
|
||||
"name":"MRP JIT",
|
||||
"version":"1.0",
|
||||
"author":"Tiny",
|
||||
"category":"Generic Modules/Production",
|
||||
"description": """
|
||||
'name': 'MRP JIT',
|
||||
'version': '1.0',
|
||||
'category': 'Generic Modules/Production',
|
||||
'description': """
|
||||
This module allows Just In Time computation of all procurement.
|
||||
|
||||
If you install this module, you will not have to run the schedulers anymore.
|
||||
@@ -35,11 +36,12 @@
|
||||
as possible. In that case, you can not use priorities anymore on the different
|
||||
pickings.
|
||||
""",
|
||||
"depends":["mrp","sale"],
|
||||
"demo_xml":[],
|
||||
"update_xml":["mrp_jit.xml"],
|
||||
"active":False,
|
||||
"installable":True,
|
||||
'author': 'Tiny',
|
||||
'depends': ['mrp', 'sale'],
|
||||
'update_xml': ['mrp_jit.xml'],
|
||||
'demo_xml': [],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
'certificate': '86634760061',
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
@@ -19,14 +19,13 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
{
|
||||
"name" : "Workcenter Production start end workflow",
|
||||
"version" : "1.0",
|
||||
"author" : "Tiny",
|
||||
"website" : "http://www.openerp.com",
|
||||
"category" : "Generic Modules/Production",
|
||||
"depends" : ["stock", "hr", "purchase", "product", "mrp"],
|
||||
"description": """
|
||||
'name': 'Workcenter Production start end workflow',
|
||||
'version': '1.0',
|
||||
'category': 'Generic Modules/Production',
|
||||
'description': """
|
||||
This module adds state, date_start,date_stop in production order operation lines
|
||||
(in the "Workcenters" tab)
|
||||
State: draft, confirm, done, cancel
|
||||
@@ -51,15 +50,20 @@
|
||||
So that we can compare the theoretic delay and real delay.
|
||||
|
||||
""",
|
||||
"init_xml" : [],
|
||||
"demo_xml" : ["mrp_operation_data.xml"],
|
||||
"update_xml" : [
|
||||
"security/ir.model.access.csv",
|
||||
"mrp_operations_workflow.xml","mrp_operations_view.xml","mrp_operations_report.xml",
|
||||
"process/mrp_operation_process.xml"
|
||||
'author': 'Tiny',
|
||||
'website': 'http://www.openerp.com',
|
||||
'depends': ['stock', 'hr', 'purchase', 'product', 'mrp'],
|
||||
'init_xml': [],
|
||||
'update_xml': [
|
||||
'security/ir.model.access.csv',
|
||||
'mrp_operations_workflow.xml',
|
||||
'mrp_operations_view.xml',
|
||||
'mrp_operations_report.xml',
|
||||
'process/mrp_operation_process.xml'
|
||||
],
|
||||
"active": False,
|
||||
"installable": True
|
||||
'demo_xml': ['mrp_operation_data.xml'],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
'certificate': '56233813133',
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
@@ -19,11 +19,13 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
{
|
||||
"name":"Products Repairs Module",
|
||||
"version":"1.0",
|
||||
"author":"Tiny",
|
||||
"description": """
|
||||
'name': 'Products Repairs Module',
|
||||
'version': '1.0',
|
||||
'category': 'Custom',
|
||||
'description': """
|
||||
The aim is to have a complete module to manage all products repairs. The following topics should be covered by this module:
|
||||
* Add/remove products in the reparation
|
||||
* Impact for stocks
|
||||
@@ -31,23 +33,20 @@
|
||||
* Warranty concept
|
||||
* Repair quotation report
|
||||
* Notes for the technician and for the final customer
|
||||
""",
|
||||
|
||||
"category":"Custom",
|
||||
"depends":["base","sale","account"],
|
||||
"demo_xml":[],
|
||||
"update_xml":[
|
||||
#"security/mrp_repair_security.xml",
|
||||
"security/ir.model.access.csv",
|
||||
"mrp_repair_sequence.xml",
|
||||
"mrp_repair_wizard.xml",
|
||||
"mrp_repair_view.xml",
|
||||
"mrp_repair_workflow.xml",
|
||||
"mrp_repair_report.xml",
|
||||
""",
|
||||
'author': 'Tiny',
|
||||
'depends': ['base', 'sale', 'account'],
|
||||
'update_xml': [
|
||||
'security/ir.model.access.csv',
|
||||
'mrp_repair_sequence.xml',
|
||||
'mrp_repair_wizard.xml',
|
||||
'mrp_repair_view.xml',
|
||||
'mrp_repair_workflow.xml',
|
||||
'mrp_repair_report.xml'
|
||||
],
|
||||
"active": False,
|
||||
"installable": True,
|
||||
'demo_xml': [],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
'certificate': '60814381277',
|
||||
}
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
@@ -395,7 +395,7 @@
|
||||
<blockTable colWidths="534.0" style="Table8">
|
||||
<tr>
|
||||
<td>
|
||||
<para style="P3">[[ format(o.quotation_notes or '') ]]</para>
|
||||
<para style="P3">[[ format(o.quotation_notes) or '' ]]</para>
|
||||
</td>
|
||||
</tr>
|
||||
</blockTable>
|
||||
|
||||
@@ -19,15 +19,13 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
{
|
||||
"name" : "MRP Sub Product",
|
||||
"version" : "1.0",
|
||||
"author" : "Tiny",
|
||||
"website" : "http://www.openerp.com",
|
||||
"depends" : ["base","mrp"],
|
||||
"category" : "Generic Modules/Production",
|
||||
"init_xml" : [],
|
||||
"description": """
|
||||
'name': 'MRP Sub Product',
|
||||
'version': '1.0',
|
||||
'category': 'Generic Modules/Production',
|
||||
'description': """
|
||||
This module allows you to produce several products from one production order.
|
||||
You can configure sub-products in the bill of material.
|
||||
Without this module:
|
||||
@@ -35,14 +33,14 @@ Without this module:
|
||||
With this module:
|
||||
A + B + C -> D + E
|
||||
""",
|
||||
"demo_xml" : [],
|
||||
"update_xml" : [
|
||||
"security/ir.model.access.csv",
|
||||
"mrp_subproduct_view.xml",
|
||||
],
|
||||
"active": False,
|
||||
"installable": True
|
||||
'author': 'Tiny',
|
||||
'website': 'http://www.openerp.com',
|
||||
'depends': ['base', 'mrp'],
|
||||
'init_xml': [],
|
||||
'update_xml': ['security/ir.model.access.csv', 'mrp_subproduct_view.xml'],
|
||||
'demo_xml': [],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
'certificate': '50060616733',
|
||||
}
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user