Skip to content

Commit 4118d5b

Browse files
committed
fix: impostazione prezzo in base a tipo di documento creato
1 parent 504b1f1 commit 4118d5b

2 files changed

Lines changed: 53 additions & 12 deletions

File tree

include/common/importa.php

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,25 @@
3434
}
3535

3636
// Informazioni utili
37-
$dir = $documento->direzione;
3837
$original_module = Module::where('name', $documento->module)->first();
3938

4039
$name = !empty($documento_finale) ? $documento_finale->module : $options['module'];
4140
$final_module = Module::where('name', $name)->first();
41+
42+
// Determina la direzione in base al tipo di modulo finale
43+
if (in_array($final_module->name, ['Fatture di acquisto', 'Ordini fornitore', 'Ddt in entrata'])) {
44+
$dir = 'uscita';
45+
} elseif (in_array($final_module->name, ['Fatture di vendita', 'Ordini cliente', 'Ddt in uscita', 'Interventi', 'Contratti', 'Preventivi'])) {
46+
$dir = 'entrata';
47+
} else {
48+
// Fallback: usa la direzione del documento finale se disponibile, altrimenti quella del documento iniziale
49+
$dir = !empty($documento_finale) && !empty($documento_finale->direzione) ? $documento_finale->direzione : $documento->direzione;
50+
}
51+
52+
// Se la direzione è specificata nelle opzioni, usa quella (ha precedenza)
53+
if (!empty($options['dir'])) {
54+
$dir = $options['dir'];
55+
}
4256
$id_segment = $_SESSION['module_'.$final_module->id]['id_segment'];
4357

4458
// IVA predefinita
@@ -117,7 +131,7 @@
117131
<div class="col-md-6">
118132
{[ "type": "select", "label": "'.tr('Tipo documento').'", "name": "idtipodocumento", "required": 1, "values": "query=SELECT `co_tipidocumento`.`id`, CONCAT(`codice_tipo_documento_fe`, \' - \', `title`) AS descrizione FROM `co_tipidocumento` LEFT JOIN `co_tipidocumento_lang` ON (`co_tipidocumento`.`id` = `co_tipidocumento_lang`.`id_record` AND `co_tipidocumento_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') WHERE `enabled` = 1 AND `dir` = '.prepare($dir).' ORDER BY `codice_tipo_documento_fe`", "value": "'.$idtipodocumento.'" ]}
119133
</div>
120-
134+
121135
<div class="col-md-6">
122136
{[ "type": "select", "label": "'.tr('Ritenuta previdenziale').'", "name": "id_ritenuta_contributi", "value": "$id_ritenuta_contributi$", "values": "query=SELECT * FROM co_ritenuta_contributi" ]}
123137
</div>';
@@ -268,7 +282,7 @@
268282
CONCAT(\'\n\', `in_interventi`.`descrizione`) AS descrizione_intervento,
269283
IF(`idclientefinale`='.prepare($idanagrafica).', \'Interventi conto terzi\', \'Interventi diretti\') AS `optgroup`
270284
FROM
271-
`in_interventi`
285+
`in_interventi`
272286
INNER JOIN `in_statiintervento` ON `in_interventi`.`idstatointervento`=`in_statiintervento`.`id`
273287
LEFT JOIN `in_statiintervento_lang` ON (`in_statiintervento`.`id` = `in_statiintervento_lang`.`id_record` AND `in_statiintervento_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).')
274288
WHERE
@@ -684,7 +698,7 @@ function ricalcolaTotale() {
684698
ricalcolaTotale();
685699
});
686700
687-
$("#import_all").click(function(){
701+
$("#import_all").click(function(){
688702
if( $(this).is(":checked") ){
689703
$(".check").each(function(){
690704
if( !$(this).is(":checked") ){

modules/ordini/actions.php

Lines changed: 35 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -508,7 +508,7 @@
508508
$copia->qta_evasa = 0;
509509
$copia->costo_unitario = 0;
510510

511-
// Impostazione al prezzo di acquisto per Articoli
511+
// Impostazione al prezzo di acquisto per tutte le righe
512512
if ($copia->isArticolo()) {
513513
$copia->setSconto(0, 'PRC');
514514

@@ -519,10 +519,23 @@
519519
$fornitore = DettaglioPrezzo::dettaglioPredefinito($riga->idarticolo, $anagrafica->id, $dir)->first();
520520
}
521521

522-
$prezzo_unitario = $fornitore->prezzo_unitario - ($fornitore->prezzo_unitario * $fornitore->percentuale / 100);
522+
// Calcolo del prezzo di acquisto per articoli
523+
if (!empty($fornitore)) {
524+
$prezzo_unitario = $fornitore->prezzo_unitario - ($fornitore->prezzo_unitario * $fornitore->percentuale / 100);
525+
$sconto_percentuale = $fornitore->sconto_percentuale ?: 0;
526+
} else {
527+
// Se non c'è un listino specifico per il fornitore, usa il prezzo di acquisto dell'articolo
528+
$prezzo_unitario = $articolo->prezzo_acquisto;
529+
$sconto_percentuale = 0;
530+
}
523531

524-
$copia->setPrezzoUnitario($fornitore ? $prezzo_unitario : $articolo->prezzo_acquisto, $copia->aliquota->id);
525-
$copia->setSconto($fornitore->sconto_percentuale ?: 0, 'PRC');
532+
$copia->setPrezzoUnitario($prezzo_unitario, $copia->aliquota->id);
533+
$copia->setSconto($sconto_percentuale, 'PRC');
534+
} else {
535+
// Per righe non-articolo, usa il costo unitario se presente, altrimenti mantieni il prezzo di vendita come costo
536+
$costo_unitario = $riga->costo_unitario ?: $riga->prezzo_unitario;
537+
$copia->setPrezzoUnitario($costo_unitario, $copia->aliquota->id);
538+
$copia->setSconto(0, 'PRC');
526539
}
527540

528541
$copia->save();
@@ -583,7 +596,7 @@
583596
$copia->ora_evasione = null;
584597
$copia->confermato = setting('Conferma automaticamente le quantità negli ordini fornitore');
585598

586-
// Impostazione al prezzo di acquisto per Articoli
599+
// Impostazione al prezzo di acquisto per tutte le righe
587600
if ($copia->isArticolo()) {
588601
$copia->setSconto(0, 'PRC');
589602

@@ -594,10 +607,24 @@
594607
$fornitore = DettaglioPrezzo::dettaglioPredefinito($riga->idarticolo, $anagrafica->id, $dir)->first();
595608
}
596609

597-
$prezzo_unitario = $fornitore->prezzo_unitario - ($fornitore->prezzo_unitario * $fornitore->percentuale / 100);
610+
// Calcolo del prezzo di acquisto per articoli
611+
if (!empty($fornitore)) {
612+
$prezzo_unitario = $fornitore->prezzo_unitario - ($fornitore->prezzo_unitario * $fornitore->percentuale / 100);
613+
$sconto_percentuale = $fornitore->sconto_percentuale ?: 0;
614+
} else {
615+
// Se non c'è un listino specifico per il fornitore, usa il prezzo di acquisto dell'articolo
616+
$prezzo_unitario = $articolo->prezzo_acquisto;
617+
$sconto_percentuale = 0;
618+
}
598619

599-
$copia->setPrezzoUnitario($fornitore ? $prezzo_unitario : $articolo->prezzo_acquisto, $copia->aliquota->id);
600-
$copia->setSconto($fornitore->sconto_percentuale ?: 0, 'PRC');
620+
// Forza l'impostazione dei prezzi di acquisto sovrascrivendo quelli di vendita
621+
$copia->setPrezzoUnitario($prezzo_unitario, $copia->aliquota->id);
622+
$copia->setSconto($sconto_percentuale, 'PRC');
623+
} else {
624+
// Per righe non-articolo, usa il costo unitario se presente, altrimenti mantieni il prezzo di vendita come costo
625+
$costo_unitario = $riga->costo_unitario ?: $riga->prezzo_unitario;
626+
$copia->setPrezzoUnitario($costo_unitario, $copia->aliquota->id);
627+
$copia->setSconto(0, 'PRC');
601628
}
602629

603630
$copia->save();

0 commit comments

Comments
 (0)