Zum Inhalt springen
Menü
Sie müssen registriert sein, um mit der Community zu interagieren.
Diese Frage wurde gekennzeichnet

How can I create a print my invoice report (account.report_invoice_with_payments)
after the creation of the invoice in the code

sale_ids_onkosten = []


# Group sale orders based on sale_id and whether they contain onkosten or not

for picking in records:

    if picking.sale_id:

        if picking.sale_id.invoice_status != 'to invoice':

            last_invoice = picking.sale_id.invoice_ids.sorted(key=lambda i: i.id, reverse=True)[0]

            last_chauffeurblad = picking.x_chauffeurblad.sorted(key=lambda r: r.id, reverse=True)[0]

            last_chauffeurblad.update({'x_invoice_id': last_invoice.id})

            picking.update({'x_invoice_id': last_invoice.id})

            error_message = 'FACTUUR REEDS GEMAAKT'

            picking.write({'x_error': error_message})

        else:

            if any(keyword in picking.x_ff.x_name.lower() for keyword in ['maand','lever', 'week', 'weke', 'post']):

                error_message = 'NIET GEFACTUREERD FACTURATIE TYPE: ' + picking.x_ff.x_name.upper()

                picking.write({'x_error': error_message})

            else:

                sale_id_list = sale_ids_onkosten if any("onkosten" in line.product_id.name.lower() for line in picking.move_ids_without_package) else sale_ids

                if picking.sale_id.id not in sale_id_list:

                    sale_id_list.append(picking.sale_id.id)


# Function to handle creation and confirmation of invoices

def process_invoices(sale_ids, onkosten=False):

    grouped_sale_orders = {}

    for sale_id in sale_ids:

        sale_order = env['sale.order'].browse(sale_id)

        key = (sale_order.partner_id.id, sale_order.partner_shipping_id.id)

        grouped_sale_orders.setdefault(key, []).append(sale_order)


    for order_group in grouped_sale_orders.values():

        sale_orders = env['sale.order'].concat(*order_group)

        invoices = sale_orders._create_invoices()


        for invoice in invoices:

            partner_email = invoice.partner_id.x_invoice_email or invoice.partner_id.email

            if invoice.amount_total

                invoice.write({'x_message': 'Fout bij bedrag'})

            else:

                invoice.write({'x_message': '✓'})

                invoice.action_post()


            for picking in records:

                if picking.sale_id and picking.sale_id.name in invoice.invoice_origin:

                    error_message = 'FACTUUR'

                    if onkosten:

                        error_message += ' (onkosten)'

                    picking.write({'x_error': error_message})


                    last_chauffeurblad = picking.x_chauffeurblad.sorted(key=lambda r: r.id, reverse=True)[0]

                    volgorde = picking.x_volgorde

                    last_note_value = last_chauffeurblad.x_drivers_sheet_id.x_name if last_chauffeurblad.x_drivers_sheet_id else ''

                    if volgorde != 0.0:

                        invoice.write({'x_volgorde': volgorde})

                    

                    last_chauffeurblad.update({'x_invoice_id': invoice.id}) #update het chauffeursblad met link naar factuur

                    picking.update({'x_invoice_id': invoice.id}) #update de link naar de factuur in de leveringsbon

                    invoice.write({'x_chauffeur': last_note_value}) #update chauffeur op de factuur

                    

                    

                    

                    


# Process invoices for regular sale orders

if sale_ids:

    process_invoices(sale_ids)


# Process invoices for sale orders with onkosten

if sale_ids_onkosten:

    process_invoices(sale_ids_onkosten, onkosten=True)

Avatar
Verwerfen
Verknüpfte Beiträge Antworten Ansichten Aktivität
0
Apr. 24
1077
1
Feb. 24
1843
2
Jan. 24
5234
7
Mai 23
31956
1
März 22
2954