Skip to Content

Contributors

Proforma invoices in Odoo

Hello all,

long time listener, first time caller. I need to develop a module to handle proforma invoices, as the default Odoo implementation is not at all adequate for the needs of multiple customers. What we need looks more like what Sales Orders have, with the 3 states ("Quotation" => "Quotation Sent" => "Sales Order"), where the proforma invoice corresponds to the "Quotation Sent" state.

Requirements:

  • Invoices (not SOs) can (optionally) become Proforma Invoices, before being confirmed and posted. It doesn't necessarily have to be a new "state" selection, but it seems to be the most natural fit for it.
  • When an invoice becomes a proforma (which logically implies it's being sent to the customer for confirmation), it should take a sequence number from a different sequence than posted invoices. When the invoice is eventually confirmed and posted, it will then take the usual number.  The number it takes when it becomes a proforma should be saved somewhere.
  • Proforma invoices can go back to draft, be cancelled, or be confirmed and posted.
  • The printed version should clearly state it's a proforma, but it's otherwise the same as a regular invoice.

I've searched for an OCA module resembling these requirements but couldn't find it. Is there an OCA module for this, or is someone developing it? If not, I will work on it myself and propose it in https://github.com/OCA/account-invoicing/

Thank you for your time

Have a good day

--

Alessandro Uffreduzzi

Developer

alessandro.uffreduzzi@pytech.it

PyTech Srl

Sede legale: Via Barozzi 40/8 - 41124 Modena

Sede operativa: Via P. Giardini 472/L - 41124 Modena

P.IVA 03988700369

www.pytech.it

PyTech
          Logo

by Alessandro Uffreduzzi - 06:25 - 26 Apr 2023

Follow-Ups

  • Re: Proforma invoices in Odoo

    Hello,

    At my employer's, I implemented proforma invoices simply by adding a watermark-like background saying "proforma", covering the whole sheet, if the invoice is still a draft.

    However, other companies may need a more elaborate implementation.

    Regards,

    João Jerónimo


    Às 17:27 de 26/04/2023, Alessandro Uffreduzzi escreveu:

    Hello all,

    long time listener, first time caller. I need to develop a module to handle proforma invoices, as the default Odoo implementation is not at all adequate for the needs of multiple customers. What we need looks more like what Sales Orders have, with the 3 states ("Quotation" => "Quotation Sent" => "Sales Order"), where the proforma invoice corresponds to the "Quotation Sent" state.

    Requirements:

    • Invoices (not SOs) can (optionally) become Proforma Invoices, before being confirmed and posted. It doesn't necessarily have to be a new "state" selection, but it seems to be the most natural fit for it.
    • When an invoice becomes a proforma (which logically implies it's being sent to the customer for confirmation), it should take a sequence number from a different sequence than posted invoices. When the invoice is eventually confirmed and posted, it will then take the usual number.  The number it takes when it becomes a proforma should be saved somewhere.
    • Proforma invoices can go back to draft, be cancelled, or be confirmed and posted.
    • The printed version should clearly state it's a proforma, but it's otherwise the same as a regular invoice.

    I've searched for an OCA module resembling these requirements but couldn't find it. Is there an OCA module for this, or is someone developing it? If not, I will work on it myself and propose it in https://github.com/OCA/account-invoicing/

    Thank you for your time

    Have a good day

    --

    Alessandro Uffreduzzi

    Developer

    alessandro.uffreduzzi@pytech.it

    PyTech Srl

    Sede legale: Via Barozzi 40/8 - 41124 Modena

    Sede operativa: Via P. Giardini 472/L - 41124 Modena

    P.IVA 03988700369

    www.pytech.it

    PyTech Logo

    _______________________________________________
    Mailing-List: https://odoo-community.org/groups/contributors-15
    Post to: mailto:contributors@odoo-community.org
    Unsubscribe: https://odoo-community.org/groups?unsubscribe


    by j_j_b_o_devel - 02:36 - 28 Apr 2023
  • Re: Proforma invoices in Odoo

    Hi Allessandro,

    sorry for not having written earlier. I think the decision that you have taken is the most appropriate one as the standard implementation fullfills the must-have requirement of "proforma invoices" (at least of what i consider must-have).

    It lies in its nature that such an "invoice" isn't a real invoice by fiscal nature (and just like in the case of Odoo is a different object therefore). The only alternative that i would have in mind, was to use the real invoice object (in the Odoo sense) and send them as "proforma" as long as they aren't actually verified. In this case a specific label on the report could mark this. But this wouldn't have any conceivable technical advantages over the standard solution and probably more than one disadvantages besides pure usability, so all in all your choice seems to be pretty sensible.

    Best Frederik


    Am 27.04.23 um 15:56 schrieb Alessandro Uffreduzzi:

    Hello,

    thank you all for your replies. Based on your feedback me and my colleagues insisted with the most pressing customer and we convinced them to use

    1. The native odoo functionality with regards to proforma invoices (i.e. sales orders);
    2. Alternatively, by just changing the title when printing a draft invoice from "draft" to "proforma" (in case they want to send a proforma invoice that's only a part of the original SO)

    therefore avoiding potentially problematic and hard-to-maintain customizations to the flow of invoices themselves.

    Have a great day.

    Alessandro Uffreduzzi

    Developer

    alessandro.uffreduzzi@pytech.it


    On 26/04/2023 8:12 pm, Antonio M. Vigliotti wrote:

    Hi Alessandro,

    I wrote the pro-forma some time ago on Odoo 10.0

    Here you can find source code:

    https://github.com/zeroincombenze/account-invoicing/tree/10.0/account_invoice_line_sequence

    However this code is an improvement of OCA implementation, I think you could find it on account-invoicing repository

    PS As Carlos wrote, pro-forma is somthing closer to a sale order but Italian people will not use sale orderfor thi purpose :-(

    Antonio

    Il 26/04/2023 18:47, Janik von Rotz ha scritto:

    Hi Allessandro

    Can you give us some details on the business case? Is this going more towards downpayments?

    Proforma in Odoo ist just the Sale Order with a different title.

    I assume what you need, is a function to generate an invoice before the quotation is confirmed. Your requirements are more or less what the account module delivers.

    Cheers, Janik

    On 4/26/23 18:27, Alessandro Uffreduzzi wrote:

    Hello all,

    long time listener, first time caller. I need to develop a module to handle proforma invoices, as the default Odoo implementation is not at all adequate for the needs of multiple customers. What we need looks more like what Sales Orders have, with the 3 states ("Quotation" => "Quotation Sent" => "Sales Order"), where the proforma invoice corresponds to the "Quotation Sent" state.

    Requirements:

    • Invoices (not SOs) can (optionally) become Proforma Invoices, before being confirmed and posted. It doesn't necessarily have to be a new "state" selection, but it seems to be the most natural fit for it.
    • When an invoice becomes a proforma (which logically implies it's being sent to the customer for confirmation), it should take a sequence number from a different sequence than posted invoices. When the invoice is eventually confirmed and posted, it will then take the usual number.  The number it takes when it becomes a proforma should be saved somewhere.
    • Proforma invoices can go back to draft, be cancelled, or be confirmed and posted.
    • The printed version should clearly state it's a proforma, but it's otherwise the same as a regular invoice.

    I've searched for an OCA module resembling these requirements but couldn't find it. Is there an OCA module for this, or is someone developing it? If not, I will work on it myself and propose it in https://github.com/OCA/account-invoicing/

    Thank you for your time

    Have a good day

    --

    Alessandro Uffreduzzi

    Developer

    alessandro.uffreduzzi@pytech.it

    PyTech Srl

    Sede legale: Via Barozzi 40/8 - 41124 Modena

    Sede operativa: Via P. Giardini 472/L - 41124 Modena

    P.IVA 03988700369

    www.pytech.it

    PyTech Logo

    _______________________________________________
    Mailing-List: https://odoo-community.org/groups/contributors-15
    Post to: mailto:contributors@odoo-community.org
    Unsubscribe: https://odoo-community.org/groups?unsubscribe

    _______________________________________________
    Mailing-List: https://odoo-community.org/groups/contributors-15
    Post to: mailto:contributors@odoo-community.org
    Unsubscribe: https://odoo-community.org/groups?unsubscribe

    --
    Antonio M. Vigliotti

    Mobile (+39) 342.8740910



    _______________________________________________
    Mailing-List: https://odoo-community.org/groups/contributors-15
    Post to: mailto:contributors@odoo-community.org
    Unsubscribe: https://odoo-community.org/groups?unsubscribe

    _______________________________________________
    Mailing-List: https://odoo-community.org/groups/contributors-15
    Post to: mailto:contributors@odoo-community.org
    Unsubscribe: https://odoo-community.org/groups?unsubscribe

    -- 
    Dr.-Ing. Frederik Kramer
    Geschäftsführer
    
    initOS GmbH
    Innungsstraße 7
    21244 Buchholz i.d.N.
    
    Phone:  +49 4181 13503-12
    Fax:    +49 4181 13503-10
    Mobil:  +49 179 3901819
    
    Email: frederik.kramer@initos.com
    Web:   www.initos.com
    
    Geschäftsführung:
    Dr.-Ing. Frederik Kramer & Dipl.-Ing. (FH) Torsten Francke
    
    Sitz der Gesellschaft: Buchholz i.d.N.
    Amtsgericht Tostedt, HRB 205226
    Steuer-Nr: 15/200/53247
    USt-IdNr.: DE815580155

    by Frederik Kramer - 04:11 - 27 Apr 2023
  • Re: Proforma invoices in Odoo
    You have this old module that does exactly what you decided:

    https://github.com/OCA/sale-reporting/tree/10.0/sale_proforma_report

    El jue, 27 abr 2023 a las 15:57, Alessandro Uffreduzzi (<notifications@odoo-community.org>) escribió:

    Hello,

    thank you all for your replies. Based on your feedback me and my colleagues insisted with the most pressing customer and we convinced them to use

    1. The native odoo functionality with regards to proforma invoices (i.e. sales orders);
    2. Alternatively, by just changing the title when printing a draft invoice from "draft" to "proforma" (in case they want to send a proforma invoice that's only a part of the original SO)

    therefore avoiding potentially problematic and hard-to-maintain customizations to the flow of invoices themselves.

    Have a great day.

    Alessandro Uffreduzzi

    Developer

    alessandro.uffreduzzi@pytech.it


    On 26/04/2023 8:12 pm, Antonio M. Vigliotti wrote:

    Hi Alessandro,

    I wrote the pro-forma some time ago on Odoo 10.0

    Here you can find source code:

    https://github.com/zeroincombenze/account-invoicing/tree/10.0/account_invoice_line_sequence

    However this code is an improvement of OCA implementation, I think you could find it on account-invoicing repository

    PS As Carlos wrote, pro-forma is somthing closer to a sale order but Italian people will not use sale orderfor thi purpose :-(

    Antonio

    Il 26/04/2023 18:47, Janik von Rotz ha scritto:

    Hi Allessandro

    Can you give us some details on the business case? Is this going more towards downpayments?

    Proforma in Odoo ist just the Sale Order with a different title.

    I assume what you need, is a function to generate an invoice before the quotation is confirmed. Your requirements are more or less what the account module delivers.

    Cheers, Janik

    On 4/26/23 18:27, Alessandro Uffreduzzi wrote:

    Hello all,

    long time listener, first time caller. I need to develop a module to handle proforma invoices, as the default Odoo implementation is not at all adequate for the needs of multiple customers. What we need looks more like what Sales Orders have, with the 3 states ("Quotation" => "Quotation Sent" => "Sales Order"), where the proforma invoice corresponds to the "Quotation Sent" state.

    Requirements:

    • Invoices (not SOs) can (optionally) become Proforma Invoices, before being confirmed and posted. It doesn't necessarily have to be a new "state" selection, but it seems to be the most natural fit for it.
    • When an invoice becomes a proforma (which logically implies it's being sent to the customer for confirmation), it should take a sequence number from a different sequence than posted invoices. When the invoice is eventually confirmed and posted, it will then take the usual number.  The number it takes when it becomes a proforma should be saved somewhere.
    • Proforma invoices can go back to draft, be cancelled, or be confirmed and posted.
    • The printed version should clearly state it's a proforma, but it's otherwise the same as a regular invoice.

    I've searched for an OCA module resembling these requirements but couldn't find it. Is there an OCA module for this, or is someone developing it? If not, I will work on it myself and propose it in https://github.com/OCA/account-invoicing/

    Thank you for your time

    Have a good day

    --

    Alessandro Uffreduzzi

    Developer

    alessandro.uffreduzzi@pytech.it

    PyTech Srl

    Sede legale: Via Barozzi 40/8 - 41124 Modena

    Sede operativa: Via P. Giardini 472/L - 41124 Modena

    P.IVA 03988700369

    www.pytech.it

    PyTech Logo

    _______________________________________________
    Mailing-List: https://odoo-community.org/groups/contributors-15
    Post to: mailto:contributors@odoo-community.org
    Unsubscribe: https://odoo-community.org/groups?unsubscribe

    _______________________________________________
    Mailing-List: https://odoo-community.org/groups/contributors-15
    Post to: mailto:contributors@odoo-community.org
    Unsubscribe: https://odoo-community.org/groups?unsubscribe

    --
    Antonio M. Vigliotti

    Mobile (+39) 342.8740910



    _______________________________________________
    Mailing-List: https://odoo-community.org/groups/contributors-15
    Post to: mailto:contributors@odoo-community.org
    Unsubscribe: https://odoo-community.org/groups?unsubscribe

    _______________________________________________
    Mailing-List: https://odoo-community.org/groups/contributors-15
    Post to: mailto:contributors@odoo-community.org
    Unsubscribe: https://odoo-community.org/groups?unsubscribe


    by Carlos Liébana Anero. - 04:06 - 27 Apr 2023
  • Re: Proforma invoices in Odoo

    Hello,

    thank you all for your replies. Based on your feedback me and my colleagues insisted with the most pressing customer and we convinced them to use

    1. The native odoo functionality with regards to proforma invoices (i.e. sales orders);
    2. Alternatively, by just changing the title when printing a draft invoice from "draft" to "proforma" (in case they want to send a proforma invoice that's only a part of the original SO)

    therefore avoiding potentially problematic and hard-to-maintain customizations to the flow of invoices themselves.

    Have a great day.

    Alessandro Uffreduzzi

    Developer

    alessandro.uffreduzzi@pytech.it


    On 26/04/2023 8:12 pm, Antonio M. Vigliotti wrote:

    Hi Alessandro,

    I wrote the pro-forma some time ago on Odoo 10.0

    Here you can find source code:

    https://github.com/zeroincombenze/account-invoicing/tree/10.0/account_invoice_line_sequence

    However this code is an improvement of OCA implementation, I think you could find it on account-invoicing repository

    PS As Carlos wrote, pro-forma is somthing closer to a sale order but Italian people will not use sale orderfor thi purpose :-(

    Antonio

    Il 26/04/2023 18:47, Janik von Rotz ha scritto:

    Hi Allessandro

    Can you give us some details on the business case? Is this going more towards downpayments?

    Proforma in Odoo ist just the Sale Order with a different title.

    I assume what you need, is a function to generate an invoice before the quotation is confirmed. Your requirements are more or less what the account module delivers.

    Cheers, Janik

    On 4/26/23 18:27, Alessandro Uffreduzzi wrote:

    Hello all,

    long time listener, first time caller. I need to develop a module to handle proforma invoices, as the default Odoo implementation is not at all adequate for the needs of multiple customers. What we need looks more like what Sales Orders have, with the 3 states ("Quotation" => "Quotation Sent" => "Sales Order"), where the proforma invoice corresponds to the "Quotation Sent" state.

    Requirements:

    • Invoices (not SOs) can (optionally) become Proforma Invoices, before being confirmed and posted. It doesn't necessarily have to be a new "state" selection, but it seems to be the most natural fit for it.
    • When an invoice becomes a proforma (which logically implies it's being sent to the customer for confirmation), it should take a sequence number from a different sequence than posted invoices. When the invoice is eventually confirmed and posted, it will then take the usual number.  The number it takes when it becomes a proforma should be saved somewhere.
    • Proforma invoices can go back to draft, be cancelled, or be confirmed and posted.
    • The printed version should clearly state it's a proforma, but it's otherwise the same as a regular invoice.

    I've searched for an OCA module resembling these requirements but couldn't find it. Is there an OCA module for this, or is someone developing it? If not, I will work on it myself and propose it in https://github.com/OCA/account-invoicing/

    Thank you for your time

    Have a good day

    --

    Alessandro Uffreduzzi

    Developer

    alessandro.uffreduzzi@pytech.it

    PyTech Srl

    Sede legale: Via Barozzi 40/8 - 41124 Modena

    Sede operativa: Via P. Giardini 472/L - 41124 Modena

    P.IVA 03988700369

    www.pytech.it

    PyTech Logo

    _______________________________________________
    Mailing-List: https://odoo-community.org/groups/contributors-15
    Post to: mailto:contributors@odoo-community.org
    Unsubscribe: https://odoo-community.org/groups?unsubscribe

    _______________________________________________
    Mailing-List: https://odoo-community.org/groups/contributors-15
    Post to: mailto:contributors@odoo-community.org
    Unsubscribe: https://odoo-community.org/groups?unsubscribe

    --
    Antonio M. Vigliotti

    Mobile (+39) 342.8740910



    _______________________________________________
    Mailing-List: https://odoo-community.org/groups/contributors-15
    Post to: mailto:contributors@odoo-community.org
    Unsubscribe: https://odoo-community.org/groups?unsubscribe


    by Alessandro Uffreduzzi - 03:55 - 27 Apr 2023
  • Re: Proforma invoices in Odoo

    Hi Alessandro,

    I wrote the pro-forma some time ago on Odoo 10.0

    Here you can find source code:

    https://github.com/zeroincombenze/account-invoicing/tree/10.0/account_invoice_line_sequence

    However this code is an improvement of OCA implementation, I think you could find it on account-invoicing repository

    PS As Carlos wrote, pro-forma is somthing closer to a sale order but Italian people will not use sale orderfor thi purpose :-(

    Antonio

    Il 26/04/2023 18:47, Janik von Rotz ha scritto:

    Hi Allessandro

    Can you give us some details on the business case? Is this going more towards downpayments?

    Proforma in Odoo ist just the Sale Order with a different title.

    I assume what you need, is a function to generate an invoice before the quotation is confirmed. Your requirements are more or less what the account module delivers.

    Cheers, Janik

    On 4/26/23 18:27, Alessandro Uffreduzzi wrote:

    Hello all,

    long time listener, first time caller. I need to develop a module to handle proforma invoices, as the default Odoo implementation is not at all adequate for the needs of multiple customers. What we need looks more like what Sales Orders have, with the 3 states ("Quotation" => "Quotation Sent" => "Sales Order"), where the proforma invoice corresponds to the "Quotation Sent" state.

    Requirements:

    • Invoices (not SOs) can (optionally) become Proforma Invoices, before being confirmed and posted. It doesn't necessarily have to be a new "state" selection, but it seems to be the most natural fit for it.
    • When an invoice becomes a proforma (which logically implies it's being sent to the customer for confirmation), it should take a sequence number from a different sequence than posted invoices. When the invoice is eventually confirmed and posted, it will then take the usual number.  The number it takes when it becomes a proforma should be saved somewhere.
    • Proforma invoices can go back to draft, be cancelled, or be confirmed and posted.
    • The printed version should clearly state it's a proforma, but it's otherwise the same as a regular invoice.

    I've searched for an OCA module resembling these requirements but couldn't find it. Is there an OCA module for this, or is someone developing it? If not, I will work on it myself and propose it in https://github.com/OCA/account-invoicing/

    Thank you for your time

    Have a good day

    --

    Alessandro Uffreduzzi

    Developer

    alessandro.uffreduzzi@pytech.it

    PyTech Srl

    Sede legale: Via Barozzi 40/8 - 41124 Modena

    Sede operativa: Via P. Giardini 472/L - 41124 Modena

    P.IVA 03988700369

    www.pytech.it

    PyTech Logo

    _______________________________________________
    Mailing-List: https://odoo-community.org/groups/contributors-15
    Post to: mailto:contributors@odoo-community.org
    Unsubscribe: https://odoo-community.org/groups?unsubscribe

    _______________________________________________
    Mailing-List: https://odoo-community.org/groups/contributors-15
    Post to: mailto:contributors@odoo-community.org
    Unsubscribe: https://odoo-community.org/groups?unsubscribe

    --
    Antonio M. Vigliotti

    Mobile (+39) 342.8740910




    by Antonio M. Vigliotti - 08:11 - 26 Apr 2023