Skip to content

Commit 5b8f2f1

Browse files
committed
fix: gestione sede per distinta base
1 parent 09f6701 commit 5b8f2f1

2 files changed

Lines changed: 43 additions & 12 deletions

File tree

modules/articoli/src/Articolo.php

Lines changed: 39 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -99,8 +99,15 @@ public function movimenta($qta, $descrizone = null, $data = null, $manuale = fal
9999
} else {
100100
$descrizione_ricorsivo = tr('Scomposizione articolo');
101101
}
102-
$this->movimenta(-$qta, $descrizione_ricorsivo, $data, false);
103-
$this->movimentaRicorsivo($qta, $descrizione_ricorsivo);
102+
103+
// Passa la sede del documento anche ai movimenti automatici
104+
$array_automatico = $array;
105+
if (isset($array['idsede'])) {
106+
$array_automatico['idsede'] = $array['idsede'];
107+
}
108+
109+
$this->movimenta(-$qta, $descrizione_ricorsivo, $data, false, $array_automatico);
110+
$this->movimentaRicorsivo($qta, $descrizione_ricorsivo, $data, false, $array_automatico);
104111
}
105112

106113
if (!$this->componenti->isEmpty() && setting('Scomponi articolo padre in fase di acquisto') && $manuale == false && $dir == 'uscita' && $descrizone != "tr('Produzione articolo')" && $descrizone != "tr('Scomposizione articolo')") {
@@ -109,8 +116,15 @@ public function movimenta($qta, $descrizone = null, $data = null, $manuale = fal
109116
} else {
110117
$descrizione_ricorsivo = tr('Scomposizione articolo');
111118
}
112-
$this->movimenta(-$qta, $descrizione_ricorsivo, $data, false);
113-
$this->movimentaRicorsivo($qta, $descrizione_ricorsivo);
119+
120+
// Passa la sede del documento anche ai movimenti automatici
121+
$array_automatico = $array;
122+
if (isset($array['idsede'])) {
123+
$array_automatico['idsede'] = $array['idsede'];
124+
}
125+
126+
$this->movimenta(-$qta, $descrizione_ricorsivo, $data, false, $array_automatico);
127+
$this->movimentaRicorsivo($qta, $descrizione_ricorsivo, $data, false, $array_automatico);
114128
}
115129

116130
if (!$this->componenti->isEmpty() && setting('Movimenta gli articoli figlio tramite i movimenti manuali') && $manuale) {
@@ -119,8 +133,15 @@ public function movimenta($qta, $descrizone = null, $data = null, $manuale = fal
119133
} else {
120134
$descrizione_ricorsivo = tr('Scomposizione articolo');
121135
}
122-
$this->movimenta(-$qta, $descrizione_ricorsivo, $data, false);
123-
$this->movimentaRicorsivo($qta, $descrizione_ricorsivo);
136+
137+
// Passa la sede anche ai movimenti manuali
138+
$array_manuale = $array;
139+
if (isset($array['idsede'])) {
140+
$array_manuale['idsede'] = $array['idsede'];
141+
}
142+
143+
$this->movimenta(-$qta, $descrizione_ricorsivo, $data, false, $array_manuale);
144+
$this->movimentaRicorsivo($qta, $descrizione_ricorsivo, $data, false, $array_manuale);
124145
}
125146
}
126147

@@ -273,19 +294,19 @@ public function getModuleAttribute()
273294

274295
public function getNomeVarianteAttribute()
275296
{
276-
$valori = database()->fetchArray("SELECT
297+
$valori = database()->fetchArray("SELECT
277298
CONCAT(`mg_attributi_lang`.`title`, ': ', `mg_valori_attributi`.`nome`) AS nome
278-
FROM
299+
FROM
279300
`mg_articolo_attributo`
280301
INNER JOIN `mg_valori_attributi` ON `mg_valori_attributi`.`id` = `mg_articolo_attributo`.`id_valore`
281302
INNER JOIN `mg_attributi` ON `mg_attributi`.`id` = `mg_valori_attributi`.`id_attributo`
282303
LEFT JOIN `mg_attributi_lang` ON (`mg_attributi_lang`.`id_record` = `mg_attributi`.`id` AND `mg_attributi_lang`.`id_lang` = ".prepare(\Models\Locale::getDefault()->id).')
283304
INNER JOIN `mg_articoli` ON `mg_articoli`.`id` = `mg_articolo_attributo`.`id_articolo`
284305
INNER JOIN `mg_combinazioni` ON `mg_combinazioni`.`id` = `mg_articoli`.`id_combinazione`
285306
INNER JOIN `mg_attributo_combinazione` ON `mg_attributo_combinazione`.`id_combinazione` = `mg_combinazioni`.`id` AND `mg_attributo_combinazione`.`id_attributo` = `mg_attributi`.`id`
286-
WHERE
307+
WHERE
287308
`mg_articoli`.`id` = '.prepare($this->id).'
288-
ORDER BY
309+
ORDER BY
289310
`mg_attributo_combinazione`.`order`');
290311

291312
return implode(', ', array_column($valori, 'nome'));
@@ -475,7 +496,14 @@ public function movimentaRicorsivo($qta, $descrizone = null, $data = null, $manu
475496

476497
foreach ($componenti as $componente) {
477498
$qta_componente = $qta * $componente->pivot->qta;
478-
$componente->movimenta($qta_componente, $descrizone, $data, $manuale, $array);
499+
500+
// Passa la sede anche ai componenti
501+
$array_componente = $array;
502+
if (isset($array['idsede'])) {
503+
$array_componente['idsede'] = $array['idsede'];
504+
}
505+
506+
$componente->movimenta($qta_componente, $descrizone, $data, $manuale, $array_componente);
479507
}
480508
}
481509

src/Common/Components/Article.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -290,7 +290,10 @@ protected function movimentaMagazzino($qta)
290290
$qta_movimento = $documento->direzione == 'uscita' ? $qta : -$qta;
291291
$movimento = Movimento::descrizioneMovimento($qta_movimento, $documento->direzione).' - '.$documento->getReference();
292292

293-
if ($documento instanceof \Modules\Interventi\Intervento) {
293+
// Gestione della sede: priorità alla sede esplicita, poi quella del documento
294+
if (isset($this->qta_movimentazione_sede)) {
295+
$id_sede = $this->qta_movimentazione_sede;
296+
} elseif ($documento instanceof \Modules\Interventi\Intervento) {
294297
$id_sede = $documento->idsede_partenza;
295298
} else {
296299
$id_sede = $documento->direzione == 'uscita' ? $documento->idsede_destinazione : $documento->idsede_partenza;

0 commit comments

Comments
 (0)