2021-08-31 15:46:14 +02:00
< ? php
include_once __DIR__ . '/init.php' ;
$varianti_esistenti = $database -> fetchArray ( ' SELECT GROUP_CONCAT ( `variazioni` . `id_valore` ) AS variante
FROM ( SELECT `mg_articolo_attributo` . `id_valore` , `mg_articolo_attributo` . `id_articolo`
FROM `mg_articolo_attributo`
INNER JOIN `mg_valori_attributi` ON `mg_valori_attributi` . `id` = `mg_articolo_attributo` . `id_valore`
INNER JOIN `mg_attributi` ON `mg_attributi` . `id` = `mg_valori_attributi` . `id_attributo`
INNER JOIN `mg_articoli` ON `mg_articoli` . `id` = `mg_articolo_attributo` . `id_articolo`
INNER JOIN `mg_combinazioni` ON `mg_combinazioni` . `id` = `mg_articoli` . `id_combinazione`
INNER JOIN `mg_attributo_combinazione` ON `mg_attributo_combinazione` . `id_combinazione` = `mg_combinazioni` . `id` AND `mg_attributo_combinazione` . `id_attributo` = `mg_attributi` . `id`
WHERE `mg_articoli` . `deleted_at` IS NULL AND `mg_articoli` . `id_combinazione` = '.prepare($combinazione->id).'
ORDER BY `mg_attributo_combinazione` . `order`
) AS variazioni
GROUP BY `variazioni` . `id_articolo` ' );
$varianti_esistenti = array_column ( $varianti_esistenti , 'variante' );
echo '
< form action = " " method = " post " id = " form-variante " >
< input type = " hidden " name = " op " value = " gestione-variante " >
< input type = " hidden " name = " backto " value = " record-edit " >
< p > '.tr(' Completa le informazioni dei diversi Attributi per generare una variante della Combinazione ').' .</ p >
< div class = " row " > ' ;
$attributi = $combinazione -> attributi ;
foreach ( $attributi as $key => $attributo ) {
echo '
< div class = " col-md-4 " >
{[ " type " : " select " , " label " : " '. $attributo->nome .' " , " name " : " attributo['. $key .'] " , " values " : " query=SELECT id, nome AS descrizione FROM mg_valori_attributi WHERE id_attributo = '.prepare( $attributo->id ).' AND deleted_at IS NULL " , " required " : 1 ]}
</ div > ' ;
}
2021-12-01 10:44:02 +01:00
// 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 > ' ;
2021-08-31 15:46:14 +02:00
echo '
</ div >
< div class = " alert alert-info hidden " id = " variante-esistente " >
< i class = " fa fa-info-circle " ></ i > '.tr(' La variante indicata è già presente per la combinazione corrente ').' .
</ div >
<!-- PULSANTI -->
< div class = " row " >
< div class = " col-md-12 text-right " >
< button type = " submit " class = " btn btn-primary " >
< i class = " fa fa-plus " ></ i > '.tr(' Aggiungi ').'
</ button >
</ div >
</ div >
</ form >
< script >
var varianti_esistenti = '.json_encode($varianti_esistenti).' ;
var form = $ ( " #form-variante " );
form . find ( " select " ) . on ( " change " , function () {
const inputs = form . serializeArray ();
// Individuazione variante e completezza
let incompleto = false ;
let valori = [];
for ( const { name , value } of inputs ) {
if ( name . startsWith ( " attributo " )){
valori . push ( value );
incompleto |= ! value ;
}
}
// Completamento informazioni
const variante = valori . join ( " , " );
const variante_esistente = varianti_esistenti . includes ( variante );
// Disabilitazione/abilitazione pulsante di aggiunta
const button = form . find ( " button " );
if ( variante_esistente || incompleto ){
button . addClass ( " disabled " ) . attr ( " disabled " , true );
} else {
button . removeClass ( " disabled " ) . attr ( " disabled " , false );
}
// Messaggio informativo
const info = form . find ( " #variante-esistente " );
if ( variante_esistente ) {
info . removeClass ( " hidden " );
} else {
info . addClass ( " hidden " );
}
});
$ ( document ) . ready ( init );
</ script > ' ;