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:"",type:"error"}); swal({title:js_dict.error,html:"",type:"error"}); info['codice'])){ if($this->salvaRelazioni("spedizioni", "b_prodotti_spedizioni", $operazione, $data)){ return true; }else{ ?> swal({title:js_dict.error,html:"",type:"error"}); info['codice'])){ if(self::salvaRelazioni("traduzione", "b_prodotti_traduzioni", $operazione, $data)){ return true; }else{ ?> swal({title:js_dict.error,html:"",type:"error"}); 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:"",type:"error"}); "Unità", "DU" => "Pallet", "TU" => "Confezione", "HN" => "Handling Unit" ]; if(!empty($packLevel) && isset($packLevels[$packLevel])){ return $packLevels[$packLevel]; } return $packLevels; } }