[MERGE] branch merged with lp:~openerp-dev/openobject-addons/sbh-dev-addons1
bzr revid: mso@mso-20100528151342-s0smffzl985lnbll
This commit is contained in:
commit
95f802c4e7
|
@ -110,6 +110,7 @@
|
|||
</form>
|
||||
</field>
|
||||
</page>
|
||||
|
||||
<page string="Notes" >
|
||||
<field colspan="4" name="note" nolabel="1"/>
|
||||
</page>
|
||||
|
|
|
@ -62,6 +62,14 @@ class add_product(osv.osv_memory):
|
|||
'type': 'ir.actions.act_window',
|
||||
}
|
||||
def close_action(self, cr, uid, ids, context):
|
||||
"""
|
||||
To get the product and Make the payment .
|
||||
@param self: The object pointer.
|
||||
@param cr: A database cursor
|
||||
@param uid: ID of the user currently logged in
|
||||
@param context: A standard dictionary
|
||||
@return : Return the Make Payment
|
||||
"""
|
||||
|
||||
record_id = context and context.get('active_id', False)
|
||||
order_obj= self.pool.get('pos.order')
|
||||
|
|
|
@ -37,6 +37,14 @@ class pos_discount(osv.osv_memory):
|
|||
|
||||
|
||||
def view_init(self, cr, uid, fields_list, context=None):
|
||||
"""
|
||||
Creates view dynamically and adding fields at runtime.
|
||||
@param self: The object pointer.
|
||||
@param cr: A database cursor
|
||||
@param uid: ID of the user currently logged in
|
||||
@param context: A standard dictionary
|
||||
@return: New arch of view with new columns.
|
||||
"""
|
||||
res = super(pos_discount, self).view_init(cr, uid, fields_list, context=context)
|
||||
record_id = context and context.get('active_id', False) or False
|
||||
order = self.pool.get('pos.order').browse(cr, uid, record_id)
|
||||
|
|
|
@ -124,6 +124,7 @@ class pos_make_payment(osv.osv_memory):
|
|||
return result
|
||||
|
||||
def check(self, cr, uid, ids, context):
|
||||
|
||||
"""Check the order:
|
||||
if the order is not paid: continue payment,
|
||||
if the order is paid print invoice (if wanted) or ticket.
|
||||
|
@ -168,6 +169,10 @@ class pos_make_payment(osv.osv_memory):
|
|||
|
||||
|
||||
def create_invoice(self, cr, uid, ids, context):
|
||||
|
||||
"""
|
||||
Create a invoice
|
||||
"""
|
||||
wf_service = netsvc.LocalService("workflow")
|
||||
active_ids = [context and context.get('active_id',False)]
|
||||
for i in active_ids:
|
||||
|
@ -180,8 +185,6 @@ class pos_make_payment(osv.osv_memory):
|
|||
}
|
||||
|
||||
def print_report(self, cr, uid, ids, context=None):
|
||||
if not context:
|
||||
context={}
|
||||
"""
|
||||
@summary: To get the date and print the report
|
||||
@param self: The object pointer.
|
||||
|
@ -189,7 +192,9 @@ class pos_make_payment(osv.osv_memory):
|
|||
@param uid: ID of the user currently logged in
|
||||
@param context: A standard dictionary
|
||||
@return : retrun report
|
||||
"""
|
||||
"""
|
||||
if not context:
|
||||
context={}
|
||||
active_id=context.get('active_id',[])
|
||||
datas = {'ids' : [active_id]}
|
||||
res = {}
|
||||
|
|
|
@ -26,9 +26,6 @@ import time
|
|||
|
||||
|
||||
class pos_payment_report_date(osv.osv_memory):
|
||||
'''
|
||||
Open ERP Model
|
||||
'''
|
||||
_name = 'pos.payment.report.date'
|
||||
_description = 'POS Payment Report according to date'
|
||||
def print_report(self, cr, uid, ids, context=None):
|
||||
|
|
|
@ -25,9 +25,6 @@ from osv import fields
|
|||
|
||||
|
||||
class pos_payment_report_user(osv.osv_memory):
|
||||
'''
|
||||
Open ERP Model
|
||||
'''
|
||||
_name = 'pos.payment.report.user'
|
||||
_description = 'Sales lines by Users'
|
||||
def print_report(self, cr, uid, ids, context=None):
|
||||
|
|
|
@ -32,6 +32,14 @@ class pos_receipt(osv.osv_memory):
|
|||
}
|
||||
|
||||
def view_init(self, cr, uid, fields_list, context=None):
|
||||
"""
|
||||
Creates view dynamically and adding fields at runtime.
|
||||
@param self: The object pointer.
|
||||
@param cr: A database cursor
|
||||
@param uid: ID of the user currently logged in
|
||||
@param context: A standard dictionary
|
||||
@return: New arch of view with new columns.
|
||||
"""
|
||||
order_lst = self. pool.get('pos.order').browse(cr, uid, context['active_id'])
|
||||
for order in order_lst:
|
||||
if order.state_2 in ('to_verify'):
|
||||
|
|
|
@ -63,6 +63,14 @@ class pos_return(osv.osv_memory):
|
|||
return res
|
||||
|
||||
def view_init(self, cr, uid, fields_list, context=None):
|
||||
"""
|
||||
Creates view dynamically and adding fields at runtime.
|
||||
@param self: The object pointer.
|
||||
@param cr: A database cursor
|
||||
@param uid: ID of the user currently logged in
|
||||
@param context: A standard dictionary
|
||||
@return: New arch of view with new columns.
|
||||
"""
|
||||
res = super(pos_return, self).view_init(cr, uid, fields_list, context=context)
|
||||
order_obj=self.pool.get('pos.order')
|
||||
if not context:
|
||||
|
@ -77,6 +85,18 @@ class pos_return(osv.osv_memory):
|
|||
return res
|
||||
|
||||
def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False,submenu=False):
|
||||
|
||||
"""
|
||||
Changes the view dynamically
|
||||
|
||||
@param self: The object pointer.
|
||||
@param cr: A database cursor
|
||||
@param uid: ID of the user currently logged in
|
||||
@param context: A standard dictionary
|
||||
|
||||
@return: New arch of view.
|
||||
|
||||
"""
|
||||
result = super(pos_return, self).fields_view_get(cr, uid, view_id, view_type, context, toolbar,submenu)
|
||||
if not context:
|
||||
context={}
|
||||
|
@ -123,6 +143,15 @@ class pos_return(osv.osv_memory):
|
|||
|
||||
|
||||
def create_returns(self, cr, uid, data, context):
|
||||
"""
|
||||
@param self: The object pointer.
|
||||
@param cr: A database cursor
|
||||
@param uid: ID of the user currently logged in
|
||||
@param context: A standard dictionary
|
||||
|
||||
@return: Return the add product form again for adding more product
|
||||
|
||||
"""
|
||||
return {
|
||||
'name': _('Add Product'),
|
||||
'view_type': 'form',
|
||||
|
|
|
@ -44,7 +44,7 @@
|
|||
'process/procurement_process.xml',
|
||||
"company_view.xml",
|
||||
],
|
||||
'demo_xml': ['stock_orderpoint.xml'],
|
||||
# 'demo_xml': ['stock_orderpoint.xml'],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
'certificate': '',
|
||||
|
|
|
@ -215,7 +215,7 @@ class product_category(osv.osv):
|
|||
relation='account.account',
|
||||
string="Stock variation Account",
|
||||
method=True,
|
||||
view_load=True,),
|
||||
view_load=True, help="This account will be used in product when valuation type is real-time valuation ",),
|
||||
}
|
||||
|
||||
|
||||
|
@ -467,7 +467,7 @@ class product_product(osv.osv):
|
|||
'pricelist_id': fields.dummy(string='Pricelist',relation='product.pricelist', type='many2one'),
|
||||
'valuation':fields.selection([('manual_periodic','Manual Periodic Valuation'),
|
||||
('real_time','Real Time valuation'),
|
||||
('','')],'Valuation'),
|
||||
('','')],'Valuation',help="Decide if the system must automatically creates account moves based on stock moves"),
|
||||
}
|
||||
|
||||
def onchange_uom(self, cursor, user, ids, uom_id,uom_po_id):
|
||||
|
|
|
@ -610,7 +610,8 @@ class stock_picking(osv.osv):
|
|||
picking_obj = self.browse(cr, uid, [id], context)[0]
|
||||
if ('name' not in default) or (picking_obj.name=='/'):
|
||||
seq_obj_name = 'stock.picking.' + picking_obj.type
|
||||
default['name'] = self.pool.get('ir.sequence').get(cr, uid, seq_obj_name)
|
||||
default['name'] = self.pool.get('ir.sequence').get(cr, uid, seq_obj_name)
|
||||
|
||||
return super(stock_picking, self).copy(cr, uid, id, default, context)
|
||||
|
||||
def onchange_partner_in(self, cr, uid, context, partner_id=None):
|
||||
|
@ -1742,8 +1743,12 @@ class stock_move(osv.osv):
|
|||
"""
|
||||
track_flag = False
|
||||
picking_ids = []
|
||||
lines=[]
|
||||
sale=[]
|
||||
purchase=[]
|
||||
product_uom_obj = self.pool.get('product.uom')
|
||||
price_type_obj = self.pool.get('product.price.type')
|
||||
product_obj=self.pool.get('product.product')
|
||||
move_obj = self.pool.get('account.move')
|
||||
for move in self.browse(cr, uid, ids):
|
||||
if move.picking_id: picking_ids.append(move.picking_id.id)
|
||||
|
@ -1766,87 +1771,75 @@ class stock_move(osv.osv):
|
|||
acc_src = None
|
||||
acc_dest = None
|
||||
if move.product_id.valuation=='real_time':
|
||||
|
||||
journal_id = move.product_id.categ_id.property_stock_journal and move.product_id.categ_id.property_stock_journal.id or False
|
||||
if(move.location_id.usage=='internal' and move.location_dest_id.usage=='internal' and move.location_id.company_id.id!=move.location_dest_id.company_id.id) or ( move.location_id.usage=='internal' or move.location_dest_id.usage=='internal'):
|
||||
test = [('product.product', move.product_id.id)]
|
||||
if move.product_id.categ_id:
|
||||
test.append( ('product.category', move.product_id.categ_id.id) )
|
||||
if not acc_src:
|
||||
acc_src = move.product_id.product_tmpl_id.\
|
||||
property_stock_account_input.id
|
||||
if not acc_src:
|
||||
acc_src = move.product_id.categ_id.\
|
||||
property_stock_account_input_categ.id
|
||||
if not acc_src:
|
||||
accounts=product_obj.get_product_accounts(cr,uid,move.product_id.id,context)
|
||||
account_variation = move.product_id.categ_id.property_stock_variation.id
|
||||
acc_src=accounts['stock_account_input']
|
||||
acc_dest=accounts['stock_account_output']
|
||||
journal_id=accounts['stock_journal']
|
||||
if not acc_src:
|
||||
raise osv.except_osv(_('Error!'),
|
||||
_('There is no stock input account defined ' \
|
||||
'for this product: "%s" (id: %d)') % \
|
||||
(move.product_id.name,
|
||||
move.product_id.id,))
|
||||
if not acc_dest:
|
||||
acc_dest = move.product_id.product_tmpl_id.\
|
||||
property_stock_account_output.id
|
||||
if not acc_dest:
|
||||
acc_dest = move.product_id.categ_id.\
|
||||
property_stock_account_output_categ.id
|
||||
if not acc_dest:
|
||||
if not acc_dest:
|
||||
raise osv.except_osv(_('Error!'),
|
||||
_('There is no stock output account defined ' \
|
||||
'for this product: "%s" (id: %d)') % \
|
||||
(move.product_id.name,
|
||||
move.product_id.id,))
|
||||
if not move.product_id.categ_id.property_stock_journal.id:
|
||||
if not journal_id:
|
||||
raise osv.except_osv(_('Error!'),
|
||||
_('There is no journal defined '\
|
||||
'on the product category: "%s" (id: %d)') % \
|
||||
(move.product_id.categ_id.name,
|
||||
move.product_id.categ_id.id,))
|
||||
journal_id = move.product_id.categ_id.property_stock_journal.id
|
||||
if acc_src != acc_dest:
|
||||
ref = move.picking_id and move.picking_id.name or False
|
||||
default_uom = move.product_id.uom_id.id
|
||||
date = time.strftime('%Y-%m-%d')
|
||||
q = product_uom_obj._compute_qty(cr, uid, move.product_uom.id, move.product_qty, default_uom)
|
||||
if move.product_id.cost_method == 'average' and move.price_unit:
|
||||
amount = q * move.price_unit
|
||||
# Base computation on valuation price type
|
||||
else:
|
||||
company_id = move.company_id.id
|
||||
context['currency_id'] = move.company_id.currency_id.id
|
||||
pricetype = price_type_obj.browse(cr,uid,move.company_id.property_valuation_price_type.id)
|
||||
amount_unit = move.product_id.price_get(pricetype.field, context)[move.product_id.id]
|
||||
amount = amount_unit * q or 1.0
|
||||
# amount = q * move.product_id.standard_price
|
||||
|
||||
partner_id = False
|
||||
if move.picking_id:
|
||||
partner_id = move.picking_id.address_id and (move.picking_id.address_id.partner_id and move.picking_id.address_id.partner_id.id or False) or False
|
||||
lines = [
|
||||
(0, 0, {
|
||||
'name': move.name,
|
||||
'quantity': move.product_qty,
|
||||
'product_id': move.product_id and move.product_id.id or False,
|
||||
'credit': amount,
|
||||
'account_id': acc_src,
|
||||
'ref': ref,
|
||||
'date': date,
|
||||
'partner_id': partner_id}),
|
||||
(0, 0, {
|
||||
'name': move.name,
|
||||
'product_id': move.product_id and move.product_id.id or False,
|
||||
'quantity': move.product_qty,
|
||||
'debit': amount,
|
||||
'account_id': acc_dest,
|
||||
'ref': ref,
|
||||
'date': date,
|
||||
'partner_id': partner_id})
|
||||
]
|
||||
move_obj.create(cr, uid, {
|
||||
'name': move.name,
|
||||
'journal_id': journal_id,
|
||||
'line_id': lines,
|
||||
'ref': ref,
|
||||
})
|
||||
if not account_variation:
|
||||
raise osv.except_osv(_('Error!'),
|
||||
_('There is no variation account defined '\
|
||||
'on the product category: "%s" (id: %d)') % \
|
||||
(move.product_id.categ_id.name,
|
||||
move.product_id.categ_id.id,))
|
||||
if acc_src != acc_dest:
|
||||
default_uom = move.product_id.uom_id.id
|
||||
q = product_uom_obj._compute_qty(cr, uid, move.product_uom.id, move.product_qty, default_uom)
|
||||
if move.product_id.cost_method == 'average' and move.price_unit:
|
||||
amount = q * move.price_unit
|
||||
# Base computation on valuation price type
|
||||
else:
|
||||
company_id = move.company_id.id
|
||||
context['currency_id'] = move.company_id.currency_id.id
|
||||
pricetype = price_type_obj.browse(cr,uid,move.company_id.property_valuation_price_type.id)
|
||||
amount_unit = move.product_id.price_get(pricetype.field, context)[move.product_id.id]
|
||||
amount = amount_unit * q or 1.0
|
||||
# amount = q * move.product_id.standard_price
|
||||
partner_id = False
|
||||
if move.picking_id:
|
||||
|
||||
if (move.location_id.usage=='internal' and move.location_dest_id.usage=='customer') or \
|
||||
(move.location_id.usage=='internal' and move.location_dest_id.usage=='internal'\
|
||||
and move.location_id.company_id.id!=move.location_dest_id.company_id.id):
|
||||
sale.append(self.create_account_move(cr,uid,move,acc_dest ,account_variation ,amount,context))
|
||||
|
||||
if (move.location_id.usage =='supplier' and move.location_dest_id.usage=='internal') or\
|
||||
(move.location_id.usage=='internal' and move.location_dest_id.usage=='internal'\
|
||||
and move.location_id.company_id.id!=move.location_dest_id.company_id.id):
|
||||
|
||||
purchase.append(self.create_account_move(cr,uid,move,account_variation, acc_src ,amount,context))
|
||||
|
||||
|
||||
lines.append(purchase and purchase[0] )
|
||||
lines.append( sale and sale[0])
|
||||
|
||||
move_obj.create(cr, uid, {
|
||||
'name': move.name,
|
||||
'journal_id': journal_id,
|
||||
'type':'cont_voucher',
|
||||
'line_id': len(lines)==2 and lines[0] +lines[1] or lines,
|
||||
'ref': move.picking_id and move.picking_id.name,
|
||||
})
|
||||
tracking_lot = False
|
||||
if context:
|
||||
tracking_lot = context.get('tracking_lot', False)
|
||||
|
@ -1865,7 +1858,31 @@ class stock_move(osv.osv):
|
|||
for id in ids:
|
||||
wf_service.trg_trigger(uid, 'stock.move', id, cr)
|
||||
return True
|
||||
|
||||
|
||||
def create_account_move(self, cr, uid, move,account_id,account_variation,amount, context=None):
|
||||
|
||||
partner_id = move.picking_id.address_id and (move.picking_id.address_id.partner_id and move.picking_id.address_id.partner_id.id or False) or False
|
||||
lines=[(0, 0, {
|
||||
'name': move.name,
|
||||
'quantity': move.product_qty,
|
||||
'product_id': move.product_id and move.product_id.id or False,
|
||||
'credit': amount,
|
||||
'account_id': account_id,
|
||||
'ref': move.picking_id and move.picking_id.name or False,
|
||||
'date': time.strftime('%Y-%m-%d') ,
|
||||
'partner_id': partner_id,
|
||||
}),
|
||||
(0, 0, {
|
||||
'name': move.name,
|
||||
'product_id': move.product_id and move.product_id.id or False,
|
||||
'quantity': move.product_qty,
|
||||
'debit': amount,
|
||||
'account_id': account_variation,
|
||||
'ref': move.picking_id and move.picking_id.name or False,
|
||||
'date': time.strftime('%Y-%m-%d') ,
|
||||
'partner_id': partner_id,
|
||||
})]
|
||||
return lines
|
||||
def unlink(self, cr, uid, ids, context=None):
|
||||
if context is None:
|
||||
context = {}
|
||||
|
|
|
@ -757,7 +757,7 @@
|
|||
<form string="Picking list">
|
||||
<group col="6" colspan="4">
|
||||
<field name="name" readonly="1"/>
|
||||
<field name="address_id"/>
|
||||
<field name="address_id" required="1"/>
|
||||
<field name="origin"/>
|
||||
<field name="backorder_id" groups="base.group_extended" readonly="1"/>
|
||||
<field name="date" />
|
||||
|
@ -937,7 +937,7 @@
|
|||
<field name="arch" type="xml">
|
||||
<form string="Picking list">
|
||||
<group col="6" colspan="4">
|
||||
<field name="address_id"/>
|
||||
<field name="address_id" required="1" />
|
||||
<field name="min_date"/>
|
||||
<field name="name" readonly="1"/>
|
||||
<field name="invoice_state"/>
|
||||
|
@ -1119,7 +1119,7 @@
|
|||
<group colspan="4" col="6">
|
||||
|
||||
<field name="name" readonly="1"/>
|
||||
<field name="address_id" on_change="onchange_partner_in(address_id)" context="{'contact_display':'partner'}" />
|
||||
<field name="address_id" on_change="onchange_partner_in(address_id)" context="{'contact_display':'partner'}" required="1" />
|
||||
<field name="origin"/>
|
||||
<field name="backorder_id" readonly="1" groups="base.group_extended"/>
|
||||
<field name="date"/>
|
||||
|
|
Loading…
Reference in New Issue