X-Git-Url: http://git.cyclocoop.org/?p=burette%2Fpos_membership.git;a=blobdiff_plain;f=pos_membership.py;h=76fbfba0cfb655f0b5b92d20e95d9134326b4dd5;hp=49483cb5e05da2d215ba775bcba6e256ee3a8db4;hb=4aab88f5f023e35aaafc6fe5e80b9e7b3f2db5dd;hpb=1355dfbc5b5f8a4270b0f8f0e1e5171c51196e4e diff --git a/pos_membership.py b/pos_membership.py index 49483cb..76fbfba 100644 --- a/pos_membership.py +++ b/pos_membership.py @@ -38,6 +38,73 @@ STATE = [ ('paid', 'Paid Member'), ] +class pos_order(osv.osv): + _inherit = 'pos.order' + + def create_partner_from_ui(self, cr, uid, partners, context=None): + print ("DEV: [pos_membership] [create_partner_from_ui] partners=%s" % str(partners)) + partner_ids = [] + partner_obj = self.pool.get('res.partner') + for tmp_partner in partners: + partner = tmp_partner['data'] + partner_id = partner_obj.create(cr, uid, { + 'name': partner['name'], + }, context) + partner_ids.append(partner_id) + #self.signal_paid(cr, uid, [partner_id]) + return partner_ids + + def create_from_ui(self, cr, uid, orders, context=None): + # NOTE: copied from openerp/addons/point_of_sale/point_of_sale.py + #_logger.info("orders: %r", orders) + print ("DEV: [pos_membership] [create_from_ui] order=", str(orders)) + order_ids = [] + for tmp_order in orders: + order = tmp_order['data'] + order_id = self.create(cr, uid, { + 'name': order['name'], + 'user_id': order['user_id'] or False, + 'session_id': order['pos_session_id'], + 'lines': order['lines'], + 'pos_reference':order['name'], + #-- BEGIN pos_membership + 'partner_id':order['partner_id'], + #-- END pos_membership + }, context) + + for payments in order['statement_ids']: + payment = payments[2] + self.add_payment(cr, uid, order_id, { + 'amount': payment['amount'] or 0.0, + 'payment_date': payment['name'], + 'statement_id': payment['statement_id'], + 'payment_name': payment.get('note', False), + 'journal': payment['journal_id'] + }, context=context) + + if order['amount_return']: + session = self.pool.get('pos.session').browse(cr, uid, order['pos_session_id'], context=context) + cash_journal = session.cash_journal_id + cash_statement = False + if not cash_journal: + cash_journal_ids = filter(lambda st: st.journal_id.type=='cash', session.statement_ids) + if not len(cash_journal_ids): + raise osv.except_osv( _('error!'), + _("No cash statement found for this session. Unable to record returned cash.")) + cash_journal = cash_journal_ids[0].journal_id + self.add_payment(cr, uid, order_id, { + 'amount': -order['amount_return'], + 'payment_date': time.strftime('%Y-%m-%d %H:%M:%S'), + 'payment_name': _('return'), + 'journal': cash_journal.id, + }, context=context) + order_ids.append(order_id) + wf_service = netsvc.LocalService("workflow") + wf_service.trg_validate(uid, 'pos.order', order_id, 'paid', cr) + return order_ids + +pos_order() + class membership_line(osv.osv): '''Member line''' _inherit = 'membership.membership_line'