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
Ricordati di dichiarare la versione di Odoo a cui riferisce la domanda

ARGOMENTO: [Report] Order by

[Report] Order by 4 Anni 2 Mesi fa #18527

  • vencizon
  • Avatar di vencizon
  • Offline
  • Expert Boarder
  • Messaggi: 121
  • Ringraziamenti ricevuti 3
  • Karma: 1
Salve a tutti.
So che sto intasando il forum di richieste, magari anche banali, ma non so a chi altri chiedere. :sorry:

Sono sempre alle prese con la scrittura di un modulo che mi permetta di stampare i Timesheet, usando QWeb.
Il modulo è praticamente finito, ho capito più o meno tutto, ma ho solo un piccolo problema riguardo la visualizzazione dei dati.

Scorrendo le entry nella tabella relativa ai timesheet, ottengo le stampe in ordine di inserimento (ovviamente).
Ho provato a creare una vista, ma, se provo a stampare direttamente dalla nuova classe creata, non visualizzo nulla (come se la vista fosse vuota).
class timesheet_print(osv.osv):
    _name = "hr.analytic.timesheet"
    _inherit = "hr.analytic.timesheet"
    
    _columns = {
        'print_ids': fields.one2many('timesheet_print_line', 'id', 'Print', readonly=True),
    }

    
class timesheet_print_line(osv.osv):
    _name = "timesheet_print_line"
    _auto = False
    _order = "r_date"
    _columns = {
        'id': fields.integer('Id', readonly=True),
        'r_date': fields.date('Date', readonly=True),
        'r_type': fields.many2one('account.analytic.account', 'Analytic Account',readonly=True),
        'r_hours': fields.float('Hours', readonly=True),
        'r_note': fields.char('Note', size=32,readonly=True),
    }

    def init(self, cr):
        tools.drop_view_if_exists(cr, self._table)
        cr.execute("""CREATE or REPLACE VIEW %s as (
            
            SELECT min(h.id) as id,
                    a.date as r_date,
                    a.unit_amount as r_hours,
                    a.account_id as r_type,
                    h.note as r_note
            
            FROM ( account_analytic_line as a
                    left join hr_analytic_timesheet as h ON (h.line_id=a.id)
                 )
                 
            GROUP BY a.date,
                    a.unit_amount,
                    a.account_id,
                    h.note
                    
            ORDER BY r_date
            
            )""" % (self._table))

Se scorro i timesheet per id, stampando dalla vista, ottengo i risultati sperati, ma nell'ordine di inserimento.
<table>
    <tr>
        <th>Type</th>
        <th>Date</th>
        <th>Hours</th>
        <th>Note</th>
    </tr>
                
    <tr t-foreach="o.timesheet_ids" t-as="entry">
        <th>
            <span t-field="entry.print_ids.r_type"/>
        </th>
                    
        <td>
            <span t-field="entry.print_ids.r_date"/>
        </td>
                                       
        <td>
            <span t-field="entry.print_ids.r_hours" t-field-options='{"widget": "duration", "unit": "hour"}'/>
        </td>
       
        <td>
            <span t-field="entry.print_ids.r_note"/>
        </td>
    </tr>
</table>

La mia domanda è: posso ottenere una stampa per ordine di data, indipendentemente dall'inserimento?
Ho provato a fare un modulo inherit "hr.analytic.timesheet", mettendo "_order = "date"", ma ho un errore
InternalError: current transaction is aborted, commands ignored until end of transaction block
penso dovuto al fatto che le date sono inserite nel database dal widget javascript.

Come procedo? Mi arrendo?
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

[Report] Order by 4 Anni 2 Mesi fa #18539

  • NicoTheBrush
  • Avatar di NicoTheBrush
  • Offline
  • Platinum Boarder
  • Messaggi: 1952
  • Ringraziamenti ricevuti 156
  • Karma: 46
Quello che stai facendo "tecnicamente" è errato, hai messo un campo o2m dicendo che il campo di collegamento nell'oggetto esterno è "ID", dovrebbe invece essere un eventuale "timesheet_id" che contiene l'id di hr.analytic.timesheet (non so se sono stato chiarissimo)
Tra l'altro nel tuo oggetto mettendo _auto = False devi creare la query / vista nell'init di tale oggetto altrimenti non sottende nessuna tabella / query nel DB.

Su due piedi farei un campo o2m di tipo function dove cerco con search (passando il parametro _order) le righe collegate ordinate per data e poi usi quel campo nella stampa (ripetendomi: non so se sono stato chiaro :) )
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

[Report] Order by 4 Anni 1 Settimana fa #19398

  • vencizon
  • Avatar di vencizon
  • Offline
  • Expert Boarder
  • Messaggi: 121
  • Ringraziamenti ricevuti 3
  • Karma: 1
Riesumo il post per dire che ho risolto utilizzando il modulo www.odoo.com/apps/modules/8.0/one2many_sorted/

È la via più semplice ed immediata per ottenere una "lista ordinata". ;)
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.
Ringraziano per il messaggio: NicoTheBrush

[Report] Order by 4 Anni 1 Settimana fa #19412

  • NicoTheBrush
  • Avatar di NicoTheBrush
  • Offline
  • Platinum Boarder
  • Messaggi: 1952
  • Ringraziamenti ricevuti 156
  • Karma: 46
Grazie di avere chiuso il post anche con una soluzione
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.
Tempo creazione pagina: 0.138 secondi

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

Protected by R Antispam