Non sono solita postare richieste multiple, ma queste in realtà sono due facce di uno stesso problema, ossia la gestione di più aliquote IVA.
Nel prezzo normale (D7+Dcommerce) va tutto bene, posso impostare le aliquote che voglio (ce le ho tutte, 4%, 10%, 21%). Tutto calcolato senza problemi.
Ma:
1) Uso il modulo Price table e a quanto pare nessuno si è posto il problema di inserire il campo IVA/VAT anche nella price table. Quindi non c'è modo di calcolarla alla fine dell'ordine se non inventandosi una nuova Rule.
2) Analogo problema per il modulo Product bundle. Se in un pacchetto di prodotti i singoli prodotti hanno tutti la stessa aliquota IVA, posso comodamente usare il campo IVA per il prezzo di tutto il pacchetto. Ma non posso farlo se accorpo in un pacchetto / bundle dei prodotti con aliquote diverse. Il che mi fa pensare a una complicata regola matematica per cui, se la somma dei singoli prodotti è 150€ ma io in via promozionale la metto a 100€, dovrei con una proporzione calcolarmi percentualmente come distribuire lo sconto sui prezzi ergo applicare ai prezzi scontati le rispettive aliquote.
Qualcuno si è mica trovato ad affrontare questi problemi e ha escogitato soluzioni? Sui forum di Drupal.org le ho girate tutte ma attualmente sono Issues aperte e da lavorare.
Per il Product bundle non c'è stato bisogno di trovare una soluzione.
Dopo averlo segnalato al mio cliente, ho scoperto che nei bundle si applica sempre una sola IVA, non so ancora se la minima o la massima ma comunque una sola per tutti i prodotti, ergo non c'è bisogno di spezzettare il bundle.
Per la price table, ho aggiunto delle regole alla regola predefinita che serve a sostituire il prezzo base con il prezzo della price table, aggiungendo queste azioni:
"DO" : [
{ "commerce_price_table_set_price" : {
"commerce_line_item" : [ "commerce-line-item" ],
"quantity" : [ "commerce-line-item:quantity" ]
}
},
{ "data_calc" : {
"USING" : {
"input_1" : [ "commerce-line-item:commerce-unit-price:amount-decimal" ],
"op" : "*",
"input_2" : ".21"
},
"PROVIDE" : { "result" : { "iva_pricetable" : "IVA sul prezzo scontato" } }
}
},
{ "data_calc" : {
"USING" : { "input_1" : [ "iva-pricetable" ], "op" : "*", "input_2" : "100" },
"PROVIDE" : { "result" : { "iva_pricetable_singola_decimale" : "IVA sul prezzo scontato per singolo prodotto (decimale)" } }
}
},
{ "commerce_line_item_unit_price_subtract" : {
"commerce_line_item" : [ "commerce_line_item" ],
"amount" : [ "iva-pricetable-singola-decimale" ],
"component_name" : "base_price",
"round_mode" : "1"
}
},
{ "data_calc" : {
"USING" : {
"input_1" : [ "iva-pricetable-singola-decimale" ],
"op" : "*",
"input_2" : [ "commerce-line-item:quantity" ]
},
"PROVIDE" : { "result" : { "iva_totale" : "IVA totale" } }
}
},
{ "commerce_line_item_unit_price_add" : {
"commerce_line_item" : [ "commerce_line_item" ],
"amount" : [ "iva-pricetable-singola-decimale" ],
"component_name" : "tax|iva",
"round_mode" : "2"
}
}
]
}
}
Certo, mi resta il problema di non inserire io a mano un'aliquota IVA (per il momento applico la price table solo ai prodotti che hanno IVA al 21%). Se qualcuno mi vuole dare una mano a estrarre il valore dal campo commerce-line-item:price:data è ben accetto, perché ci vuole del php e non sono capace.
In pratica, calcolo l'IVA al 21% per il singolo prodotto (moltiplicandola per 100 per avere il decimale) poi la sottraggo dal prezzo unitario.
In seguito aggiungendola come importo di tipo IVA al prezzo unitario, lui me la mostra a parte, segnalandola come IVA e quindi di fatto scorporandola.
...enter at your own risk...
Ok, come non detto. La regola è bell'e cara se nel carrello c'è un solo prodotto o solo prodotti su cui si sta applicando la price table. Altrimenti non funziona.
L'unica per ora (anche se è un accrocco e non mi piace) è salvare nella price table i prezzi SENZA iva e aggiungere alla regola della price table solo il calcolo dell'iva nell'aliquota che decido io.
Grrrr.
...enter at your own risk...