تخطي للذهاب إلى المحتوى
القائمة
لقد تم الإبلاغ عن هذا السؤال
1 الرد
23943 أدوات العرض
Traceback (most recent call last):
  File "/home/tom/odoo/odoo-server/odoo/addons/base/models/qweb.py", line 344, in _compiled_fn
    return compiled(self, append, new, options, log)
  File "<template>", line 1, in template_741_43
AttributeError: 'NoneType' object has no attribute 'get_state_count'



my code
<div class="card text-white bg-primary"> <div class="card-body"> <div class="stat-widget-one"> <div class="stat-content dib"> <div class="stat-text">Quatation</div> <div class='stat-digit'> <t t-esc="sale.get_state_count()"/> </div> </div> </div> </div> </div>



# -*- coding: utf-8 -*- from odoo import api, fields, models, _ class SaleOrder(models.Model): _inherit = 'sale.order' @api.multi def get_state_count(self): count = len(self.env['sale.order'].search([('state','=','draft')]).ids) print("\n\n\n\n",count) return count please help
thanks in advance
الصورة الرمزية
إهمال
أفضل إجابة

Hi Geo,

You should remove the @api.multi. Because of the @api.multi decorator Odoo cannot find your function. Are you inheriting the default existing report in Odoo? Because then you should not use "sale.get_sale_count()" but "doc.get_sale_count()" as Odoo uses doc as variable in this report. An example in XML:

<t t-set="state_count" t-value="doc.get_state_count()"/>
<span t-esc="state_count"/>

An example in Python:

    def get_state_count(self):
        count = len(self.env['sale.order'].search([('state','=','draft')]).ids)
        return count

Regards,
Yenthe

الصورة الرمزية
إهمال

Exactly which report are you inheriting and modifying? Are you not defining the variables? Perhaps it is nice to add more code to your initial question so we can see the whole XML.

الكاتب

actually its not report

controller

from odoo import http

from odoo.http import request

from odoo.addons.sale.controllers.onboarding import OnboardingController # Import the class

class CustomOnboardingController(OnboardingController): # Inherit in your custom class

@http.route('/sales/sale_quotation_onboarding_panel', auth='user', type='json')

def sale_quotation_onboarding(self):

#res = super(CustomOnboardingController, self).sale_quotation_onboarding()

company = request.env.user.company_id

return {

'html': request.env.ref('sale_notify.sale_quotation_notify').render({

'company': company,

'state': company.get_and_update_sale_quotation_onboarding_state()

})

}

xml

<?xml version="1.0" encoding="utf-8"?>

<odoo>

<template id="sale_quotation_notify" name="sale.quotation.notify">

<div class="row">

<div class ="col-5">

<div class="row">

<div class ='col'>

<!-- <div class="stat-digit">

<t t-set="count" t-value='sale.get_state_count()'/>

</div> -->

<t t-set="state_count" t-value="sale.get_state_count()"/>

<div class="card text-white bg-primary">

<div class="card-body">

<div class="stat-widget-one">

<div class="stat-content dib">

<div class="stat-text">Quatation</div>

<div class='stat-digit'>

<t t-esc="state_count"/>

</div>

</div>

</div>

</div>

</div>

</div>

<div class ='col'>

<div class="card text-white bg-primary">

<div class="card-body">

<div class="stat-widget-one">

<div class="stat-content dib">

<div class="stat-text">Quatation Sent</div>

</div>

</div>

</div>

</div>

</div>

<div class ='col'>

<div class="card text-white bg-primary">

<div class="card-body">

<div class="stat-widget-one">

<div class="stat-content dib">

<div class="stat-text">Sale Order</div>

</div>

</div>

</div>

</div>

</div>

<div class ='col'>

<div class="card text-white bg-primary">

<div class="card-body">

<div class="stat-widget-one">

<div class="stat-content dib">

<div class="stat-text">Cancel</div>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</template>

</odoo>

python

# -*- coding: utf-8 -*-

from odoo import api, fields, models, _

class SaleOrder(models.Model):

_inherit = 'sale.order'

def get_state_count(self):

count = len(self.env['sale.order'].search([('state','=','draft')]).ids)

print("\n\n\n\n",count)

return count

thanks for your consider

Hmm interesting. I assume that because you call it from the controller with a render that it works a bit different. I have no modules that look like this to test with & I haven't done this requirement for now I'm afraid. Let's see if somebody else can give you a good solution for this.