Skip to content

Commit 0f4ae4f

Browse files
committed
[IMP] l10n_it_delivery_note: added configuration checks to handle invoice creation arbitrarily
1 parent 82a191f commit 0f4ae4f

File tree

10 files changed

+384
-26
lines changed

10 files changed

+384
-26
lines changed

l10n_it_delivery_note/README.rst

Lines changed: 67 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,16 @@ ITA - Documento di trasporto
3333
This module manage the Italian DDT (Delivery note).
3434

3535
From a picking is possible to generate a Delivery Note and group more
36-
picking in one delivery note. It's also possible to invoice from the
37-
delivery note form.
36+
picking in one delivery note. It's also possible to invoice directly
37+
from the delivery note form, with configurable options to use DN data
38+
(product names, prices) instead of sale order data when generating
39+
invoices.
40+
41+
This is particularly useful when:
42+
43+
- Products are substituted at delivery time
44+
- Prices are negotiated during delivery
45+
- Detailed descriptions need to be added in the DN
3846

3947
This module is alternative to ``l10n_it_ddt``, it follows the Odoo way
4048
to process sale orders, pickings and invoices.
@@ -52,7 +60,16 @@ There are two available settings:
5260
Questo modulo consente di gestire i DDT.
5361

5462
Da un prelievo è possibile generare un DDT e raggruppare più prelievi in
55-
un DDT. È anche possibile fatturare dalla scheda del DDT.
63+
un DDT. È anche possibile fatturare direttamente dalla scheda del DDT,
64+
con opzioni configurabili per utilizzare i dati del DDT (nomi prodotti,
65+
prezzi) invece dei dati dell'ordine di vendita nella generazione delle
66+
fatture.
67+
68+
Questo è particolarmente utile quando:
69+
70+
- I prodotti vengono sostituiti al momento della consegna
71+
- I prezzi vengono negoziati durante la consegna
72+
- È necessario aggiungere descrizioni dettagliate nel DDT
5673

5774
Questo modulo è un alternativa al modulo ``l10n_it_ddt``, segue la
5875
modalità Odoo di gestire ordini di vendita, prelievi e fatture.
@@ -90,6 +107,18 @@ To configure this module, go to:
90107
Checking 'Display Delivery Method in Delivery Note Report' enables in
91108
report field 'Delivery Method'.
92109

110+
**Invoice Generation from Delivery Notes:**
111+
112+
- Checking 'Use Delivery Note Product Name in Invoice' makes the
113+
invoice use the product description from the delivery note instead
114+
of the sale order. This is useful when you modify product
115+
descriptions in the DN to reflect what was actually delivered.
116+
117+
- Checking 'Use Delivery Note Price Unit in Invoice' makes the
118+
invoice use the unit price from the delivery note instead of the
119+
sale order. This is useful for price negotiations at delivery time
120+
or when substituting products with different prices.
121+
93122
2. *Inventory → Configuration → Warehouse Management → Delivery Note
94123
Types*
95124

@@ -165,6 +194,41 @@ scegliere se includere anche i servizi non ancora fatturati dell'ordine
165194
di vendita correlato o considerare solo le righe nei DN. In maniera
166195
predefinita vengono dedotti gli eventuali anticipi fatturati.
167196

197+
Utilizzo dei dati dal DDT nelle fatture
198+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
199+
200+
Dalle impostazioni (*Inventario → Configurazione → Impostazioni -
201+
Documenti di Trasporto*) è possibile configurare se la fattura deve
202+
utilizzare i dati dal DDT anziché dall'ordine di vendita:
203+
204+
- **Usa Nome Prodotto da DDT nelle Fatture**: Quando attivo, la
205+
descrizione del prodotto nella fattura viene presa dal DDT invece che
206+
dall'ordine di vendita. Utile quando si modificano le descrizioni nel
207+
DDT per riflettere ciò che è stato effettivamente consegnato.
208+
209+
- **Usa Prezzo Unitario da DDT nelle Fatture**: Quando attivo, il
210+
prezzo unitario nella fattura viene preso dal DDT invece che
211+
dall'ordine di vendita. Utile per negoziazioni di prezzo al momento
212+
della consegna o quando si sostituiscono prodotti con prezzi diversi.
213+
214+
**Esempi pratici:**
215+
216+
1. **Prodotto sostituito**: Se ordini "Scrivania Modello A - €500" ma
217+
consegni "Scrivania Modello B - €450", modificando DDT e attivando
218+
entrambe le opzioni, la fattura rifletterà automaticamente il
219+
prodotto e prezzo reale consegnato.
220+
221+
2. **Negoziazione alla consegna**: Se il cliente nota un difetto e
222+
negoziate uno sconto, modificando il prezzo nel DDT con l'opzione
223+
attiva, la fattura sarà corretta senza bisogno di note credito.
224+
225+
3. **Descrizioni dettagliate**: Se nel DDT specifichi "3 sacchi cemento
226+
CEM II, 5 pannelli isolanti" invece di "Materiale edile vario", con
227+
l'opzione attiva la fattura mostrerà i dettagli completi.
228+
229+
**Nota**: Queste opzioni sono disabilitate per default per mantenere la
230+
retrocompatibilità. Attivarle solo se si desidera questo comportamento.
231+
168232
Accesso da portale
169233
------------------
170234

l10n_it_delivery_note/models/res_company.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,15 @@
77
class ResCompany(models.Model):
88
_inherit = "res.company"
99

10+
use_dn_product_name_in_invoice = fields.Boolean(
11+
string="Use Delivery Note Product Name in Invoice",
12+
default=False,
13+
)
14+
use_dn_price_unit_in_invoice = fields.Boolean(
15+
string="Use Delivery Note Price Unit in Invoice",
16+
default=False,
17+
)
18+
1019
display_ref_order_dn_report = fields.Boolean(
1120
"Display Ref. Order in Delivery Note Report",
1221
default=False,

l10n_it_delivery_note/models/res_config_settings.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,17 @@ def _default_virtual_locations_root(self):
2424
config_parameter="stock.location.virtual_root",
2525
)
2626

27+
use_dn_product_name_in_invoice = fields.Boolean(
28+
string="Use Delivery Note Product Name in Invoice",
29+
related="company_id.use_dn_product_name_in_invoice",
30+
readonly=False,
31+
)
32+
use_dn_price_unit_in_invoice = fields.Boolean(
33+
string="Use Delivery Note Price Unit in Invoice",
34+
related="company_id.use_dn_price_unit_in_invoice",
35+
readonly=False,
36+
)
37+
2738
display_ref_order_dn_report = fields.Boolean(
2839
string="Display Ref. Order in Delivery Note Report",
2940
related="company_id.display_ref_order_dn_report",

l10n_it_delivery_note/models/stock_delivery_note_line.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -207,14 +207,23 @@ def _prepare_invoice_line(self, **optional_values):
207207
:rtype: dict
208208
"""
209209
self.ensure_one()
210+
211+
product_name = self.sale_line_id.name
212+
if self.company_id.use_dn_product_name_in_invoice:
213+
product_name = self.name
214+
215+
price_unit = self.sale_line_id.price_unit
216+
if self.company_id.use_dn_price_unit_in_invoice:
217+
price_unit = self.price_unit
218+
210219
res = {
211220
"display_type": "product",
212-
"name": self.name,
221+
"name": product_name,
213222
"product_id": self.product_id.id,
214223
"product_uom_id": self.product_uom_id.id,
215224
"quantity": self.product_qty,
216225
"discount": self.discount,
217-
"price_unit": self.price_unit,
226+
"price_unit": price_unit,
218227
"tax_ids": [Command.set(self.tax_ids.ids)],
219228
"sale_line_ids": [Command.link(self.sale_line_id.id)],
220229
"delivery_note_line_id": self.id,

l10n_it_delivery_note/readme/CONFIGURE.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,12 @@ To configure this module, go to:
1111

1212
Checking 'Display Delivery Method in Delivery Note Report' enables in report field 'Delivery Method'.
1313

14+
**Invoice Generation from Delivery Notes:**
15+
16+
- Checking 'Use Delivery Note Product Name in Invoice' makes the invoice use the product description from the delivery note instead of the sale order. This is useful when you modify product descriptions in the DN to reflect what was actually delivered.
17+
18+
- Checking 'Use Delivery Note Price Unit in Invoice' makes the invoice use the unit price from the delivery note instead of the sale order. This is useful for price negotiations at delivery time or when substituting products with different prices.
19+
1420
2. *Inventory → Configuration → Warehouse Management → Delivery Note
1521
Types*
1622

l10n_it_delivery_note/readme/DESCRIPTION.md

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,14 @@
33
This module manage the Italian DDT (Delivery note).
44

55
From a picking is possible to generate a Delivery Note and group more
6-
picking in one delivery note. It's also possible to invoice from the
7-
delivery note form.
6+
picking in one delivery note. It's also possible to invoice directly from the
7+
delivery note form, with configurable options to use DN data (product names, prices)
8+
instead of sale order data when generating invoices.
9+
10+
This is particularly useful when:
11+
- Products are substituted at delivery time
12+
- Prices are negotiated during delivery
13+
- Detailed descriptions need to be added in the DN
814

915
This module is alternative to `l10n_it_ddt`, it follows the Odoo way to
1016
process sale orders, pickings and invoices.
@@ -22,7 +28,14 @@ There are two available settings:
2228
Questo modulo consente di gestire i DDT.
2329

2430
Da un prelievo è possibile generare un DDT e raggruppare più prelievi in
25-
un DDT. È anche possibile fatturare dalla scheda del DDT.
31+
un DDT. È anche possibile fatturare direttamente dalla scheda del DDT,
32+
con opzioni configurabili per utilizzare i dati del DDT (nomi prodotti, prezzi)
33+
invece dei dati dell'ordine di vendita nella generazione delle fatture.
34+
35+
Questo è particolarmente utile quando:
36+
- I prodotti vengono sostituiti al momento della consegna
37+
- I prezzi vengono negoziati durante la consegna
38+
- È necessario aggiungere descrizioni dettagliate nel DDT
2639

2740
Questo modulo è un alternativa al modulo `l10n_it_ddt`, segue la
2841
modalità Odoo di gestire ordini di vendita, prelievi e fatture.

l10n_it_delivery_note/readme/USAGE.md

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,12 +41,45 @@ righe nota.
4141

4242
## Fatturazione da DN
4343

44-
E' possibile creare una fattura selezionando una o più DN dello stesso partner
44+
E' possibile creare una fattura selezionando una o più DN dello stesso partner
4545
dalla tree view tramite il wizard "crea fattura".
46-
Si può scegliere se includere anche i servizi non ancora fatturati dell'ordine
46+
Si può scegliere se includere anche i servizi non ancora fatturati dell'ordine
4747
di vendita correlato o considerare solo le righe nei DN.
4848
In maniera predefinita vengono dedotti gli eventuali anticipi fatturati.
4949

50+
### Utilizzo dei dati dal DDT nelle fatture
51+
52+
Dalle impostazioni (*Inventario → Configurazione → Impostazioni - Documenti di Trasporto*)
53+
è possibile configurare se la fattura deve utilizzare i dati dal DDT anziché
54+
dall'ordine di vendita:
55+
56+
- **Usa Nome Prodotto da DDT nelle Fatture**: Quando attivo, la descrizione del
57+
prodotto nella fattura viene presa dal DDT invece che dall'ordine di vendita.
58+
Utile quando si modificano le descrizioni nel DDT per riflettere ciò che è
59+
stato effettivamente consegnato.
60+
61+
- **Usa Prezzo Unitario da DDT nelle Fatture**: Quando attivo, il prezzo unitario
62+
nella fattura viene preso dal DDT invece che dall'ordine di vendita.
63+
Utile per negoziazioni di prezzo al momento della consegna o quando si
64+
sostituiscono prodotti con prezzi diversi.
65+
66+
**Esempi pratici:**
67+
68+
1. **Prodotto sostituito**: Se ordini "Scrivania Modello A - €500" ma consegni
69+
"Scrivania Modello B - €450", modificando DDT e attivando entrambe le opzioni,
70+
la fattura rifletterà automaticamente il prodotto e prezzo reale consegnato.
71+
72+
2. **Negoziazione alla consegna**: Se il cliente nota un difetto e negoziate uno
73+
sconto, modificando il prezzo nel DDT con l'opzione attiva, la fattura sarà
74+
corretta senza bisogno di note credito.
75+
76+
3. **Descrizioni dettagliate**: Se nel DDT specifichi "3 sacchi cemento CEM II,
77+
5 pannelli isolanti" invece di "Materiale edile vario", con l'opzione attiva
78+
la fattura mostrerà i dettagli completi.
79+
80+
**Nota**: Queste opzioni sono disabilitate per default per mantenere la
81+
retrocompatibilità. Attivarle solo se si desidera questo comportamento.
82+
5083
## Accesso da portale
5184

5285
Gli utenti portal hanno la possibilità di scaricare i report dei DDT di cui loro o la loro azienda padre sono impostati come destinatari o indirizzo di spedizione.

0 commit comments

Comments
 (0)