Skip to content

[T3357] FIX: Child Gift contract invoice generation crash - #2132

Open
danpa32 wants to merge 1 commit into
18.0from
T3357-fix-gift-contract-invoice-generation
Open

[T3357] FIX: Child Gift contract invoice generation crash#2132
danpa32 wants to merge 1 commit into
18.0from
T3357-fix-gift-contract-invoice-generation

Conversation

@danpa32

@danpa32 danpa32 commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

Original report

Test procedure: create a Child Gift contract for a sponsor with an active
LSV/DD sponsorship, link a sponsorship gift product to the existing
sponsorship, save/validate, then click "Generate invoices".

Expected: correct invoices generated at the right frequency.
Actual: clicking "Generate invoices" returned an RPC_ERROR:

Root cause

sponsorship_compassion/models/contract_group.py, build_inv_line_data():

if contract_line and contract_line.contract_id.type == "G":
    res["contract_id"] = contract_line.sponsorship_id

sponsorship_id (recurring_contract_line.py) is a Many2one to
recurring.contract — so contract_line.sponsorship_id is a recordset, not
an id
. Every other assignment in this method (and the base
recurring_contract/contract_group.py version) uses .id. When building the
invoice line for a Child Gift contract, account.move.line.contract_id was
set to that recordset directly;

How to test manually

See Quality test

build_inv_line_data() assigned contract_line.sponsorship_id (a Many2one
recordset) directly to the invoice line's contract_id instead of its id,
causing psycopg2.ProgrammingError: can't adapt type 'recurring.contract'
whenever a Child Gift contract's invoices were generated.
@danpa32
danpa32 requested a review from ecino August 10, 2026 11:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant