Un problema que surgía era la duplicación en los nombres de los pagos. Es por ello que agregamos a los diarios una secuencia de pagos dedicada
De esta manera solo (y enfatizo el solo) cuando se crea un recibo de pagos, la línea de pagos recibirá su propio nombre (sobre el cual tenemos total control, debido a que podemos dedicarle la secuencia y aplicar a la misma el formato que deseemos.
Entonces, al guardar un recibo, podemos ver que a cada línea se le asigna el nombre otorgado por la secuencia
Con lo cual se evita la duplicidad de nombres (incluso si dos medios de pago comparten la secuencia).
Como hacemos esto? Si observamos el código veremos que el módulo account_payment_group extiende el método create del modelo account.payment (que es un account.move con esteroides)
if 'journal_id' in vals:
journal = self.env['account.journal'].browse(vals.get('journal_id'))
if not journal.payment_sequence_id:
raise ValidationError('Debe configurar la secuencia de pagos para %s'%(journal.name))
next_name = self.env['ir.sequence'].next_by_code(journal.payment_sequence_id.code)
vals['name'] = next_name
Como pueden ver, en el create chequeamos si esta el journal y si el mismo no tiene la secuenceia dedicada... se emite un mensaje de error. Caso contrario se sobreescribe el nombre con el valor devuelto por la secuencia. Otro ejemplo de como extender el método create.
Por último seguimos con nuestra campaña de reducir la cantidad de líneas de código de la localización, e hicimos un gran avance de cuando la iniciamos con este post.