Salve a tutti.
So che sto intasando il forum di richieste, magari anche banali, ma non so a chi altri chiedere.
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?