2017-02-06 5 views
2

Odoo 8 (모듈 point_of_sale)에서 JS 코드 섹션을 수정하고 싶습니다. 원래 코드는 이것이다 : Odoo 8에서 백본 JS 기능을 수정하는 방법은 무엇입니까?

function openerp_pos_models(instance, module){ 
    ... 
    module.Order = Backbone.Model.extend({ 
     ... 
     addPaymentline: function(cashregister) { 
      var paymentLines = this.get('paymentLines'); 
      var newPaymentline = new module.Paymentline({},{cashregister:cashregister, pos:this.pos}); 
      if(cashregister.journal.type !== 'cash'){ 
       newPaymentline.set_amount(Math.max(this.getDueLeft(),0)); 
      } 
      paymentLines.add(newPaymentline); 
      this.selectPaymentline(newPaymentline); 

     }, 
    }); 
} 

내가 그 몇 줄의 코드를 수정하고 내가 원하는대로 변경 작업 (난 단지 if (cashregister.journal.type !== 'cash') 라인을 제거). 문제는 지금, 나는이 코드를 올바른 방법으로, 내가 만든 모듈로부터 수정하고 싶다.

<?xml version="1.0" encoding="utf-8"?> 
<openerp> 
    <data> 
     <template id="assets_backend" name="nmx_pos_ext assets" inherit_id="web.assets_backend"> 
      <xpath expr="." position="inside"> 
       <script type="text/javascript" src="/nmx_pos_ext/static/src/js/nmx_pos_ext.js"></script> 
      </xpath> 
     </template> 
    </data> 
</openerp> 

그리고 JS의 내용 :

는이를 위해, 나는 (이 마지막 내 __openerp__.py데이터 매개 변수를 포함) 다음과 같은 XML 파일에서 호출되는 자바 스크립트 파일을 추가 파일은 다음과 같습니다

openerp.nmx_pos_ext = function(instance) { 

var _t = instance.web._t; 

instance.point_of_sale.Order.include({ 
    addPaymentline: function(cashregister) { 
     var paymentLines = this.get('paymentLines'); 
     var newPaymentline = new module.Paymentline({},{cashregister:cashregister, pos:this.pos}); 
     newPaymentline.set_amount(Math.max(this.getDueLeft(),0)); 
     paymentLines.add(newPaymentline); 
     this.selectPaymentline(newPaymentline); 

    }, 
}); 

}

내가 모듈을 업데이트하고 변경 사항이 적용되지 않는, 내가 할 백본 모델에 include이 없기 때문에 오류가 발생합니다. 내가 대신 includeset와 시도,하지만 난 같은 오류 얻을 :

instance.point_of_sale.Order.set 함수가 아닌를

사람이 여기 좀 도와 주 시겠어요?

답변

2

이렇게하면됩니다.

openerp.nmx_pos_ext = function(instance) { 
    var _t = instance.web._t; 

    var _initialize_Order_ = instance.point_of_sale.Order.prototype; 
    instance.point_of_sale.Order = instance.point_of_sale.Order.extend({ 
     initialize: function(attributes){ 
      _initialize_Order_.initialize.call(this,attributes); 
     }, 
     addPaymentline: function(cashregister) { 
      var paymentLines = this.get('paymentLines'); 
      var newPaymentline = new instance.point_of_sale.Paymentline(
       {}, 
       { 
        cashregister: cashregister, 
        pos: this.pos 
       } 
      ); 
      newPaymentline.set_amount(
       Math.max(this.getDueLeft(), 0) 
      ); 
      paymentLines.add(newPaymentline); 
      this.selectPaymentline(newPaymentline); 

     }, 
    }); 
} 
+0

귀하의 코드가 작동! (간단한 편집으로). 대단히 감사합니다 !! – forvas

0

이 시도 :

instance.module.Order.include({ 
addPaymentline: function(cashregister) { 
    var paymentLines = this.get('paymentLines'); 
    var newPaymentline = new module.Paymentline({},{cashregister:cashregister, pos:this.pos}); 
    newPaymentline.set_amount(Math.max(this.getDueLeft(),0)); 
    paymentLines.add(newPaymentline); 
    this.selectPaymentline(newPaymentline); 

    }, 
}); 
+0

답변 해 주셔서 감사합니다. 귀하의 코드를 제공합니다 * "정의되지 않은"모델의 '속성'속성을 읽을 수 없습니다. – forvas

+0

내 대답이 업데이트되었습니다. 다시 시도하십시오. – KbiR

+0

방금 ​​새 코드를 시도했지만 이전 오류에 쓴 동일한 오류가 발생합니다. @Viki Chavada가 제공 한 솔루션은 그 순간까지 훌륭하게 작동하는 것처럼 보입니다. 그 코드로 인해 부차적 인 영향이 없는지 확인하기 위해 더 노력할 것입니다. 마찬가지로 당신을 감사하십시오. – forvas