mirror of
https://github.com/devcode-it/openstamanager.git
synced 2025-02-02 08:56:48 +01:00
Aggiunta possibilità di creare nuove varianti collegandole ad articoli esistenti
This commit is contained in:
parent
8d79786184
commit
aae8924027
@ -32,6 +32,7 @@ switch ($resource) {
|
||||
$prezzi_ivati = setting('Utilizza prezzi di vendita comprensivi di IVA');
|
||||
$usare_dettaglio_fornitore = $superselect['dir'] == 'uscita';
|
||||
$usare_iva_anagrafica = $superselect['dir'] == 'entrata' && !empty($superselect['idanagrafica']);
|
||||
$solo_non_varianti = $superselect['solo_non_varianti'];
|
||||
|
||||
$query = "SELECT
|
||||
IF(`categoria`.`nome` IS NOT NULL, CONCAT(`categoria`.`nome`, IF(`sottocategoria`.`nome` IS NOT NULL, CONCAT(' (', `sottocategoria`.`nome`, ')'), '-')), '<i>".tr('Nessuna categoria')."</i>') AS optgroup,
|
||||
@ -139,6 +140,10 @@ switch ($resource) {
|
||||
$where[] = 'mg_articoli.attivo = 1';
|
||||
$where[] = 'mg_articoli.deleted_at IS NULL';
|
||||
|
||||
if ($solo_non_varianti) {
|
||||
$where[] = 'mg_articoli.id_combinazione IS NULL';
|
||||
}
|
||||
|
||||
if (!empty($search)) {
|
||||
$search_fields[] = 'mg_articoli.descrizione LIKE '.prepare('%'.$search.'%');
|
||||
$search_fields[] = 'mg_articoli.codice LIKE '.prepare('%'.$search.'%');
|
||||
|
@ -44,7 +44,7 @@ switch (filter('op')) {
|
||||
break;
|
||||
|
||||
case 'gestione-variante':
|
||||
$combinazione->generaVariante((array) filter('attributo'));
|
||||
$combinazione->generaVariante((array) filter('attributo'), filter('id_articolo'));
|
||||
|
||||
flash()->info(tr('Variante aggiunta correttamente!'));
|
||||
|
||||
|
@ -34,6 +34,12 @@ foreach ($attributi as $key => $attributo) {
|
||||
</div>';
|
||||
}
|
||||
|
||||
// Scelta articolo esistente
|
||||
echo '
|
||||
<div class="col-md-4">
|
||||
{[ "type": "select", "label": "'.tr('Collega articolo esistente').' ('.tr('facoltativo').')", "name": "id_articolo", "ajax-source": "articoli", "select-options": {"solo_non_varianti": 1, "permetti_movimento_a_zero": 1} ]}
|
||||
</div>';
|
||||
|
||||
echo '
|
||||
</div>
|
||||
|
||||
|
@ -76,7 +76,7 @@ class Combinazione extends Model
|
||||
*
|
||||
* @param $valori_attributi
|
||||
*/
|
||||
public function generaVariante($valori_attributi)
|
||||
public function generaVariante($valori_attributi, $id_articolo = null)
|
||||
{
|
||||
$database = database();
|
||||
|
||||
@ -84,20 +84,42 @@ class Combinazione extends Model
|
||||
$variante = ValoreAttributo::findMany($valori_attributi)->pluck('nome')->all();
|
||||
|
||||
// Generazione Articolo di base
|
||||
$articoli = $this->articoli;
|
||||
if ($articoli->isEmpty()) {
|
||||
$articolo = Articolo::build($this->nome, $this->nome);
|
||||
$articolo->id_combinazione = $this->id;
|
||||
if (empty($id_articolo)) {
|
||||
$articoli = $this->articoli;
|
||||
if ($articoli->isEmpty()) {
|
||||
$articolo = Articolo::build($this->nome, $this->nome);
|
||||
$articolo->id_combinazione = $this->id;
|
||||
|
||||
$articolo->id_categoria = $this->id_categoria;
|
||||
$articolo->id_sottocategoria = $this->id_sottocategoria;
|
||||
} else {
|
||||
$articolo_base = $articoli->first();
|
||||
$articolo = $articolo_base->replicate();
|
||||
$articolo->id_categoria = $this->id_categoria;
|
||||
$articolo->id_sottocategoria = $this->id_sottocategoria;
|
||||
} else {
|
||||
$articolo_base = $articoli->first();
|
||||
$articolo = $articolo_base->replicate();
|
||||
|
||||
$nome_immagine = $articolo_base->immagine_upload->name;
|
||||
$allegato = $articolo_base->uploads()->where('name', $nome_immagine)->first();
|
||||
|
||||
if (!empty($allegato)) {
|
||||
$allegato->copia([
|
||||
'id_module' => $articolo->getModule()->id,
|
||||
'id_record' => $articolo->id,
|
||||
]);
|
||||
|
||||
$articolo->immagine = $articolo->uploads()->where('name', $nome_immagine)->first()->filename;
|
||||
$articolo->save();
|
||||
}
|
||||
}
|
||||
$articolo->descrizione = $this->nome.' ['.implode(', ', $variante).']';
|
||||
$articolo->codice = $this->codice.'-'.implode('|', $variante);
|
||||
$articolo->save();
|
||||
}
|
||||
|
||||
// Uso di un articolo già esistente
|
||||
else {
|
||||
$articolo = Articolo::find($id_articolo);
|
||||
$articolo->id_combinazione = $this->id;
|
||||
$articolo->save();
|
||||
}
|
||||
$articolo->descrizione = $this->nome.' ['.implode(', ', $variante).']';
|
||||
$articolo->codice = $this->codice.'-'.implode('|', $variante);
|
||||
$articolo->save();
|
||||
|
||||
// Associazione valori della variante
|
||||
foreach ($valori_attributi as $id => $id_valore) {
|
||||
@ -106,22 +128,6 @@ class Combinazione extends Model
|
||||
'id_valore' => $id_valore,
|
||||
]);
|
||||
}
|
||||
|
||||
// Salvataggio immagine relativa
|
||||
if (!$articoli->isEmpty()) {
|
||||
$nome_immagine = $articolo_base->immagine_upload->name;
|
||||
$allegato = $articolo_base->uploads()->where('name', $nome_immagine)->first();
|
||||
|
||||
if (!empty($allegato)) {
|
||||
$allegato->copia([
|
||||
'id_module' => $articolo->getModule()->id,
|
||||
'id_record' => $articolo->id,
|
||||
]);
|
||||
|
||||
$articolo->immagine = $articolo->uploads()->where('name', $nome_immagine)->first()->filename;
|
||||
$articolo->save();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
x
Reference in New Issue
Block a user