Odoo POS 收据需要在收据中添加 res.partner 个城市的地址

Odoo POS receipt need to add address from res.partner city in receipt

我不知道如何在下面添加 res.partner 对象 screen.js

print_xml: function() {
  var env = {
    widget: this,
    pos: this.pos,
    order: this.pos.get_order(),
    receipt: this.pos.get_order().export_for_printing(),
    paymentlines: this.pos.get_order().get_paymentlines()
  };
  render_receipt: function() {
    var order = this.pos.get_order();
    this.$('.pos-receipt-container').html(QWeb.render('PosTicket',{
      widget:this,
      order: order,
      partner:partner,
      receipt: order.export_for_printing(),
      orderlines: order.get_orderlines(),
      paymentlines: order.get_paymentlines(),
    }));
  };
};

我尝试在上面 javascript 添加合作伙伴对象,但它不起作用。 我是 odoo 的新手,我也不了解 JavaScript 所以请帮我解决这个问题。 如果我能够在此 javascript 文件中添加 res.partner 对象,那么只有我可以访问我的 pos.xml 文件中的 res.partner 对象。

我不需要公司的地址详细信息,它不在 res_company 中,所以我如何从 res_partner 获取公司的街道和其他地址?

您可以使用 get_client() 方法获取它。

您将获得当前订单合作伙伴的完整对象,然后您可以像使用 py 文件一样使用它,例如。 partner.city等在收据模板中。

render_receipt: function() {
    var order = this.pos.get_order();
    this.$('.pos-receipt-container').html(QWeb.render('PosTicket',{
      widget:this,
      order: order,
      partner:this.pos.get_order().get_client(),
      receipt: order.export_for_printing(),
      orderlines: order.get_orderlines(),
      paymentlines: order.get_paymentlines(),
    }));
  };

更新:

在js中res.company模型中添加地址字段

var module = require('point_of_sale.models');
var models = module.PosModel.prototype.models;
for(var i=0; i<models.length; i++){
    var model=models[i];
    if(model.model === 'res.company'){
         model.fields.push('street');
         model.fields.push('city');
         model.fields.push('state_id');
         model.fields.push('country_id');

         // other field you want to pull from the res.company table.

    } 
}

然后你会在company:this.pos.company.

中得到它

现在您可以在模板中使用它,例如。 company.street, company.city

对于国家和州,请在模板中使用 company.state_id[1] 和 company.country_id[1]。