This question has been flagged
64 Replies
35942 Views

Hi all,

I wrote a module to enhance POS.

Here are some features I added :

  • Cashier management
  • Customer management :select/ edit/create
  • Sale history : see customer purchases
  • Special discount : shop manager can apply a special discount (password required)
  • Customs Packs : packs of products with variants
  • POS internal messaging : displays scheduled messages inside POS (once or each X hours)

    • some other stuffs.

here are screenshots :

POS interface with cashier module + customer module /left side

POS interface with cashier module + customer module /left side

Select customer by letter or with search input

Select customer by letter or with search input

See customer purchases

see customer purchase history

Build custom pack

Sale Custom Packs . Build one in a few clicks

Paiement page

Paiement page

Ticket

Ticket with lot of details

Password asked to apply special discount

Shop manager can apply special discount. Need a password

Pos messaging

Messages are displayed once or each X hours.

All that stuff is well working (for my company), maybe I'll have to make some corrections (I have not used it as a vendor, so they may discover some bugs, but for now , it works)

I'm writing a page to explain how it works, how to install it and use it. There will be a download link to.

I put some explanation (JS/PY/XML)

It could be available in a week if I have enough time.

Regards

Article is online here : OpenERP Module TG_POS_ENHANCED - FR

English version is here : OpenERP Module TG_POS_ENHANCED - EN

Download : tg_pos_enhanced 1.0.1

Avatar
Discard

Awesome. Is it overriding point_of_sale?

Author

Yes absolutly.

@Thierry Godin : How can i download this module

Cool :) you rocks :)

Author

Thanks all. Please be patient. I just finished the article, I proposed it for proofreading. It could be online in a couple of days.

thanks to the english documentation. I have a short look at the the code and some hints. But starting working together i recomment a public repository, to able that someone can send you code. And have a small issue list to discuss details of the implementation. So that your work can shine and develop go an.

The price button is not function any more. Which code prohibit it? I have the requirement to change the prices freely cause some items price is negotiable. Thanks!

Author

@Franck :

Please see here : http://thierry-godin.developpez.com/openerp/openerp-module-pos-enhanced-en/#LVII-F

You can recover buttons, but be aware that you have to redesign numpad in xml. Also, it is possible you encounter strange behavior while changing Custom Pack price (I have not worked on this because it was a will of my company)

Regards

Author

@Franck :

Please see here : http://thierry-godin.developpez.com/openerp/openerp-module-pos-enhanced-en/#LVII-F

You can recover buttons, but be aware that you have to redesign numpad in xml. Also, it is possible you encounter strange behavior while changing Custom Pack price (I have not worked on this because it was a will of my company)

Regards

Nice! I really like the customer purchase history.

Thank you very much for releasing this to the public Thierry! It is an amazing piece of work. I personally need some other extra functionality (being able to add products from inside the POS) and I was wondering if you could give me any guidance or help.. You can see my question here: https://www.odoo.com/forum/help-1/question/how-to-allow-a-user-to-add-new-products-from-inside-the-pos-68172 I already have the view and button etc.. I only need to know how I could let the user make a new product from there on.

Author Best Answer

Hey all,

Article is online here : OpenERP Module TG_POS_ENHANCED - FR

English version is here : OpenERP Module TG_POS_ENHANCED - EN

Direct download link is at the bottom of the first post above

Enjoy, and please use your upvote ;o)

Avatar
Discard

That is awesome! Thank you very much for your hard work! I appreciate the musical products you had in your screenshots (I work for a brass instrument shop in the US) I have a request for the next version: we're trying to figure out a way for staff to apply payments to invoices in the POS interface (say from a repair service generated from a SO, or whatever). Again: wonderful contribution. Thanks!

thank your for your module, is the source avalible on lunchpad or github. This will be nice. It is easy to share and the community can make improvement and push it.

Author

@markus : no, because I have to learn launchpad/brz first ... but download link in at the bottom of the article.

it is worth to learn ;) - it is a barrier to make a registration to a french forum to download the stuff

Author

Oh, it is not my forum. For now I put my work here because I have no time to create a website . And about translation, i'm doing it right now, but I need a few time.

I'll put dl link here ASAP.

Author

@Markus : I added direct link in first post.

Hello Sir, first of all thanks a lot for this wonderful module. It has really helped me a lot. But I've a small doubt I'm not able to select the quantity for custom pack products in my POS session. Am I going wrong anywhere?

I upload source to launchpad https://launchpad.net/openerp-pos-addons One can download original source by command: bzr branch -r 1 lp:openerp-pos-addons

Best Answer

I upload POS Enhanced to github https://github.com/yelizariev/pos-addons

I made some updates, but original source available at release pages (tag tg_pos_enhanced_1.0.1) https://github.com/yelizariev/pos-addons/releases

or by command:

git clone https://github.com/yelizariev/pos-addons.git

git checkout tg_pos_enhanced_1.0.1

I made module tg_pos_debt_notebook , which add payment method "debt" . Customer can pay by debt and return money, for example, at the end of the month

UPD. Also, I made version for v8 https://github.com/yelizariev/pos-addons/

UPD 15.03.2015. 

I've updated tg_pos_packs module. It can be used without tg_pos_enhanced module now. https://github.com/yelizariev/pos-addons/tree/master/tg_pos_packs

Avatar
Discard

Thank you Ivan, installation works perfect. How can I register customers payments one POS was closed and accounted?

hi I have this problem after making a sale from tg stock Product is not discounted how to fix this

Hi Ivan, I would like to know is there any module where you can sell packs in POS in odoo like tg_pos in openerp 7. My requirement is to sell a pack of multiple items and the respective sub item stock also to be deducted in the warehouse. Thanks,

Hi Ivan, I would like to know is there any module where you can sell packs in POS in odoo like tg_pos in openerp 7. My requirement is to sell a pack of multiple items and the respective sub item stock also to be deducted in the warehouse. Thanks,

Best Answer

Does this module was adapted by anyone to Odoo version 9 ?

Avatar
Discard
Best Answer

Hi Thierry, very good job!

Anyway I'm wondering why the cashier cannot just be the OE user logged in?

Avatar
Discard
Best Answer

Hello,

Is there a way to integrate gift vouncher on the fly on your pos module ? I mean create on the fly a product with a special price ?

Are you available for developemnt mission ?

Thanks

Avatar
Discard

we have such a module but not ready for release know if you interested write to infoinitos.com

Best Answer

Thanks for this great enhancement How can I print customer detail on POS Receipt/tickets

Avatar
Discard
Best Answer

Hi Thiérry

Would you say your new PS module is fully compatible with the OpenErp official one (I mean the one available on the saas online from OpenErp sas)? In particular OE changed recently the field category of products (a change which lost all my previous product categories!)

In other words, would your module require some modifications on existing data?

Thanks for your excellent work! I would like to see it available in the saas online from Odooo.
 

Avatar
Discard
Best Answer

I was trying to install this module on SAAS3 but the following errors appears, can anyone help me on this?

 

OpenERP Server Error

Traceback (most recent call last):
  File "/opt/openerp-saas3/oerp-saas3/server/openerp/http.py", line 345, in dispatch
    response["result"] = self._call_function(**self.params)
  File "/opt/openerp-saas3/oerp-saas3/server/openerp/http.py", line 217, in _call_function
    return checked_call(self.db, *args, **kwargs)
  File "/opt/openerp-saas3/oerp-saas3/server/openerp/service/model.py", line 113, in wrapper
    return f(dbname, *args, **kwargs)
  File "/opt/openerp-saas3/oerp-saas3/server/openerp/http.py", line 212, in checked_call
    return self.func(*a, **kw)
  File "/opt/openerp-saas3/oerp-saas3/server/openerp/http.py", line 529, in __call__
    return self.method(*args, **kw)
  File "/opt/openerp-saas3/oerp-saas3/web/addons/web/controllers/main.py", line 1207, in call_button
    action = self._call_kw(model, method, args, {})
  File "/opt/openerp-saas3/oerp-saas3/web/addons/web/controllers/main.py", line 1195, in _call_kw
    return getattr(request.registry.get(model), method)(request.cr, request.uid, *args, **kwargs)
  File "/opt/openerp-saas3/oerp-saas3/server/openerp/addons/base/module/module.py", line 425, in button_immediate_install
    return self._button_immediate_function(cr, uid, ids, self.button_install, context=context)
  File "/opt/openerp-saas3/oerp-saas3/server/openerp/addons/base/module/module.py", line 476, in _button_immediate_function
    registry = openerp.modules.registry.RegistryManager.new(cr.dbname, update_module=True)
  File "/opt/openerp-saas3/oerp-saas3/server/openerp/modules/registry.py", line 247, in new
    openerp.modules.load_modules(registry.db, force_demo, status, update_module)
  File "/opt/openerp-saas3/oerp-saas3/server/openerp/modules/loading.py", line 341, in load_modules
    loaded_modules, update_module)
  File "/opt/openerp-saas3/oerp-saas3/server/openerp/modules/loading.py", line 244, in load_marked_modules
    loaded, processed = load_module_graph(cr, graph, progressdict, report=report, skip_modules=loaded_modules, perform_checks=perform_checks)
  File "/opt/openerp-saas3/oerp-saas3/server/openerp/modules/loading.py", line 175, in load_module_graph
    _load_data(cr, module_name, idref, mode, kind='data')
  File "/opt/openerp-saas3/oerp-saas3/server/openerp/modules/loading.py", line 116, in _load_data
    tools.convert_file(cr, module_name, filename, idref, mode, noupdate, kind, report)
  File "/opt/openerp-saas3/oerp-saas3/server/openerp/tools/convert.py", line 967, in convert_file
    convert_xml_import(cr, module, fp, idref, mode, noupdate, report)
  File "/opt/openerp-saas3/oerp-saas3/server/openerp/tools/convert.py", line 1053, in convert_xml_import
    obj.parse(doc.getroot())
  File "/opt/openerp-saas3/oerp-saas3/server/openerp/tools/convert.py", line 921, in parse
    self._tags[rec.tag](self.cr, rec, n)
  File "/opt/openerp-saas3/oerp-saas3/server/openerp/tools/convert.py", line 850, in _tag_record
    id = self.pool['ir.model.data']._update(cr, self.uid, rec_model, self.module, res, rec_id or False, not self.isnoupdate(data_node), noupdate=self.isnoupdate(data_node), mode=self.mode, context=rec_context )
  File "/opt/openerp-saas3/oerp-saas3/server/openerp/addons/base/ir/ir_model.py", line 1010, in _update
    res_id = model_obj.create(cr, uid, values, context=context)
  File "/opt/openerp-saas3/oerp-saas3/server/openerp/addons/base/ir/ir_ui_view.py", line 177, in create
    return super(view, self).create(cr, uid, values, context)
  File "/opt/openerp-saas3/oerp-saas3/server/openerp/osv/orm.py", line 4156, in create
    self._validate(cr, user, [id_new], context)
  File "/opt/openerp-saas3/oerp-saas3/server/openerp/osv/orm.py", line 1575, in _validate
    raise except_orm('ValidateError', '\n'.join(error_msgs))
ParseError: "ValidateError
The field(s) `arch` failed against a constraint: Invalid view definition

Error details:
Element '<field name="name">' cannot be located in parent view

Error context:
View `view.tg.partner.tree`
[view_id: 869, xml_id: n/a, model: res.partner, parent_id: 121]" while parsing /opt/openerp-saas3/oerp-saas3/myaddons/tg_partner_firstname/tg_partner_view.xml:30, near
<record model="ir.ui.view" id="view_tg_partner_tree">
            <field name="model">res.partner</field>
            <field name="name">view.tg.partner.tree</field>
            <field name="view_type">tree</field>
            <field name="inherit_id" ref="base.view_partner_tree"/>
            <field name="arch" type="xml">
                <data><field name="name" position="after">
                    <field name="firstname"/>
                    <field name="zip"/>
                </field>
                <field name="phone" position="after">
                    <field name="mobile"/>
                </field>
                <field name="email" position="after">     
                    <field name="country"/>
                </field>
            </data></field>
        </record>

 

Avatar
Discard

hello can someone help us, I have the same issue.

field name="name" position="after" should be changed to field name="display_name" position="after" As it done here: https://github.com/yelizariev/pos-addons/blob/master/tg_partner_firstname/tg_partner_view.xml

Best Answer

hi 
I have this problem 
after making a sale from tg 
stock Product is not discounted 
how to fix this

Avatar
Discard
Best Answer

Merci Thierry!

I will check this out soon and get back on some feedback!

A+

Avatar
Discard
Best Answer

Is it possible to create a jquery that will shrink/collapse the number keypad down? I'm using a 10 inch laptop and the receipt view and the keypad view overlap each other. Since openerp pos is a touch screen system, sometimes I don't need to enter the value of the product in the keypad, I just click the image button and it automatically computes the total amount purchased. This will make the view a little bit cleaner and we can see the receipt more in terms of its length. And thank you for this wonderful upgrades on POS.

Avatar
Discard
Author

Hi Vincent,

All is possible with OpenERP, you just have to code it. You have to make the keypad div top/left changes and add a small tab on top that will be used to shrink/collapse the keypad.

Thanks Thierry. I'm not familiar with jquery but I'll try :)

Best Answer

Wonderful enhancement, exactly what I needed.

The customer details stored in which module ?

means to run this enhancement what other module is required to be installed ? (CRM ?)

Thanks for your help.

Avatar
Discard
Best Answer

I get this error when trying to run the POS application from the point_of_sale-enahanced 70 module; Any solution to this? 

Uncaught Error: QWeb2 - template['PaypadButtonWidget']: Runtime Error: TypeError: Cannot read property 'name' of undefined

When I try and click on the POS interface I get 

Uncaught TypeError: Cannot read property 'toJSON' of undefined
 

Avatar
Discard
Best Answer

What about crowdfunding for a v8 implementation ?? ... I would pleasantly contribute :-)

Avatar
Discard
Best Answer

hello,

I implemented tg_pos-enhanced module following the instructions.

All is well installed it; but I see my stock remains unchanged when I make a sale.

I do not understand why.

Thank you for your help.

Ps openerp Version 7.0-20140518-231221

--------------------------------------------------------------------------

Bonjour,

j'ai implementé le module tg_pos-enhanced en suivant les instructions.

Tous est bien installlé; maos je constate que mon stock reste inchangé quand j'effectue une vente.

je ne comprends pas pourquoi.

Merci pour votre aide.

Ps openerp Version 7.0-20140518-231221

---------------------------------------------------------------------------------------

Avatar
Discard
Best Answer

 

 

Avatar
Discard
Best Answer

Hi Thiérry

¿How can I print on the ticket the selected customer name and tax id?

Thank you

Avatar
Discard

did you make it work on odoo 8 ?

Best Answer

hi is possible in print via proxy Enhanced POS 
regards 
thank you

Avatar
Discard
Best Answer

Thanks for nice addon module. Its helpfull. Is there any possibility to apply the default discount to certail products in POS? Also pricelist is not getting applied to the POS. Please help. I have installed this addon in OpenERP 7.

Avatar
Discard

Hello Divya, I don't know about discount but pricelist should be applied in POS. Ensure you have set the shop with the pricelist you want to work with. I do use POS for 42 shops actually and each shop has its own pricelist. Regards.

Thanks Thierry. I'm able to install this enhancement and apply the pricelist. Outofscope question: Can you please answer if yoou aware of it. Price of the product set at Pricelist is displaced as it is in the POS. I expect it need to be displayed as discount price and actual price. But in POS product price is displayed as its from pricelist. Any idea to solve? Basically I need to apply default discount for the product.

Best Answer

Thierry, 

thanks for your works. I'm trying to use it on my 7.0 local install (linux) but I can see just the new cashiers menu and the rest of the pos is still the same. 
Since I need just the Cashiers part I tried with the single module I found on your website but again with no luck. Where I'm wrong?

F.

 

 

 

Avatar
Discard
Best Answer

First of all, congratulations for a very nice work.

Is this just an upgrade from the existing enhanced POS app or a total rework? Can the customer be changed on the fly? (unlike the previous version)?

Can't wait to get the code and test this...

Thank you

Avatar
Discard
Author

This is a module that overrides point_of_sale module.

Yes a customer can be edited/created on the fly, inside the POS

Best Answer

Dear Thierry ,

How to overide after changing the code in point of sale actually , I have added the code in original point_of_sale but after installing your tg_pos_enhanced i am getting error like "Undefined function is not defined"  Please help me on that any thing have to change in your code

What steps have to follow please give the solutions.

Thanks Please reply me  .

Avatar
Discard

Please reply anyone who knows how to override the code in tg_pos_enhanced .......

Best Answer

Thanks :) Hope the translation will be ready soon :)

By the way, instead of manual login. Can I use a card swipe access (magnetic swipe card) instead?

I still can't figure out how to do such integration. Will there be any proxy involved (just like print to proxy)?

Any tips? Thanks.

Avatar
Discard
Best Answer

Hello Thierry, thank you very much for sharing this module !

I am trying to download it, but unfortunately the zip once downloaded is corrupted. Can you please re upload the module ?

Avatar
Discard
Author

@Samuel, I just downloaded it right now and encountered no trouble. !??

(I just uploaded a new one )

Thank you for your fast response! But when I try to download it the blog either asks me to login, so I downloaded with wget from the terminal, but then it only downloads 21K instead of the 197K. Can you please send more indications on how to download the module. Thank you again for your help and patience.

Author

No, see the first post here, I added the download link yesterday.

Best Answer

Another feature that would be excellent is having a sequence of order numbers on the receipt. Instead of order no. ...then a timestamp, have something like Pos Ref:001, 002 ,003.....etc. Can this be achieved?

Avatar
Discard
Author

Yes , you can override anything in OpenERP.

Order name is defined, in point_of_sale/static/src/js/model.js at line 600 :

name: "Order " + this.generateUniqueId(),

My issue is continuity of the sequence...reading from the database

Author

So, it is possible to add a "sequence" field to pos.order and build order_name by combining a prefix + the sequence number, but you have to override POS. (PY +JS)