Non puoi selezionare più di 25 argomenti
Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.
344 righe
9.0 KiB
344 righe
9.0 KiB
<? |
|
class PublicProdotto { |
|
|
|
public $info; |
|
public $codice_ente; |
|
protected $db; |
|
|
|
private function __construct() { |
|
global $pdo; |
|
$this->db = $pdo; |
|
$this->codice_ente = $_SESSION["ente"]->codice ?? 0; |
|
|
|
} |
|
|
|
public static function init($codice = null, $relation = true) |
|
{ |
|
|
|
if(!empty($_SESSION["ente"]) && isset($_SESSION['utente']) && !empty($_SESSION["utente"]->codice) && self::getBandiMercato()){ |
|
$instance = new PublicProdotto(); |
|
|
|
if(!empty($codice)){ |
|
|
|
global $pdo; |
|
|
|
$sql = "SELECT * |
|
FROM b_prodotti |
|
WHERE codice = :codice |
|
AND codice_oe = :codice_oe "; |
|
|
|
$record = $pdo->go($sql,[ |
|
':codice' => $codice, |
|
':codice_oe' => $_SESSION["utente"]->oe["codice"] |
|
] |
|
)->fetch(PDO::FETCH_ASSOC); |
|
|
|
if(!empty($record)){ |
|
|
|
if($relation){ |
|
|
|
$each = [ |
|
'cpv' => [ |
|
'select' => 'cpv', |
|
'table' => 'r_cpv_prodotti' |
|
], |
|
'spedizioni' => [ |
|
'select' => 'codice,stato, descrizione, ordineMinimo, ordineMassimo, prezzo', |
|
'table' => 'b_prodotti_spedizioni' |
|
], |
|
'traduzioni' => [ |
|
'select' => 'codice, lingua, denominazione, descrizione, garanzia', |
|
'table' => 'b_prodotti_traduzioni' |
|
] |
|
]; |
|
|
|
foreach ($each as $chiave => $value) { |
|
$sql = "SELECT {$value['select']} FROM {$value['table']} WHERE codice_prodotto = :codice_prodotto"; |
|
|
|
if($chiave != 'cpv'){ |
|
$sql .= " AND soft_delete = 'N' "; |
|
} |
|
|
|
$record[$chiave] = $pdo->go($sql, [ ':codice_prodotto' => $record['codice'] ])->fetchAll(PDO::FETCH_ASSOC); |
|
} |
|
} |
|
|
|
$instance->info = $record; |
|
|
|
return $instance; |
|
|
|
}else{ |
|
return false; |
|
} |
|
|
|
}else{ |
|
|
|
$instance->info = get_campi("b_prodotti"); |
|
return $instance; |
|
} |
|
|
|
} |
|
|
|
return false; |
|
} |
|
|
|
public static function getBandiMercato() |
|
{ |
|
global $pdo; |
|
|
|
if(!empty($_SESSION["utente"]->oe["codice"])){ |
|
|
|
$bind = []; |
|
$sql = "SELECT r_partecipanti_albo.codice, |
|
r_partecipanti_albo.codice_elenco, |
|
r_partecipanti_albo.conferma, |
|
b_bandi_albo.tipologia |
|
FROM r_partecipanti_albo |
|
LEFT JOIN b_bandi_albo ON r_partecipanti_albo.codice_elenco = b_bandi_albo.codice |
|
WHERE r_partecipanti_albo.codice_operatore = :oe |
|
AND r_partecipanti_albo.conferma = 'S' |
|
AND r_partecipanti_albo.ammesso = 'S' |
|
AND b_bandi_albo.tipologia = 'M' "; |
|
|
|
$bind[':oe'] = $_SESSION["utente"]->oe["codice"]; |
|
|
|
return $pdo->go($sql, $bind)->fetchAll(PDO::FETCH_ASSOC) ?? []; |
|
} |
|
|
|
return false; |
|
} |
|
|
|
|
|
public static function getProdotti($select = null , $filters = []) |
|
{ |
|
if(!empty($_SESSION["ente"]) &&!empty($_SESSION["utente"]->oe["codice"])){ |
|
global $pdo; |
|
|
|
if(empty($select)){ |
|
$select = 'codice'; |
|
}elseif(!empty($select) && is_array($select)){ |
|
$select = implode(",", $select); |
|
}else{ |
|
$select = '*'; |
|
} |
|
|
|
return $pdo->go("SELECT {$select} FROM b_prodotti WHERE soft_delete = 'N' AND codice_oe = :codice_oe", [':codice_oe' => $_SESSION["utente"]->oe["codice"]])->fetchAll(PDO::FETCH_ASSOC); |
|
} |
|
|
|
return []; |
|
} |
|
|
|
public function salva($data) |
|
{ |
|
|
|
if(!empty($this)){ |
|
|
|
$data['codice_oe'] = $_SESSION["utente"]->oe["codice"]; |
|
|
|
$operazione = "INSERT"; |
|
if(!empty($this->info['codice'])){ |
|
$operazione = "UPDATE"; |
|
|
|
if($this->info['confermato'] == 'S'){ |
|
$operazione = "INSERT"; |
|
$data["codice_aggiornamento"] = $data["codice"]; |
|
unset($data["codice"]); |
|
} |
|
} |
|
|
|
if ($data["confermato"] == "S") { |
|
$data["attivo"] = "S"; |
|
} |
|
|
|
|
|
$salva = new salva(); |
|
$salva->debug = false; |
|
$salva->nome_tabella = "b_prodotti"; |
|
$salva->operazione = $operazione; |
|
$salva->oggetto = $data; |
|
$codice = $salva->save(); |
|
|
|
if($codice !== false){ |
|
|
|
$prodotto = self::init($codice); |
|
|
|
return $prodotto; |
|
|
|
} |
|
} |
|
|
|
return false; |
|
} |
|
|
|
public function salvaCPV($data) |
|
{ |
|
|
|
if(!empty($this->info['codice']) && $data ){ |
|
|
|
global $pdo; |
|
// elimina e risalva |
|
$continue = true; |
|
|
|
$pdo->go("DELETE FROM r_cpv_prodotti WHERE codice_prodotto = :codice_prodotto", [':codice_prodotto' => $this->info['codice']]); |
|
scriviLog("r_cpv_prodotti","DELETE",$pdo->getSQL()); |
|
$data = array_unique($data); |
|
|
|
foreach($data as $cpv) { |
|
if ($cpv != "") { |
|
|
|
|
|
$bind = [ |
|
':codice_prodotto' => $this->info['codice'], |
|
':cpv' => $cpv, |
|
':codice_utente' => $_SESSION["utente"]->codice |
|
]; |
|
|
|
$strsql = "INSERT INTO r_cpv_prodotti (codice_prodotto,cpv,utente_modifica) VALUES (:codice_prodotto,:cpv,:codice_utente)"; |
|
|
|
$record = $pdo->go($strsql,$bind); |
|
|
|
scriviLog("r_cpv_prodotti","INSERT",$pdo->getSQL()); |
|
if($record->rowCount() == 0){ |
|
break; |
|
$continue = false; |
|
} |
|
} |
|
} |
|
|
|
if($continue){ |
|
return true; |
|
}else{ |
|
?> |
|
swal({title:js_dict.error,html:"<?= __("errore salvataggio cpv") ?>",type:"error"}); |
|
<? |
|
die(); |
|
} |
|
} |
|
|
|
return false; |
|
} |
|
|
|
// NON UTILIZZATA |
|
public static function salvaPrezzi($operazione, $data) |
|
{ |
|
|
|
if(!empty($data['codice'])){ |
|
if(self::salvaRelazioni("prezzi", "b_prodotti_prezzi", $operazione, $data)){ |
|
return true; |
|
}else{ |
|
?> |
|
swal({title:js_dict.error,html:"<?= __("errore salvataggio prezzo") ?>",type:"error"}); |
|
<? |
|
die(); |
|
} |
|
} |
|
|
|
return false; |
|
} |
|
|
|
public function salvaSpedizioni($operazione, $data) |
|
{ |
|
|
|
if(!empty($this->info['codice'])){ |
|
if($this->salvaRelazioni("spedizioni", "b_prodotti_spedizioni", $operazione, $data)){ |
|
return true; |
|
}else{ |
|
?> |
|
swal({title:js_dict.error,html:"<?= __("errore salvataggio spedizioni") ?>",type:"error"}); |
|
<? |
|
die(); |
|
} |
|
} |
|
return false; |
|
} |
|
|
|
public function salvaTraduzioni($operazione, $data) |
|
{ |
|
if(!empty($this->info['codice'])){ |
|
if(self::salvaRelazioni("traduzione", "b_prodotti_traduzioni", $operazione, $data)){ |
|
return true; |
|
}else{ |
|
?> |
|
swal({title:js_dict.error,html:"<?= __("errore salvataggio traduzioni") ?>",type:"error"}); |
|
<? |
|
die(); |
|
} |
|
} |
|
return false; |
|
} |
|
|
|
public function salvaRelazioni($input, $table, $operazione, $data) |
|
{ |
|
|
|
if(!empty($data) && !empty($this->info['codice'])){ |
|
|
|
if (!empty($data[$input])) { |
|
|
|
|
|
foreach($data[$input] AS $id => $value) { |
|
|
|
$value["codice_prodotto"] = $this->info['codice']; |
|
|
|
if (is_numeric($id) && $operazione == 'UPDATE') { |
|
$value["codice"] = $id; |
|
} |
|
|
|
$salva = new salva(); |
|
$salva->nome_tabella = $table; |
|
$salva->operazione = (!is_numeric($id) || $operazione == "INSERT") ? "INSERT" : "UPDATE"; |
|
$salva->oggetto = $value; |
|
$salva = $salva->save(); |
|
|
|
if (empty($salva)) { |
|
return false; |
|
} |
|
|
|
} |
|
|
|
return true; |
|
} |
|
} |
|
|
|
return false; |
|
} |
|
|
|
public function salvaAllegati($allegati, $type) |
|
{ |
|
if(!empty($this->info['codice']) && !empty($allegati)){ |
|
$errori_upload = []; |
|
foreach($allegati as $allegato) { |
|
if (filesManager::saveFile($allegato["filename"],$this->info['codice'],"catalogo",$allegato["nome"], $type) === false) { |
|
$errori_upload[] = $allegato["filename"]; |
|
} |
|
} |
|
|
|
if(!empty($errori_upload)){ |
|
?> |
|
swal({title:js_dict.error,html:"<?= __("errore salvataggio allegati") ?>",type:"error"}); |
|
<? |
|
die(); |
|
} |
|
return true; |
|
} |
|
return false; |
|
} |
|
|
|
public static function getCataloguePackLevels($packLevel = null) |
|
{ |
|
$packLevels = [ |
|
"CU" => "Unità", |
|
"DU" => "Pallet", |
|
"TU" => "Confezione", |
|
"HN" => "Handling Unit" |
|
]; |
|
|
|
if(!empty($packLevel) && isset($packLevels[$packLevel])){ |
|
return $packLevels[$packLevel]; |
|
} |
|
|
|
return $packLevels; |
|
|
|
} |
|
|
|
|
|
}
|
|
|