commit
08d49b8c5b
|
@ -451,8 +451,9 @@ class account_journal(osv.osv):
|
|||
'view_id': fields.many2one('account.journal.view', 'View', required=True, help="Gives the view used when writing or browsing entries in this journal. The view tell Open ERP which fields should be visible, required or readonly and in which order. You can create your own view for a faster encoding in each journal."),
|
||||
'default_credit_account_id': fields.many2one('account.account', 'Default Credit Account'),
|
||||
'default_debit_account_id': fields.many2one('account.account', 'Default Debit Account'),
|
||||
'centralisation': fields.boolean('Centralised counterpart', help="Check this box if you want that each entry doesn't create a counterpart but share the same counterpart for each entry of this journal."),
|
||||
'centralisation': fields.boolean('Centralised counterpart', help="Check this box if you want that each entry doesn't create a counterpart but share the same counterpart for each entry of this journal. This is used in fiscal year closing."),
|
||||
'update_posted': fields.boolean('Allow Cancelling Entries'),
|
||||
'group_invoice_lines': fields.boolean('Group invoice lines', help="If this box is cheked, the system will try to group the accouting lines when generating them from invoices."),
|
||||
'sequence_id': fields.many2one('ir.sequence', 'Entry Sequence', help="The sequence gives the display order for a list of journals", required=True),
|
||||
'user_id': fields.many2one('res.users', 'User', help="The responsible user of this journal"),
|
||||
'groups_id': fields.many2many('res.groups', 'account_journal_group_rel', 'journal_id', 'group_id', 'Groups'),
|
||||
|
|
|
@ -61,6 +61,8 @@ class account_move_line(osv.osv):
|
|||
def create_analytic_lines(self, cr, uid, ids, context={}):
|
||||
for obj_line in self.browse(cr, uid, ids, context):
|
||||
if obj_line.analytic_account_id:
|
||||
if not obj_line.journal_id.analytic_journal_id:
|
||||
raise osv.except_osv(_('No Analytic Journal !'),_("You have to define an analytic journal on the '%s' journal!") % (obj_line.journal_id.name,))
|
||||
amt = (obj_line.credit or 0.0) - (obj_line.debit or 0.0)
|
||||
vals_lines={
|
||||
'name': obj_line.name,
|
||||
|
|
|
@ -267,6 +267,8 @@
|
|||
<field name="user_id" groups="base.group_extended"/>
|
||||
<newline/>
|
||||
<field name="centralisation"/>
|
||||
<field name="group_invoice_lines"/>
|
||||
|
||||
<field name="update_posted"/>
|
||||
<field name="entry_posted"/>
|
||||
</page>
|
||||
|
|
|
@ -68,7 +68,7 @@ class account_invoice(osv.osv):
|
|||
tt = type2journal.get(type_inv, 'sale')
|
||||
result = self.pool.get('account.analytic.journal').search(cr, uid, [('type','=',tt)], context=context)
|
||||
if not result:
|
||||
raise osv.except_osv(_('No Analytic Journal !'),("You have to define an analytic journal of type '%s' !") % (tt,))
|
||||
raise osv.except_osv(_('No Analytic Journal !'),_("You have to define an analytic journal of type '%s' !") % (tt,))
|
||||
return result[0]
|
||||
|
||||
def _get_type(self, cr, uid, context={}):
|
||||
|
@ -448,7 +448,7 @@ class account_invoice(osv.osv):
|
|||
ait_obj = self.pool.get('account.invoice.tax')
|
||||
cur_obj = self.pool.get('res.currency')
|
||||
acc_obj = self.pool.get('account.account')
|
||||
self.button_compute(cr, uid, ids, context={}, set_total=True)
|
||||
self.button_compute(cr, uid, ids, context={}, set_total=False)
|
||||
for inv in self.browse(cr, uid, ids):
|
||||
if inv.move_id:
|
||||
continue
|
||||
|
@ -598,14 +598,34 @@ class account_invoice(osv.osv):
|
|||
|
||||
date = inv.date_invoice or time.strftime('%Y-%m-%d')
|
||||
part = inv.partner_id.id
|
||||
|
||||
line = map(lambda x:(0,0,self.line_get_convert(cr, uid, x, part, date, context={})) ,iml)
|
||||
|
||||
if inv.journal_id.group_invoice_lines:
|
||||
line2 = {}
|
||||
for x, y, l in line:
|
||||
tmp = str(l['account_id'])
|
||||
tmp += '-'+str('tax_code_id' in l and l['tax_code_id'] or "False")
|
||||
tmp += '-'+str('product_id' in l and l['product_id'] or "False")
|
||||
tmp += '-'+str('analytic_account_id' in l and l['analytic_account_id'] or "False")
|
||||
|
||||
if tmp in line2:
|
||||
am = line2[tmp]['debit'] - line2[tmp]['credit'] + (l['debit'] - l['credit'])
|
||||
line2[tmp]['debit'] = (am > 0) and am or 0.0
|
||||
line2[tmp]['credit'] = (am < 0) and -am or 0.0
|
||||
line2[tmp]['tax_amount'] += l['tax_amount']
|
||||
line2[tmp]['analytic_lines'] += l['analytic_lines']
|
||||
else:
|
||||
line2[tmp] = l
|
||||
line = []
|
||||
for key, val in line2.items():
|
||||
line.append((0,0,val))
|
||||
|
||||
journal_id = inv.journal_id.id #self._get_journal(cr, uid, {'type': inv['type']})
|
||||
journal = self.pool.get('account.journal').browse(cr, uid, journal_id)
|
||||
if journal.centralisation:
|
||||
raise osv.except_osv(_('UserError'),
|
||||
_('Can not create invoice move on centralized journal'))
|
||||
|
||||
move = {'ref': inv.number, 'line_id': line, 'journal_id': journal_id, 'date': date}
|
||||
period_id=inv.period_id and inv.period_id.id or False
|
||||
if not period_id:
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<wizard string="Invoice + Message"
|
||||
<wizard string="Invoices with Layout and Message"
|
||||
model="account.invoice"
|
||||
name="wizard.notify_message"
|
||||
id="wizard_notify_message"
|
||||
|
@ -9,7 +9,7 @@
|
|||
/>
|
||||
|
||||
<report id="account_invoices_1"
|
||||
string="Invoice"
|
||||
string="Invoices with Layout"
|
||||
model="account.invoice"
|
||||
name="account.invoice.layout"
|
||||
rml="account_invoice_layout/report/report_account_invoice_layout.rml"
|
||||
|
|
|
@ -97,7 +97,7 @@ class account_invoice_with_message(report_sxw.rml_parse):
|
|||
|
||||
def spcl_msg(self, form):
|
||||
account_msg_data = pooler.get_pool(self.cr.dbname).get('notify.message').browse(self.cr, self.uid, form['message'])
|
||||
msg = account_msg_data.msg
|
||||
msg = account_msg_data.msg
|
||||
return msg
|
||||
|
||||
|
||||
|
|
|
@ -292,9 +292,10 @@
|
|||
<font color="white"> </font>
|
||||
</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('table') ]]</para>
|
||||
|
||||
<para style="P19">[[ note or removeParentNode('para') ]]</para>
|
||||
</section>
|
||||
</story>
|
||||
</document>
|
||||
|
||||
|
|
|
@ -43,6 +43,7 @@ Basic Accounting, plus new things which available are:
|
|||
],
|
||||
|
||||
"update_xml" : [
|
||||
"security/ir.model.access.csv",
|
||||
"account_voucher_sequence.xml",
|
||||
"account_view.xml",
|
||||
"account_report.xml",
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
|
||||
"access_account_voucher_user","account.voucher","model_account_voucher","account.group_account_user",1,0,0,0
|
||||
"access_account_voucher_line_user","account.voucher.line","model_account_voucher_line","account.group_account_user",1,0,0,0
|
||||
"access_account_voucher_manager","account.voucher","model_account_voucher","account.group_account_manager",1,1,1,1
|
||||
"access_account_voucher_line_manager","account.voucher.line","model_account_voucher_line","account.group_account_manager",1,1,1,1
|
||||
|
|
|
@ -22,8 +22,14 @@
|
|||
{
|
||||
"name" : "Auction module",
|
||||
"version" : "1.0",
|
||||
"author" : "Tiny",
|
||||
"category" : "Generic Modules/Auction",
|
||||
"depends" : ["base","account","hr_attendance"],
|
||||
"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",
|
||||
|
|
|
@ -25,9 +25,8 @@ from osv.osv import osv, orm
|
|||
from report.interface import report_rml
|
||||
#FIXME: use the one from tools and delete the one from report
|
||||
from report.int_to_text import int_to_text
|
||||
|
||||
def toxml(val):
|
||||
return val.replace('&', '&').replace('<','<').replace('>','>').decode('utf-8').encode('latin1', 'replace')
|
||||
from tools import to_xml as toxml
|
||||
from tools import ustr
|
||||
|
||||
class report_custom(report_rml):
|
||||
def __init__(self, name, table, tmpl, xsl):
|
||||
|
@ -38,7 +37,7 @@ class report_custom(report_rml):
|
|||
lots = pool.get('auction.lots').browse(cr, uid, ids)
|
||||
auction = lots[0].auction_id
|
||||
|
||||
xml = '''<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
xml = '''<?xml version="1.0" encoding="UTF-8"?>
|
||||
<report>
|
||||
<auction>
|
||||
<name>%s</name>
|
||||
|
@ -49,7 +48,7 @@ class report_custom(report_rml):
|
|||
for l in lots:
|
||||
# l['id_cont'] = str(i)
|
||||
if l['obj_price']==0:
|
||||
price_french = 'retiré'
|
||||
price_french = u'retiré'
|
||||
else:
|
||||
price_french = int_to_text(int(l['obj_price'] or 0.0))+' eur'
|
||||
i+=1
|
||||
|
@ -59,10 +58,9 @@ class report_custom(report_rml):
|
|||
<lot_desc>%s</lot_desc>
|
||||
<price>%s</price>
|
||||
<obj_price>%s</obj_price>
|
||||
</object>''' % (i, l['obj_num'], toxml(l['name']), price_french, str(l['obj_price'] or '/'))
|
||||
</object>''' % (i, l['obj_num'], ustr(toxml(l['name'])), ustr(price_french), ustr(l['obj_price'] or '/'))
|
||||
xml += '</report>'
|
||||
|
||||
# file('/tmp/terp.xml','wb+').write(xml)
|
||||
return xml
|
||||
|
||||
report_custom('report.flagey.huissier', 'auction.lots', '', 'addons/auction/report/huissier.xsl')
|
||||
|
|
|
@ -63,6 +63,7 @@
|
|||
"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" : [],
|
||||
|
|
|
@ -37,6 +37,7 @@ With this module:
|
|||
""",
|
||||
"demo_xml" : [],
|
||||
"update_xml" : [
|
||||
"security/ir.model.access.csv",
|
||||
"mrp_subproduct_view.xml",
|
||||
],
|
||||
"active": False,
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
|
||||
"access_mrp_subproduct_user","mrp.subproduct","model_mrp_subproduct","mrp.group_mrp_user",1,0,0,0
|
||||
"access_mrp_subproduct_manager","mrp.subproduct","model_mrp_subproduct","mrp.group_mrp_manager",1,1,1,1
|
|
|
@ -91,11 +91,15 @@ class product_pricelist(osv.osv):
|
|||
'version_id': fields.one2many('product.pricelist.version', 'pricelist_id', 'Pricelist Versions'),
|
||||
'currency_id': fields.many2one('res.currency', 'Currency', required=True),
|
||||
}
|
||||
|
||||
def name_get(self, cr, uid, ids, context={}):
|
||||
result= {}
|
||||
result= []
|
||||
|
||||
for pl in self.browse(cr, uid, ids, context):
|
||||
result[pl.id] = pl.name + ' ('+ pl.currency_id.name + ')'
|
||||
name = str(pl.name) + ' ('+ str(pl.currency_id.name) + ')'
|
||||
result.append((pl.id,name))
|
||||
return result
|
||||
|
||||
|
||||
def _get_currency(self, cr, uid, ctx):
|
||||
comp = self.pool.get('res.users').browse(cr,uid,uid).company_id
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
"version":"1.0",
|
||||
"author":"Tiny",
|
||||
"category":"Profile",
|
||||
"description": "Profile for Accounting",
|
||||
"depends":["account","report_analytic","board_account","account_followup"],
|
||||
"demo_xml":[],
|
||||
"update_xml":[
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
"version":"0.1",
|
||||
"author":"Tiny",
|
||||
"category":"Profile",
|
||||
"description": "Profile for Associates",
|
||||
"depends":["membership", "board_association"],
|
||||
"demo_xml":[],
|
||||
"update_xml":[
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
"version":"1.0",
|
||||
"author":"Tiny",
|
||||
"category":"Profile",
|
||||
"description": "Profile for Auction house",
|
||||
"depends":["auction", "board_auction","account","hr_timesheet_sheet"],
|
||||
"demo_xml":[],
|
||||
"update_xml":[],
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
"version":"1.0",
|
||||
"author":"Tiny",
|
||||
"category":"Profile",
|
||||
"description": "Profile for CRM",
|
||||
"depends":[
|
||||
"crm_vertical", "board_crm_configuration",
|
||||
],
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
"version":"1.0",
|
||||
"author":"Tiny",
|
||||
"category":"Profile",
|
||||
"description": "Profile for manufacturing industries",
|
||||
"depends":["mrp", "sale", "delivery","board_manufacturing","product_margin"],
|
||||
"demo_xml":[],
|
||||
"update_xml":[
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
"version":"1.0",
|
||||
"author":"Tiny",
|
||||
"category":"Profile",
|
||||
"description": "Profile for service companies",
|
||||
"depends":[
|
||||
"hr",
|
||||
"project",
|
||||
|
|
|
@ -33,7 +33,7 @@ class wiz_timebox_open(wizard.interface):
|
|||
pool = pooler.get_pool(cr.dbname)
|
||||
ids = pool.get('project.gtd.timebox').search(cr, uid, [('user_id','=',uid),('type','=',tbtype)])
|
||||
if not len(ids):
|
||||
raise wizard.except_wizard('Error !', 'No timebox of the type "%s" defined !')
|
||||
raise wizard.except_wizard('Error !', 'No timebox of the type "%s" defined !' % (tbtype,))
|
||||
view_type = 'form,tree'
|
||||
if len(ids) >= 1:
|
||||
domain = "[('id','in',["+','.join(map(str,ids))+"])]"
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
"website" : "http://www.openerp.com",
|
||||
"depends" : ["base", "account", "stock", "process"],
|
||||
"category" : "Generic Modules/Sales & Purchases",
|
||||
"description": "Module for purchase management",
|
||||
"init_xml" : [],
|
||||
"demo_xml" : ["purchase_demo.xml",
|
||||
#"purchase_unit_test.xml"
|
||||
|
|
|
@ -20,12 +20,14 @@
|
|||
#
|
||||
##############################################################################
|
||||
{
|
||||
"name" : "Sales Management - Reporting",
|
||||
"name" : "Purchase Management - Reporting",
|
||||
"version" : "1.0",
|
||||
"author" : "Tiny",
|
||||
"website" : "http://www.openerp.com",
|
||||
"depends" : ["purchase"],
|
||||
"category" : "Generic Modules/Sales & Purchases",
|
||||
"description": '''Module to add views like
|
||||
Purchase By Product, Purchase By Category of Product, All Months, Current Month.''',
|
||||
"init_xml" : [],
|
||||
"demo_xml" : [],
|
||||
"update_xml" : [
|
||||
|
|
|
@ -24,6 +24,8 @@
|
|||
"version" : "1.0",
|
||||
"author" : "Tiny",
|
||||
"website" : "http://www.openerp.com",
|
||||
"description": '''Module to add timesheet views like
|
||||
All Month, Timesheet By User, Timesheet Of Month, Timesheet By Account''',
|
||||
"depends" : ["hr_timesheet",'hr_timesheet_invoice'],
|
||||
"category" : "Generic Modules/Human Resources",
|
||||
"init_xml" : [],
|
||||
|
|
|
@ -26,6 +26,10 @@
|
|||
"website" : "http://www.openerp.com",
|
||||
"depends" : ["product", "account"],
|
||||
"category" : "Generic Modules/Inventory Control",
|
||||
"description": '''Module provides Inventory Management, define warehouse, stock location, Pickings,
|
||||
Incoming products, Outgoing products, Internal movements of product, Traceability.
|
||||
Reports for stock like lots by location, Stock Forecast, Item Labels, Picking List etc..
|
||||
''',
|
||||
"init_xml" : [],
|
||||
"demo_xml" : ["stock_demo.xml"],
|
||||
"update_xml" : [
|
||||
|
|
|
@ -1062,20 +1062,16 @@ class stock_move(osv.osv):
|
|||
if move.state in ('confirmed','waiting','assigned','draft'):
|
||||
if move.picking_id:
|
||||
pickings[move.picking_id.id] = True
|
||||
if move.move_dest_id and move.move_dest_id.state=='waiting':
|
||||
self.write(cr, uid, [move.move_dest_id.id], {'state':'assigned'})
|
||||
if move.move_dest_id.picking_id:
|
||||
wf_service = netsvc.LocalService("workflow")
|
||||
wf_service.trg_write(uid, 'stock.picking', move.move_dest_id.picking_id.id, cr)
|
||||
if move.move_dest_id and move.move_dest_id.state=='waiting':
|
||||
self.write(cr, uid, [move.move_dest_id.id], {'state':'assigned'})
|
||||
if move.move_dest_id.picking_id:
|
||||
wf_service = netsvc.LocalService("workflow")
|
||||
wf_service.trg_write(uid, 'stock.picking', move.move_dest_id.picking_id.id, cr)
|
||||
self.write(cr, uid, ids, {'state':'cancel', 'move_dest_id': False})
|
||||
|
||||
#for pick_id in pickings:
|
||||
# wf_service = netsvc.LocalService("workflow")
|
||||
# wf_service.trg_validate(uid, 'stock.picking', pick_id, 'button_cancel', cr)
|
||||
#ids2 = []
|
||||
#for res in self.read(cr, uid, ids, ['move_dest_id']):
|
||||
# if res['move_dest_id']:
|
||||
# ids2.append(res['move_dest_id'][0])
|
||||
for pick in self.pool.get('stock.picking').browse(cr,uid,pickings.keys()):
|
||||
if all(move.state == 'cancle' for move in pick.move_lines):
|
||||
self.pool.get('stock.picking').write(cr,uid,[pick.id],{'state':'cancel'})
|
||||
|
||||
wf_service = netsvc.LocalService("workflow")
|
||||
for id in ids:
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
"version" : "1.0",
|
||||
"author" : "Tiny",
|
||||
"category" : "Generic Modules/Others",
|
||||
"description": '''Module allows to create new documents and add subscription on that document.''',
|
||||
"depends" : ["base"],
|
||||
"init_xml" : [],
|
||||
"demo_xml" : [],
|
||||
|
|
|
@ -3,4 +3,6 @@
|
|||
"wiki_groups_all","wiki.groups","model_wiki_groups",,1,0,0,0
|
||||
"wiki_wiki","wiki.wiki","model_wiki_wiki","base.group_user",1,1,1,1
|
||||
"wiki_groups","wiki.groups","model_wiki_groups","base.group_system",1,1,1,1
|
||||
"wiki_groups_link","wiki.groups.link","model_wiki_groups_link","base.group_system",1,1,1,1
|
||||
"wiki_wiki_history","wiki.wiki.history","model_wiki_wiki_history","base.group_user",1,0,1,0
|
||||
"wiki_wizard_wiki_history_show_diff","wizard.wiki.history.show_diff","model_wizard_wiki_history_show_diff","base.group_user",1,1,1,1
|
||||
|
|
|
Loading…
Reference in New Issue