bzr revid: hmo@tinyerp.com-20100820113529-1bstkeul53fclvmr
This commit is contained in:
Harry (OpenERP) 2010-08-20 17:05:29 +05:30
commit ac330c97e3
5 changed files with 42 additions and 46 deletions

View File

@ -67,14 +67,12 @@ Main features :
'report/report_pos_order_view.xml', 'report/report_pos_order_view.xml',
'report/report_cash_register_view.xml', 'report/report_cash_register_view.xml',
'pos_sequence.xml', 'pos_sequence.xml',
'posrule_data.xml',
'pos_data.xml', 'pos_data.xml',
'pos_workflow.xml', 'pos_workflow.xml',
'statement_view.xml', 'statement_view.xml',
'statement_report.xml', 'statement_report.xml',
'statement_data.xml',
], ],
'demo_xml': ['pos_demo.xml','singer_statement_demo.xml','multi_company_stock_data.xml'], 'demo_xml': ['pos_demo.xml','singer_statement_demo.xml','multi_company_stock_data.xml',],
'test':['test/pos_test.yml',], 'test':['test/pos_test.yml',],
'installable': True, 'installable': True,
} }

View File

@ -64,15 +64,14 @@ class pos_order(osv.osv):
_order = "date_order desc" _order = "date_order desc"
def unlink(self, cr, uid, ids, context={}): def unlink(self, cr, uid, ids, context=None):
for rec in self.browse(cr, uid, ids, context=context): for rec in self.browse(cr, uid, ids, context=context):
for rec_statement in rec.statement_ids: for rec_statement in rec.statement_ids:
if (rec_statement.statement_id and rec_statement.statement_id.state=='confirm') or rec.state=='done': if (rec_statement.statement_id and rec_statement.statement_id.state=='confirm') or rec.state=='done':
raise osv.except_osv(_('Invalid action !'), _('Cannot delete a point of sale which is closed or contains confirmed cashboxes!')) raise osv.except_osv(_('Invalid action !'), _('Cannot delete a point of sale which is closed or contains confirmed cashboxes!'))
return super(pos_order, self).unlink(cr, uid, ids, context=context) return super(pos_order, self).unlink(cr, uid, ids, context=context)
def onchange_partner_pricelist(self, cr, uid, ids, part, context={}): def onchange_partner_pricelist(self, cr, uid, ids, part, context=None):
""" Changed price list on_change of partner_id""" """ Changed price list on_change of partner_id"""
@ -81,7 +80,7 @@ class pos_order(osv.osv):
pricelist = self.pool.get('res.partner').browse(cr, uid, part).property_product_pricelist.id pricelist = self.pool.get('res.partner').browse(cr, uid, part).property_product_pricelist.id
return {'value':{'pricelist_id': pricelist}} return {'value':{'pricelist_id': pricelist}}
def _amount_total(self, cr, uid, ids, field_name, arg, context): def _amount_total(self, cr, uid, ids, field_name, arg, context=None):
""" Calculates amount_tax of order line """ Calculates amount_tax of order line
@param field_names: Names of fields. @param field_names: Names of fields.
@ -226,8 +225,7 @@ class pos_order(osv.osv):
return res[0] return res[0]
else: else:
return False return False
def copy(self, cr, uid, id, default=None, context={}): def copy(self, cr, uid, id, default=None, context=None):
if not default: if not default:
default = {} default = {}
default.update({ default.update({
@ -334,8 +332,7 @@ class pos_order(osv.osv):
else: else:
return False return False
def _journal_default(self, cr, uid, context={}): def _journal_default(self, cr, uid, context=None):
""" To get default pricelist for the order" """ To get default pricelist for the order"
@param name: Names of fields. @param name: Names of fields.
@return: journal ID @return: journal ID
@ -364,9 +361,8 @@ class pos_order(osv.osv):
} }
def test_order_lines(self, cr, uid, order, context={}): def test_order_lines(self, cr, uid, order, context=None):
""" Test order line is created or not for the order "
""" Test order line is created or not for the order "
@param name: Names of fields. @param name: Names of fields.
@return: True @return: True
""" """
@ -377,7 +373,7 @@ class pos_order(osv.osv):
wf_service.trg_validate(uid, 'pos.order', order.id, 'paid', cr) wf_service.trg_validate(uid, 'pos.order', order.id, 'paid', cr)
return True return True
def dummy_button(self, cr, uid, order, context={}): def dummy_button(self, cr, uid, order, context=None):
return True return True
def test_paid(self, cr, uid, ids, context=None): def test_paid(self, cr, uid, ids, context=None):
@ -457,11 +453,12 @@ class pos_order(osv.osv):
# delete it in the new picking: # delete it in the new picking:
line.unlink(context=context) line.unlink(context=context)
def create_picking(self, cr, uid, ids, context={}): def create_picking(self, cr, uid, ids, context=None):
"""Create a picking for each order and validate it.""" """Create a picking for each order and validate it."""
picking_obj = self.pool.get('stock.picking') picking_obj = self.pool.get('stock.picking')
property_obj=self.pool.get("ir.property")
move_obj=self.pool.get('stock.move')
pick_name=self.pool.get('ir.sequence').get(cr, uid, 'stock.picking.out') pick_name=self.pool.get('ir.sequence').get(cr, uid, 'stock.picking.out')
orders = self.browse(cr, uid, ids, context) orders = self.browse(cr, uid, ids, context)
for order in orders: for order in orders:
@ -494,8 +491,8 @@ class pos_order(osv.osv):
for line in order.lines: for line in order.lines:
if line.product_id and line.product_id.type=='service': if line.product_id and line.product_id.type=='service':
continue continue
prop_ids = self.pool.get("ir.property").search(cr, uid, [('name', '=', 'property_stock_customer')]) prop_ids = property_obj.search(cr, uid, [('name', '=', 'property_stock_customer')])
val = self.pool.get("ir.property").browse(cr, uid, prop_ids[0]).value_reference val = property_obj.browse(cr, uid, prop_ids[0]).value_reference
cr.execute("select s.id from stock_location s, stock_warehouse w where w.lot_stock_id=s.id and w.id= %d "%(order.shop_id.warehouse_id.id)) cr.execute("select s.id from stock_location s, stock_warehouse w where w.lot_stock_id=s.id and w.id= %d "%(order.shop_id.warehouse_id.id))
res=cr.fetchone() res=cr.fetchone()
location_id=res and res[0] or None location_id=res and res[0] or None
@ -503,7 +500,7 @@ class pos_order(osv.osv):
if line.qty < 0: if line.qty < 0:
location_id, stock_dest_id = stock_dest_id, location_id location_id, stock_dest_id = stock_dest_id, location_id
self.pool.get('stock.move').create(cr, uid, { move_obj.create(cr, uid, {
'name': 'Stock move (POS %d)' % (order.id, ), 'name': 'Stock move (POS %d)' % (order.id, ),
'product_uom': line.product_id.uom_id.id, 'product_uom': line.product_id.uom_id.id,
'product_uos': line.product_id.uom_id.id, 'product_uos': line.product_id.uom_id.id,
@ -559,7 +556,7 @@ class pos_order(osv.osv):
@return: True @return: True
""" """
self.write(cr, uid, ids, {'state': 'cancel'}) self.write(cr, uid, ids, {'state': 'cancel'})
self.cancel_picking(cr, uid, ids, context={}) self.cancel_picking(cr, uid, ids, context=context)
return True return True
def add_payment(self, cr, uid, order_id, data, context=None): def add_payment(self, cr, uid, order_id, data, context=None):
@ -567,8 +564,10 @@ class pos_order(osv.osv):
"""Create a new payment for the order""" """Create a new payment for the order"""
res_obj = self.pool.get('res.company') res_obj = self.pool.get('res.company')
statement_obj= self.pool.get('account.bank.statement')
statementl_obj = self.pool.get('account.bank.statement.line') statementl_obj = self.pool.get('account.bank.statement.line')
prod_obj = self.pool.get('product.product') prod_obj = self.pool.get('product.product')
property_obj=self.pool.get('ir.property')
flag='' flag=''
curr_c=self.pool.get('res.users').browse(cr, uid, uid).company_id curr_c=self.pool.get('res.users').browse(cr, uid, uid).company_id
curr_company=curr_c.id curr_company=curr_c.id
@ -583,7 +582,7 @@ class pos_order(osv.osv):
args['date'] = data['payment_date'] args['date'] = data['payment_date']
if 'payment_name' in data.keys(): if 'payment_name' in data.keys():
args['name'] = data['payment_name'] + ' ' +order.name args['name'] = data['payment_name'] + ' ' +order.name
account_def = self.pool.get('ir.property').get(cr, uid, 'property_account_receivable', 'res.partner', context=context) account_def = property_obj.get(cr, uid, 'property_account_receivable', 'res.partner', context=context)
args['account_id'] = order.partner_id and order.partner_id.property_account_receivable and order.partner_id.property_account_receivable.id or account_def.id or curr_c.account_receivable.id args['account_id'] = order.partner_id and order.partner_id.property_account_receivable and order.partner_id.property_account_receivable.id or account_def.id or curr_c.account_receivable.id
if data.get('is_acc',False): if data.get('is_acc',False):
args['is_acc']=data['is_acc'] args['is_acc']=data['is_acc']
@ -593,7 +592,6 @@ class pos_order(osv.osv):
args['partner_id'] = order.partner_id and order.partner_id.id or None args['partner_id'] = order.partner_id and order.partner_id.id or None
args['ref'] = order.contract_number or None args['ref'] = order.contract_number or None
statement_obj= self.pool.get('account.bank.statement')
statement_id = statement_obj.search(cr,uid, [ statement_id = statement_obj.search(cr,uid, [
('journal_id', '=', data['journal']), ('journal_id', '=', data['journal']),
('company_id', '=', curr_company), ('company_id', '=', curr_company),
@ -639,10 +637,8 @@ class pos_order(osv.osv):
return order_line_id return order_line_id
def refund(self, cr, uid, ids, context={}): def refund(self, cr, uid, ids, context=None):
"""Create a copy of order for refund order"""
"""Create a copy of order for refund order"""
clone_list = [] clone_list = []
line_obj = self.pool.get('pos.order.line') line_obj = self.pool.get('pos.order.line')
@ -666,8 +662,7 @@ class pos_order(osv.osv):
}) })
return clone_list return clone_list
def action_invoice(self, cr, uid, ids, context={}): def action_invoice(self, cr, uid, ids, context=None):
"""Create a invoice of order """ """Create a invoice of order """
res_obj = self.pool.get('res.company') res_obj = self.pool.get('res.company')
@ -965,7 +960,7 @@ class pos_order(osv.osv):
if not context: if not context:
context = {} context = {}
if context.get('flag',False): if context.get('flag',False):
self.create_picking(cr, uid, ids, context={}) self.create_picking(cr, uid, ids, context=None)
self.write(cr, uid, ids, {'state': 'paid'}) self.write(cr, uid, ids, {'state': 'paid'})
else: else:
context['flag']=True context['flag']=True
@ -978,7 +973,7 @@ class pos_order(osv.osv):
def action_done(self, cr, uid, ids, context=None): def action_done(self, cr, uid, ids, context=None):
for order in self.browse(cr, uid, ids, context=context): for order in self.browse(cr, uid, ids, context=context):
if not order.journal_entry: if not order.journal_entry:
self.create_account_move(cr, uid, ids, context={}) self.create_account_move(cr, uid, ids, context=None)
return True return True
def compute_state(self, cr, uid, id): def compute_state(self, cr, uid, id):
@ -1162,30 +1157,31 @@ class pos_order_line(osv.osv):
'company_id': lambda self,cr,uid,c: self.pool.get('res.users').browse(cr, uid, uid, c).company_id.id, 'company_id': lambda self,cr,uid,c: self.pool.get('res.users').browse(cr, uid, uid, c).company_id.id,
} }
def create(self, cr, user, vals, context={}): def create(self, cr, user, vals, context=None):
if vals.get('product_id'): if vals.get('product_id'):
return super(pos_order_line, self).create(cr, user, vals, context) return super(pos_order_line, self).create(cr, user, vals, context)
return False return False
def write(self, cr, user, ids, values, context={}): def write(self, cr, user, ids, values, context=None):
if 'product_id' in values and not values['product_id']: if 'product_id' in values and not values['product_id']:
return False return False
return super(pos_order_line, self).write(cr, user, ids, values, context) return super(pos_order_line, self).write(cr, user, ids, values, context)
def _scan_product(self, cr, uid, ean, qty, order): def _scan_product(self, cr, uid, ean, qty, order):
# search pricelist_id # search pricelist_id
product_obj=self.pool.get('product.product')
pricelist_id = self.pool.get('pos.order').read(cr, uid, [order], ['pricelist_id'] ) pricelist_id = self.pool.get('pos.order').read(cr, uid, [order], ['pricelist_id'] )
if not pricelist_id: if not pricelist_id:
return False return False
new_line = True new_line = True
product_id = self.pool.get('product.product').search(cr, uid, [('ean13','=', ean)]) product_id = product_obj.search(cr, uid, [('ean13','=', ean)])
if not product_id: if not product_id:
return False return False
# search price product # search price product
product = self.pool.get('product.product').read(cr, uid, product_id) product =product_obj.read(cr, uid, product_id)
product_name = product[0]['name'] product_name = product[0]['name']
price = self.price_by_product(cr, uid, 0, pricelist_id[0]['pricelist_id'][0], product_id[0], 1) price = self.price_by_product(cr, uid, 0, pricelist_id[0]['pricelist_id'][0], product_id[0], 1)
@ -1231,14 +1227,14 @@ class pos_payment(osv.osv):
_name = 'pos.payment' _name = 'pos.payment'
_description = 'Pos Payment' _description = 'Pos Payment'
def _journal_get(self, cr, uid, context={}): def _journal_get(self, cr, uid, context=None):
obj = self.pool.get('account.journal') obj = self.pool.get('account.journal')
ids = obj.search(cr, uid, [('type', '=', 'cash')]) ids = obj.search(cr, uid, [('type', '=', 'cash')])
res = obj.read(cr, uid, ids, ['id', 'name'], context) res = obj.read(cr, uid, ids, ['id', 'name'], context)
res = [(r['id'], r['name']) for r in res] res = [(r['id'], r['name']) for r in res]
return res return res
def _journal_default(self, cr, uid, context={}): def _journal_default(self, cr, uid, context=None):
journal_list = self.pool.get('account.journal').search(cr, uid, [('type', '=', 'cash')]) journal_list = self.pool.get('account.journal').search(cr, uid, [('type', '=', 'cash')])
if journal_list: if journal_list:
return journal_list[0] return journal_list[0]
@ -1261,12 +1257,12 @@ class pos_payment(osv.osv):
'payment_date': lambda *a: time.strftime('%Y-%m-%d'), 'payment_date': lambda *a: time.strftime('%Y-%m-%d'),
} }
def create(self, cr, user, vals, context={}): def create(self, cr, user, vals, context=None):
if vals.get('journal_id') and vals.get('amount'): if vals.get('journal_id') and vals.get('amount'):
return super(pos_payment, self).create(cr, user, vals, context) return super(pos_payment, self).create(cr, user, vals, context)
return False return False
def write(self, cr, user, ids, values, context={}): def write(self, cr, user, ids, values, context=None):
if 'amount' in values and not values['amount']: if 'amount' in values and not values['amount']:
return False return False
if 'journal_id' in values and not values['journal_id']: if 'journal_id' in values and not values['journal_id']:
@ -1278,7 +1274,7 @@ pos_payment()
class account_move_line(osv.osv): class account_move_line(osv.osv):
_inherit = 'account.move.line' _inherit = 'account.move.line'
def create(self, cr, user, vals, context={}): def create(self, cr, user, vals, context=None):
pos_obj = self.pool.get('pos.order') pos_obj = self.pool.get('pos.order')
val_name = vals.get('name', '') val_name = vals.get('name', '')
val_ref = vals.get('ref', '') val_ref = vals.get('ref', '')
@ -1298,8 +1294,7 @@ account_move_line()
class account_move(osv.osv): class account_move(osv.osv):
_inherit = 'account.move' _inherit = 'account.move'
def create(self, cr, user, vals, context=None):
def create(self, cr, user, vals, context={}):
pos_obj = self.pool.get('pos.order') pos_obj = self.pool.get('pos.order')
val_name = vals.get('name', '') val_name = vals.get('name', '')
val_ref = vals.get('ref', '') val_ref = vals.get('ref', '')

View File

@ -1,7 +1,6 @@
<?xml version="1.0" ?> <?xml version="1.0" ?>
<openerp> <openerp>
<data> <data>
</data> </data>
</openerp> </openerp>

View File

@ -1,6 +1,5 @@
<?xml version="1.0" ?> <?xml version="1.0" ?>
<openerp> <openerp>
<data> <data>
</data> </data>
</openerp> </openerp>

View File

@ -119,7 +119,7 @@
I create Sales Account. I create Sales Account.
- -
!record {model: account.account, id: account_account_sales0}: !record {model: account.account, id: account_account_sales0}:
code: S code: Sale
company_id: base.main_company company_id: base.main_company
currency_mode: current currency_mode: current
name: Sales name: Sales
@ -477,4 +477,9 @@
self.action_confirm(cr, uid, [ref("pos_confirm_0")], {"lang": "en_US", "active_model": self.action_confirm(cr, uid, [ref("pos_confirm_0")], {"lang": "en_US", "active_model":
"pos.order", "active_ids": [ref("pos_order_pos0")], "tz": False, "active_id": ref("pos_order_pos0"), "pos.order", "active_ids": [ref("pos_order_pos0")], "tz": False, "active_id": ref("pos_order_pos0"),
}) })
-
I check order state is done.
-
!python {model: pos.order}: |
order=self.browse(cr,uid,ref("pos_order_pos0"))
assert(order.state=='done'), "Order is not done"