This question has been flagged
4846 Views

How can i go about adding a custom module to models.js to load ? and how can i gte my js file to read a new js function

so far i have created a js file which as the same content as models.js  called pos_extend.js and created a new function however it seems my file is not being read.

and i get this error : Uncaught Error: QWeb2 - template['PosTicket']: Runtime Error: TypeError: undefined is not a function


static/src/js/pos_extend.js :



var orderline_id = 1;

var erhu = 3

// An orderline represent one element of the content of a client's shopping cart.

// An orderline contains a product, its quantity, its price, discount. etc.

// An Order contains zero or more Orderlines.

module.Orderline = Backbone.Model.extend({

initialize: function(attr,options){

this.pos = options.pos;

this.order = options.order;

this.product = options.product;

this.price = options.product.price;

this.quantity = 1;

this.quantityStr = '1';

this.discount = 0;

this.discountStr = '0';

this.type = 'unit';

this.selected = false;

this.id = orderline_id++;

this.invoice_company = erhu;

},

clone: function(){

var orderline = new module.Orderline({},{

pos: this.pos,

order: null,

product: this.product,

price: this.price,

});

orderline.quantity = this.quantity;

orderline.quantityStr = this.quantityStr;

orderline.discount = this.discount;

//orderline.invoice_company = this.invoice_company

orderline.type = this.type;

orderline.selected = false;

return orderline;

},

// sets a discount [0,100]%

set_discount: function(discount){

var disc = Math.min(Math.max(parseFloat(discount) || 0, 0),100);

this.discount = disc;

this.discountStr = '' + disc;

this.trigger('change',this);

},

// returns the discount [0,100]%

get_discount: function(){

return this.discount;

},

get_discount_str: function(){

return this.discountStr;

},

get_product_type: function(){

return this.type;

},

// sets the quantity of the product. The quantity will be rounded according to the

// product's unity of measure properties. Quantities greater than zero will not get

// rounded to zero

set_quantity: function(quantity){

if(quantity === 'remove'){

this.order.removeOrderline(this);

return;

}else{

var quant = parseFloat(quantity) || 0;

var unit = this.get_unit();

if(unit){

if (unit.rounding) {

this.quantity = round_pr(quant, unit.rounding);

this.quantityStr = this.quantity.toFixed(Math.ceil(Math.log(1.0 / unit.rounding) / Math.log(10)));

} else {

this.quantity = round_pr(quant, 1);

this.quantityStr = this.quantity.toFixed(0);

}

}else{

this.quantity = quant;

this.quantityStr = '' + this.quantity;

}

}

this.trigger('change',this);

},

// return the quantity of product

get_quantity: function(){

return this.quantity;

},

get_quantity_str: function(){

return this.quantityStr;

},

get_invoice_company: function() {

return this.invoice_company;

},

get_quantity_str_with_unit: function(){

var unit = this.get_unit();

if(unit && !unit.is_unit){

return this.quantityStr + ' ' + unit.name;

}else{

return this.quantityStr;

}

},


new function added : 

get_invoice_company: function() {

return this.invoice_company;

},


static/src/xml/pos.xml :

<templates id="template" xml:space="preserve">

<t t-extend="PosTicket">

   <t t-jquery=".pos-sale-ticket" t-operation="replace">



 <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="150px" width="150px"/></div>

            <div class="pos-center-align"><t t-esc="new Date().toString(Date.CultureInfo.formatPatterns.shortDate + ' ' +

                Date.CultureInfo.formatPatterns.longTime)"/> <t t-esc="order.get('name')"/></div>

            <br />

            <t t-esc="widget.pos.company.name"/><br />

            Phone: <t t-esc="widget.pos.company.phone || ''"/><br />         

            User: <t t-esc="widget.pos.cashier ? widget.pos.cashier.name : widget.pos.user.name"/><br /> 

      

          <!-- <Order <t t-esc="widget.currentOrder.getName()"/><br/> -->    

            <!--Shop: <t t-esc="widget.pos.shop.name"/><br />-->

            

             <br />

            <t t-if="widget.pos.config.receipt_header">

                <div style='text-align:center'>

                    <t t-esc="widget.pos.config.receipt_header" />

                </div>

                <br />

            </t>

            <table>

                <colgroup>

                    <col width='50%' />

                    <col width='25%' />

                    <col width='25%' />

                </colgroup>

                <tr t-foreach="orderlines" t-as="orderline">

                    <td>

                    <t t-esc="orderline.get_product().display_name"/>


                         <t t-if="orderline.get_discount() > 0">

                            <div class="pos-disc-font">

                                With a <t t-esc="orderline.get_discount()"/>% discount

                            </div>

                        </t>

                    </td>

                    <td class="pos-right-align">

                        <t t-esc="orderline.get_quantity_str_with_unit()"/>

                    </td>

   <td class="pos-right-align">

   Property Company : <t t-esc="orderline.get_invoice_company()"/>

   </td>

                    <td class="pos-right-align">

                        <t t-esc="widget.format_currency(orderline.get_display_price())"/>

                    </td>

                </tr>

            </table>

            <br />

            <table>

                <tr>

                    <td>Subtotal:</td>

                    <td class="pos-right-align">

                        <t t-esc="widget.format_currency(order.getSubtotal())"/>

                    </td>

                </tr>

                <t t-foreach="order.getTaxDetails()" t-as="taxdetail">

                    <tr>

                        <td><t t-esc="taxdetail.name" /></td>

                        <td class="pos-right-align">

                            <t t-esc="widget.format_currency(taxdetail.amount)" />

                        </td>

                    </tr>

                </t>

                <tr>

                    <td>Discount:</td>

                    <td class="pos-right-align">

                        <t t-esc="widget.format_currency(order.getDiscountTotal())"/>

                    </td>

                </tr>

                <tr class="emph">

                    <td>Total:</td>

                    <td class="pos-right-align">

                        <t t-esc="widget.format_currency(order.getTotalTaxIncluded())"/>

                    </td>

                </tr>

            </table>

            <br />

            <table>

                <tr t-foreach="paymentlines" t-as="line">

                    <td>

                        <t t-esc="line.name"/>

                    </td>

                    <td class="pos-right-align">

                        <t t-esc="widget.format_currency(line.get_amount())"/>

                    </td>

                </tr>

            </table>

            <br />

            <table>

                <tr><td>Change:</td><td class="pos-right-align">

                    <t t-esc="widget.format_currency(order.getChange())"/>

                    </td></tr>

            </table>

            <t t-if="widget.pos.config.receipt_footer">

                <br />

                <div style='text-align:center'>

                    <t t-esc="widget.pos.config.receipt_footer" />

                </div>

            </t>

        </div>

         </t>

</t>

</templates>



js_inheritance.xml :



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


Any help would be appreciated ?



Avatar
Discard