pso (tiny)
2009-01-10 10:42:34 +05:30
146 changed files with 2329 additions and 2309 deletions
+36 -37
View File
@@ -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
View File
@@ -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)
+5 -5
View File
@@ -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
View File
@@ -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],
+6 -6
View File
@@ -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):
+11 -8
View File
@@ -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:
+15 -15
View File
@@ -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 -18
View File
@@ -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:
+15 -17
View File
@@ -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:
+20 -15
View File
@@ -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:
+14 -18
View File
@@ -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:
+15 -15
View File
@@ -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 -19
View File
@@ -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:
+18 -16
View File
@@ -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 -16
View File
@@ -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 -21
View File
@@ -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:
+18 -19
View File
@@ -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:
+15 -14
View File
@@ -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:
+21 -17
View File
@@ -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')
+21 -21
View File
@@ -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:
+15 -16
View File
@@ -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
View File
@@ -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:
+1 -1
View File
@@ -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 -16
View File
@@ -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:
+1 -1
View File
@@ -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)
+17 -17
View File
@@ -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:
+13 -12
View File
@@ -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:
+14 -12
View File
@@ -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:
+14 -13
View File
@@ -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:
+13 -11
View File
@@ -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:
+14 -15
View File
@@ -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)
+18 -16
View File
@@ -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:
+15 -13
View File
@@ -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': {
+15 -21
View File
@@ -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
View File
@@ -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
View File
@@ -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:
+21 -20
View File
@@ -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:
+13 -11
View File
@@ -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:
+13 -20
View File
@@ -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:
+13 -13
View File
@@ -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:
+13 -11
View File
@@ -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:
+13 -19
View File
@@ -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:
+21 -20
View File
@@ -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:
+13 -12
View File
@@ -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
View File
@@ -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:
+26 -53
View File
@@ -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:
+16 -17
View File
@@ -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:
+16 -14
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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:
+3 -3
View File
@@ -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()
+16 -17
View File
@@ -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:
+6 -4
View File
@@ -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
View File
@@ -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:
+14 -17
View File
@@ -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:
+15 -13
View File
@@ -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
View File
@@ -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:
+1 -1
View File
@@ -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 -15
View File
@@ -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:
+18 -18
View File
@@ -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:
+21 -20
View File
@@ -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:
+19 -16
View File
@@ -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:
+20 -19
View File
@@ -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:
+16 -17
View File
@@ -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:
+13 -14
View File
@@ -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 -18
View File
@@ -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
View File
@@ -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
View File
@@ -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:
+19 -14
View File
@@ -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
View File
@@ -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
View File
@@ -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 -23
View File
@@ -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
View File
+23 -19
View File
@@ -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):
+5 -2
View File
@@ -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
View File
@@ -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:
+20 -16
View File
@@ -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:
+20 -21
View File
@@ -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:
+1 -1
View File
@@ -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>
+15 -17
View File
@@ -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