Odoo Help
Odoo is the world's easiest all-in-one management software. It includes hundreds of business apps:
CRM | e-Commerce | Accounting | Inventory | PoS | Project management | MRP | etc.
How to register POS invoice payment
In Odoo 8, if you sell something and invoice it from POS, it will not register the payment at
Accounting > Current Invoices > (some invoice)
The invoice remains as 'Open' and the payment is not registered.
Is this the correct behavior? Or is it a bug?
Regards
Alejandro
The payment will be registered when the POS session is closed. Anyway, the associated invoice will remain open. This last, definitely is a bug, I did not find a way to reconcile, or associate the payment to the invoice yet.
I'll see what happen if I change de invoice status in some way.
Hello Daniel, thanks for your input, if the payment is being registered when the POS session is closed, then it wouldn't be so hard to make a function to set the status for all involved invoices to 'paid'. I will take a look at this and come back with some comments.
I think the issue here is that the payment is registered. There should be an option to register an invoice without a payment. This way you could register a credit for a customer. If the customer will pay later. An invoice would be created to serve as the registry for that receivable amount. I've not yet found a way to make the POS not register a payment and allow me to register an invoice.
I have the same issue , i find this:
I make same change to work for odoo 9:
from openerp.osv import fields, osvimport logging_logger = logging.getLogger(__name__) class pos_session(osv.osv): _inherit = 'pos.session' def _confirm_orders(self, cr, uid, ids, context=None): account_move_obj = self.pool.get('account.move') account_move_line_obj = self.pool.get('account.move.line') pos_order_obj = self.pool.get('pos.order') for session in self.browse(cr, uid, ids, context=context): local_context = dict(context or {}, force_company=session.config_id.journal_id.company_id.id) order_ids = [order.id for order in session.order_ids if order.state == 'paid'] move_id = account_move_obj.create(cr, uid, {'ref' : session.name, 'journal_id' : session.config_id.journal_id.id, }, context=local_context) pos_order_obj._create_account_move_line(cr, uid, order_ids, session, move_id, context=local_context) for order in session.order_ids: if order.state == 'done': continue if order.state not in ('paid', 'invoiced'): raise osv.except_osv( _('Error!'), _("You cannot confirm all orders of this session, because they have not the 'paid' status")) else: pos_order_obj.signal_workflow(cr, uid, [order.id], 'done') order_ids = self.pool.get('pos.order').search(cr, uid, [('session_id','=', session.id)]) for obj_order_id in self.pool.get('pos.order').browse(cr, uid, order_ids, context=context): move_line = [] for move_line_id in obj_order_id.invoice_id.move_id.line_ids: if move_line_id.name == obj_order_id.name: move_line.append(move_line_id.id) move_line_ids_1 = [] for statement_id in obj_order_id.statement_ids: move_line_ids = account_move_line_obj.search(cr, uid, [('statement_id','=', statement_id.statement_id and statement_id.statement_id.id)]) if (move_line_ids != move_line_ids_1) : for line in account_move_line_obj.browse(cr, uid, move_line_ids): if line.credit and line.name.strip().strip(':') == obj_order_id.name: move_line.append(line.id) if line.debit and 'return' in line.name: move_line.append(line.id) move_line_ids_1 = move_line_ids ctx = context.copy() ctx.update({'active_ids': move_line}) self.pool.get('account.move.line.reconcile').trans_rec_reconcile_full(cr, uid, [], ctx) return True
The invoice change from Open to Paid only after closed the session of the Point Of Sale.
Just in case that there are people looking for a fix, here is a simple module that will auto reconcile the invoice with its payment so the invoice will be paid.
Thank you for you module. Two things :
1. the new name's module is **pos_fixes**
2. I had to adapt the code to fit with odoo v9
I found a bug (it seems). When you do two sales in POS in the same session for the same customer : **First** invoiced, the **second** without invoice. When I close session, the first invoice stll open and not paid.
Hi \Alejandro Perez Cosio
1)In POS, if any order is invoiced then you can check under POS Orders and you will find that particular order status as “Invoiced”.
Note :- Even if the session in which the Invoice was generated is validated and closed the invoice status does not change. This needs a relook.
2)But If you click on the POS Order and go to the Tab “Extra Info” , you will be able to find a field Invoice(e.g. SAJ/2016/0003Main/007) associated with the POS Order under Accounting Information. On clicking on it you will have the option to register payment.
Hope this helps
Cheers
About This Community
Odoo Training Center
Access to our E-learning platform and experience all Odoo Apps through learning videos, exercises and Quizz.Test it now