Questo sito utilizza cookie per le proprie funzionalità e per inviarti pubblicità e servizi in linea con le tue preferenze. Chiudendo questo banner, scorrendo questa pagina o cliccando qualunque suo elemento acconsenti all’uso dei cookie.

Accedendo al link http://www.odoo-italia.org/index.php/home/cookie-policy puoi leggere in dettaglio le modalità di trattamento dei cookie da parte dell'Associazione Odoo Italia.

Benvenuto, Ospite
Nome utente: Password: Ricordami

ARGOMENTO: Report QWeb da wizard

Report QWeb da wizard 3 Anni 6 Mesi fa #21809

  • vencizon
  • Avatar di vencizon
  • Offline
  • Expert Boarder
  • Messaggi: 121
  • Ringraziamenti ricevuti 3
  • Karma: 1
Salve a tutti,
sto provando a generare un report partendo da un wizard.

Ho creato un modulo che contiene dei dati, successivamente ho creato un altro modulo che crea un wizard che genera un report.

Il fatto è che non riesco ad accedere ai dati del primo modulo attraverso il secondo.

L'oggetto del primo modulo è "tc_geco_test.courses" (contenuto nel modulo tc_geco_test), che contiene alcuni campi che vorrei stampare nel report PFD (usando QWeb).

Di seguito l'albero del modulo di wizard:
- __init__.py
- __openerp__.py
- geco_report_corsi_view.xml
- tc_geco_test_report_corsi.xml
- report/
---- __init__.py
---- geco_report_corsi.py
---- report_corsi_geco.xml

E tutti i file nel dettaglio:

__init__.py
import report

__openerp__.py
{
    'name': 'Ge.Co. Test Wizard',
    'version': '0.1',
    'depends': ['tc_geco_test'],
    'data': [
                'geco_report_corsi_view.xml',
                'tc_geco_test_report_corsi.xml',
                'report/report_corsi_geco.xml',                
            ],
    'installable': True,
    'application': False,
    'description': '...',
}

geco_report_corsi_view.xml
<?xml version="1.0" encoding="utf-8"?>
<openerp>
    <data>
    
        <record model="ir.ui.view" id="wizard_form_view">
            <field name="name">wizard.courses_report_form</field>
            <field name="model">tc_geco.report_corsi</field>
            <field name="arch" type="xml">
                <form string="Courses Report">
                    <group>
                        <field name="date_start"/>
                        <field name="date_stop"/>
                    </group>
                    <footer>
                        <button name="submit" type="object"
                                string="Submit" class="oe_highlight"/>
                        or
                        <button special="cancel" string="Cancel"/>
                    </footer>
                </form>
            </field>
        </record>

        <act_window id="launch_courses_report_wizard"
                    name="Courses Report"
                    src_model="tc_geco_test.courses"
                    res_model="tc_geco.report_corsi"
                    view_mode="form"
                    target="new"
                    key2="client_action_multi"
        />
        
        <menuitem action="launch_courses_report_wizard" id="menu_launch_courses_report_wizard" parent="hr.menu_hr_main" groups="base.group_hr_manager" name="Ge.Co. Courses Report"/>
    
    </data>
</openerp>

tc_geco_test_report_corsi.xml
<?xml version="1.0" encoding="utf-8"?>
<openerp>
    <data>

        <report
            id="tc_geco_test_report_corsi"
            model="tc_geco.report_corsi"
            report_type="qweb-pdf"
            string="Stampa Report Corsi"
            name="tc_geco_report_wizard_due.report_corsi_geco"
            file="tc_geco_report_wizard_due.report_corsi_geco"
        />
        
    </data>
</openerp>

report/geco_report_corsi.py
import datetime

from openerp.osv import orm, fields
from openerp.tools.translate import _

class tc_geco_report_courses(orm.TransientModel):
    _name = 'tc_geco.report_corsi'
    _columns = {
        'name': fields.char('Name'),
        'date_start': fields.date('Start Date'),
        'date_stop': fields.date('End Date'),
    }
    
    def _default_start(self, cr, uid, ids, context=None):
        return datetime.date.today().replace(month=01, day=01)
        
    def _default_stop(self, cr, uid, ids, context=None):
        return datetime.date.today().replace(month=12, day=31)

    def submit(self, cr, uid, ids, context=None):
        geco_course_obj = self.pool.get('tc_geco_test.courses')
        cur_obj = self.browse(cr, uid, ids, context=context)
        datas = {}
        courses_ids = geco_course_obj.search(cr, uid, [('start','>=',cur_obj.date_start),('end','<=',cur_obj.date_stop)], context=context)
        course_obj = geco_course_obj.browse(cr, uid, courses_ids, context=context)
        if courses_ids:
            data = self.read(cr, uid, ids, context=context)[0]
            datas = {
            'ids': courses_ids,
            'model': 'tc_geco_test.courses',
            'form': data,
            'context': context,
            }
            return {
                   'type': 'ir.actions.report.xml',
                   'report_name': 'tc_geco_report_wizard_due.report_corsi_geco',
                   'datas': datas,
               }

report/report_corsi_geco.xml
<?xml version="1.0" encoding="utf-8"?>
<openerp>
    <data>
            
        <template id="report_corsi_geco">
            <t t-call="report.html_container">
                <t t-call="report.external_layout">
                    <div class="page">
                        <table class="table">
                            <tr>
                                <td style="border: none; padding: 0;">
                                    <p style="font-size: 20px; font-weight: bold;">Report Corsi</p>
                                </td>
                            </tr>
                        </table>
                        
                        <table class="table table-condensed">
                            <tr>
                                <td style="font-size: 13px; text-align: center; color: #FFF; font-weight: bold; background-color: #0973BA; border-color: #8CBEE3;">Account</td>
                                <td style="font-size: 13px; text-align: center; color: #FFF; font-weight: bold; background-color: #0973BA; border-color: #8CBEE3;">Docente</td>
                                <td style="font-size: 13px; text-align: center; color: #FFF; font-weight: bold; background-color: #0973BA; border-color: #8CBEE3;">Corso Interno</td>
                                <td style="font-size: 13px; text-align: center; color: #FFF; font-weight: bold; background-color: #0973BA; border-color: #8CBEE3;">Corso Esterno</td>
                                <td style="font-size: 13px; text-align: center; color: #FFF; font-weight: bold; background-color: #0973BA; border-color: #8CBEE3;">Data Inizio</td>
                                <td style="font-size: 13px; text-align: center; color: #FFF; font-weight: bold; background-color: #0973BA; border-color: #8CBEE3;">Data Fine</td>
                                <td style="font-size: 13px; text-align: center; color: #FFF; font-weight: bold; background-color: #0973BA; border-color: #8CBEE3;">Valutazione</td>
                            </tr>
                            
                            
                            <tr t-foreach="docs" t-as="o">
                                    <td> --- </td>
                                    <td> --- </td>
                                    <td> --- </td>
                                    <td> --- </td>
                                    <td> --- </td>
                                    <td> --- </td>
                                    <td> --- </td>
                            </tr>
                        </table>
                        
                    </div>
                </t>
            </t>
        </template>
        
    </data>
</openerp>

Ovviamente non riesco ad ottenere il risultato sperato, ovvero generare un report contenente le informazioni dei campi contenuti in "course_obj = geco_course_obj.browse(cr, uid, courses_ids, context=context)"

Sapete aiutarmi?
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.
Tempo creazione pagina: 0.126 secondi

Odoo Italia Associazione - C.F: 94200470485 - Sede: Viale dei Cadorna, 83 - Firenze - Italy

Protected by R Antispam