This question has been flagged
14 Replies
15045 Views

I have written Company Address<br />
            <t t-esc="widget.pos.company.street"/>, <t t-esc="widget.pos.company.street2"/><br />
            <t t-esc="widget.pos.company.city"/>, <t t-esc="widget.pos.company.zip"/><br /> this code in pos.xml in posticket template. But these information not showing in pos receipt. Just it is showing "camas". My company has the proper info of street, street2, city, zip. Company name and phone showing well.

Avatar
Discard
Getting the attached erro, Can you help me please?

On Mon, Jan 19, 2015 at 7:52 PM, Yenthe <yenthespam@gmail.com> wrote:

A new answer for How can i add company address to pos receipt? has been posted. Click here to access the post.

--
Yenthe
Sent by Odoo S.A. using Odoo about Forum Post How can i add company address to pos receipt?



--
--

Thanks and Regards,

Sambasiva rao,

Skype: samba.guduru2(skype)

I think that street, street2, city, etc are fields from res.partner. Not from res.company. So I tried widget.pos.company.partner_id and it displays the ID of the associated partner.

But widget.pos.company.partner_id.street doesn't (nor the others city, street2, etc.) work... snif!

Best Answer

Hi Samba 

You will need to add those fields to the models (point_of_sale/static/src/js/models.js)


        //Custom, logo added as an example. Load what you need here.
            model:  'res.company',
            fields: [ 'currency_id', 'email', 'website', 'company_registry', 'vat', 'name', 'phone', 'partner_id' , 'country_id', 'logo'],
            domain: function(self){ return [['id','=',self.user.company_id[0]]]; },
            loaded: function(self,companies){ self.company = companies[0]; },
        },

The second step is to add it to the ticket (point_of_sale/static/src/xml/

    <t t-name="PosTicket">
        <div class="pos-sale-ticket">
<div id="company_logo" style="text-align:center;"><img t-att-src="'data:image/png;base64,'+ widget.pos.company.logo" height="40%" width="40%"/></div>
<!--add your custom fields here!-->
            <t t-esc="widget.pos.company.name"/><br />

</t>

Do a reload of the whole module, restart your session and you'll see everything working!

Avatar
Discard
Author

Thank you, Yenthe. How can i inherit model.js to add this information?

No problem Samba. I'm not sure about this since I haven't tried inheriting the JS files yet. You should know that the js files are actually used with Backbone.js which means that the data is available in 'sessions'. So I believe you could even add another js file in the module.. Anyways this topic might help you in the good way: https://www.odoo.com/nl_NL/forum/help-1/question/inheritance-of-posmodel-in-pos-models-js-file-59023 (By the way, please accept the answer if it solved your problem? :) )

Yenthe, thanks for the above but how do I add tax code for each order line?

Hmm I'm not sure about which field exactly you're talking but you should also add it in models.js at the correct model (if it is not already there). On the ticket you'd need to add a t-foreach item and in that t-foreach add a span etc or a t-esc which prints out the field, just like I did with the company name but then inside a t-foreach.

In model.js there is a function call get _tax_details() can it be used to display the tax name/code at the orderline, I am not good in javascript hope you can help.

Yenthe, sorry is not the tax code, is the description in account_tax table I wish to add at each orderline. I reckon I just have to add description to model model: 'account.tax', the question is how do I get it for each order line. reason why we need this is because we apply diff tax to products and customer wish to know. Thanks in advance.

Best Answer

 i want to do something similar to what you have achieved , i want to load the contracts module(account.analytic.account) so i can get the contract reference and display it on the receipt. The tricky part is the only way to link the product in the point of sale back to  their contract is : product.product > account.analytic.invoice.line > account.analytic.account , so is there any way i can achieve this ?

Avatar
Discard
Best Answer

Hi Thanks and wish you the same...

I think Yenthe's method might work... sure you can inherit a js, (i.e) you have to extend instance/model etc...

I had inherited JS of List view Widget of Journal Items, it worked fine for me... you can have a look at it ..

 
/*
   [Inherited]: account_move_line_quickadd.js
                To Remove default values for (Journal & Period)
*/
    instance.web.account.QuickAddListView = instance.web.account.QuickAddListView.extend(
    {
        start:function(){
            var tmp = this._super.apply(this, arguments);
            var self = this;
            
            var mod = new instance.web.Model("account.move.line", self.dataset.context, self.dataset.domain);
            mod.call("default_get", [['journal_id','period_id'],self.dataset.context]).then(function(result) {
                self.current_period = null;
                self.current_journal = null;
            });
            return tmp;
          },
    });
};

So  I think you may have to try some thing like this for the model extention also ...

If it didnt work out then worst case, you have to create your own custom receipt...

Avatar
Discard
Author

Thank you Deep, Let me try this process

Hi @ deep i want to do something similar to what you have achieved , i want to load the contracts module(account.analytic.account) so i can get the contract reference and display it on the receipt. The tricky part is the only way to link the product in the point of sale back to its to the contract is : product.product > account.analytic.invoice.line > account.analytic.account , so is there any way i can achieve this ?