mirror of
https://github.com/devcode-it/openstamanager.git
synced 2025-02-07 11:13:44 +01:00
feat: gestione flag aggiunta e/o aggiornamento righe import
This commit is contained in:
parent
7cf05e56e3
commit
cde3fb0e82
@ -235,7 +235,7 @@ class CSV extends CSVImporter
|
||||
];
|
||||
}
|
||||
|
||||
public function import($record)
|
||||
public function import($record, $update_record = true, $add_record = true)
|
||||
{
|
||||
$database = database();
|
||||
$primary_key = $this->getPrimaryKey();
|
||||
@ -248,6 +248,21 @@ class CSV extends CSVImporter
|
||||
unset($record['cognome']);
|
||||
unset($record['nome']);
|
||||
|
||||
// Ricerca di eventuale anagrafica corrispondente sulla base del campo definito come primary_key (es. codice)
|
||||
if (!empty($primary_key)) {
|
||||
$anagrafica = Anagrafica::where($primary_key, '=', trim((string) $record[$primary_key]))->first();
|
||||
}
|
||||
|
||||
// Controllo se creare o aggiornare il record
|
||||
if (($anagrafica && !$update_record) || (!$anagrafica && !$add_record)) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Se non trovo nessuna anagrafica corrispondente, allora la creo
|
||||
if (empty($anagrafica)) {
|
||||
$anagrafica = Anagrafica::build($record['ragione_sociale']);
|
||||
}
|
||||
|
||||
// Individuazione del tipo dell'anagrafica
|
||||
$tipologie = [];
|
||||
if (!empty($record['tipologia'])) {
|
||||
@ -331,16 +346,6 @@ class CSV extends CSVImporter
|
||||
}
|
||||
}
|
||||
|
||||
// Ricerca di eventuale anagrafica corrispondente sulla base del campo definito come primary_key (es. codice)
|
||||
if (!empty($primary_key)) {
|
||||
$anagrafica = Anagrafica::where($primary_key, '=', trim((string) $record[$primary_key]))->first();
|
||||
}
|
||||
|
||||
// Se non trovo nessuna anagrafica corrispondente, allora la creo
|
||||
if (empty($anagrafica)) {
|
||||
$anagrafica = Anagrafica::build($record['ragione_sociale']);
|
||||
}
|
||||
|
||||
// Impedisco di aggiornare l'anagrafica Azienda
|
||||
if ($anagrafica->id == $id_azienda) {
|
||||
return false;
|
||||
|
@ -260,10 +260,23 @@ class CSV extends CSVImporter
|
||||
}
|
||||
}
|
||||
|
||||
public function import($record)
|
||||
public function import($record, $update_record = true, $add_record = true)
|
||||
{
|
||||
$database = database();
|
||||
$primary_key = $this->getPrimaryKey();
|
||||
|
||||
// Individuazione articolo e generazione
|
||||
$articolo = null;
|
||||
// Ricerca sulla base della chiave primaria se presente
|
||||
if (!empty($primary_key)) {
|
||||
$articolo = Articolo::where($primary_key, $record[$primary_key])->withTrashed()->first();
|
||||
}
|
||||
|
||||
// Controllo se creare o aggiornare il record
|
||||
if (($articolo && !$update_record) || (!$articolo && !$add_record)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$url = $record['immagine'];
|
||||
unset($record['immagine']);
|
||||
|
||||
@ -308,12 +321,6 @@ class CSV extends CSVImporter
|
||||
}
|
||||
}
|
||||
|
||||
// Individuazione articolo e generazione
|
||||
$articolo = null;
|
||||
// Ricerca sulla base della chiave primaria se presente
|
||||
if (!empty($primary_key)) {
|
||||
$articolo = Articolo::where($primary_key, $record[$primary_key])->withTrashed()->first();
|
||||
}
|
||||
if (empty($articolo)) {
|
||||
$articolo = Articolo::build($record['codice'], $categoria, $sottocategoria);
|
||||
$articolo->setTranslation('title', $record['descrizione']);
|
||||
|
@ -98,7 +98,7 @@ class CSV extends CSVImporter
|
||||
];
|
||||
}
|
||||
|
||||
public function import($record)
|
||||
public function import($record, $update_record = true, $add_record = true)
|
||||
{
|
||||
$database = database();
|
||||
$primary_key = $this->getPrimaryKey();
|
||||
@ -110,6 +110,17 @@ class CSV extends CSVImporter
|
||||
}
|
||||
|
||||
if (!empty($anagrafica)) {
|
||||
$impianto = null;
|
||||
// Ricerca sulla base della chiave primaria se presente
|
||||
if (!empty($primary_key)) {
|
||||
$impianto = Impianto::where($primary_key, $record[$primary_key])->first();
|
||||
}
|
||||
|
||||
// Controllo se creare o aggiornare il record
|
||||
if (($impianto && !$update_record) || (!$impianto && !$add_record)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$url = $record['immagine'];
|
||||
unset($record['immagine']);
|
||||
|
||||
@ -154,21 +165,15 @@ class CSV extends CSVImporter
|
||||
}
|
||||
|
||||
// Individuazione impianto e generazione
|
||||
$impianto = null;
|
||||
|
||||
// Ricerca sulla base della chiave primaria se presente
|
||||
if (!empty($primary_key)) {
|
||||
$impianto = Impianto::where($primary_key, $record[$primary_key])->first();
|
||||
$impianto->nome = $record['nome'];
|
||||
}
|
||||
if (empty($impianto)) {
|
||||
$impianto = Impianto::build($record['matricola'], $record['nome'], $categoria, $record['cliente']);
|
||||
$impianto = Impianto::build($record['matricola'], $record['nome'], $categoria, $anagrafica->id);
|
||||
}
|
||||
|
||||
if (!empty($record['data'])) {
|
||||
$impianto->data = $record['data'];
|
||||
}
|
||||
|
||||
$impianto->nome = $record['nome'];
|
||||
$impianto->idanagrafica = $anagrafica->idanagrafica;
|
||||
$impianto->id_marca = $id_marca;
|
||||
$impianto->id_modello = $record['modello'];
|
||||
|
@ -97,7 +97,7 @@ switch (filter('op')) {
|
||||
$csv->init();
|
||||
}
|
||||
|
||||
$count = $csv->importRows($offset, $limit);
|
||||
$count = $csv->importRows($offset, $limit, post('update_record'), post('add_record'));
|
||||
$more = $count == $limit;
|
||||
|
||||
// Operazioni di finalizzazione per l'importazione
|
||||
|
@ -56,11 +56,19 @@ if (empty($id_record)) {
|
||||
<input type="hidden" name="op" value="import">
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-8">
|
||||
<div class="col-md-3">
|
||||
{[ "type": "checkbox", "label": "'.tr('Importa prima riga').'", "name": "include_first_row", "extra":"", "value": "1" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
<div class="col-md-3">
|
||||
{[ "type": "checkbox", "label": "'.tr('Aggiorna record esistenti').'", "name": "update_record", "extra":"", "value": "1" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-3">
|
||||
{[ "type": "checkbox", "label": "'.tr('Crea record mancanti').'", "name": "add_record", "extra":"", "value": "1" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-3">
|
||||
{[ "type": "select", "label": "'.tr('Chiave primaria').'", "name": "primary_key", "values": '.json_encode($campi_disponibili).', "value": "'.$primary_key.'" ]}
|
||||
</div>
|
||||
</div>';
|
||||
|
@ -99,7 +99,7 @@ class CSV extends CSVImporter
|
||||
];
|
||||
}
|
||||
|
||||
public function import($record)
|
||||
public function import($record, $update_record = true, $add_record = true)
|
||||
{
|
||||
$database = database();
|
||||
$primary_key = $this->getPrimaryKey();
|
||||
@ -116,12 +116,16 @@ class CSV extends CSVImporter
|
||||
|
||||
if (!empty($anagrafica)) {
|
||||
$intervento = null;
|
||||
|
||||
// Ricerca sulla base della chiave primaria se presente
|
||||
if (!empty($primary_key)) {
|
||||
$intervento = Intervento::where($primary_key, $record[$primary_key])->first();
|
||||
}
|
||||
|
||||
// Controllo se creare o aggiornare il record
|
||||
if (($intervento && !$update_record) || (!$intervento && !$add_record)) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Verifico tipo e stato per creare l'intervento
|
||||
if (empty($record['tipo'])) {
|
||||
$tipo = TipoIntervento::where('codice', 'GEN')->first();
|
||||
|
@ -58,7 +58,7 @@ class CSV extends CSVImporter
|
||||
];
|
||||
}
|
||||
|
||||
public function import($record)
|
||||
public function import($record, $update_record = true, $add_record = true)
|
||||
{
|
||||
$database = database();
|
||||
$id_listino = $database->fetchOne('SELECT id FROM mg_listini WHERE nome = '.prepare($record['nome_listino']))['id'];
|
||||
@ -71,6 +71,11 @@ class CSV extends CSVImporter
|
||||
|
||||
$articolo_listino = Articolo::where('id_articolo', $id_articolo)->where('id_listino', $id_listino)->first();
|
||||
|
||||
// Controllo se creare o aggiornare il record
|
||||
if (($articolo_listino && !$update_record) || (!$articolo_listino && !$add_record)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!$articolo_listino) {
|
||||
$articolo_listino = Articolo::build($articolo_originale, $id_listino);
|
||||
}
|
||||
|
@ -57,7 +57,7 @@ class CSV extends CSVImporter
|
||||
];
|
||||
}
|
||||
|
||||
public function import($record)
|
||||
public function import($record, $update_record = true, $add_record = true)
|
||||
{
|
||||
$database = database();
|
||||
$primary_key = $this->getPrimaryKey();
|
||||
@ -72,23 +72,44 @@ class CSV extends CSVImporter
|
||||
// Estraggo il conto,
|
||||
$idpianodeiconti2 = $database->fetchOne('SELECT id FROM co_pianodeiconti2 WHERE numero='.prepare($codice_conto2))['id'];
|
||||
|
||||
if (empty($idpianodeiconti2) && empty($codice_conto3)) {
|
||||
$database->insert('co_pianodeiconti2', [
|
||||
'numero' => $codice_conto2,
|
||||
'descrizione' => $record['descrizione'],
|
||||
'idpianodeiconti1' => $idpianodeiconti1,
|
||||
'dir' => $record['dir'],
|
||||
]);
|
||||
} elseif (!empty($idpianodeiconti2) && !empty($codice_conto3)) {
|
||||
$idpianodeiconti3 = $database->fetchOne('SELECT id FROM co_pianodeiconti3 WHERE numero='.prepare($codice_conto3).' AND idpianodeiconti2='.prepare($idpianodeiconti2))['id'];
|
||||
|
||||
if (empty($idpianodeiconti3)) {
|
||||
$database->insert('co_pianodeiconti3', [
|
||||
'numero' => $codice_conto3,
|
||||
if ($add_record) {
|
||||
if (empty($idpianodeiconti2) && empty($codice_conto3)) {
|
||||
$database->insert('co_pianodeiconti2', [
|
||||
'numero' => $codice_conto2,
|
||||
'descrizione' => $record['descrizione'],
|
||||
'idpianodeiconti2' => $idpianodeiconti2,
|
||||
'idpianodeiconti1' => $idpianodeiconti1,
|
||||
'dir' => $record['dir'],
|
||||
]);
|
||||
} elseif (!empty($idpianodeiconti2) && !empty($codice_conto3)) {
|
||||
$idpianodeiconti3 = $database->fetchOne('SELECT id FROM co_pianodeiconti3 WHERE numero='.prepare($codice_conto3).' AND idpianodeiconti2='.prepare($idpianodeiconti2))['id'];
|
||||
|
||||
if (empty($idpianodeiconti3)) {
|
||||
$database->insert('co_pianodeiconti3', [
|
||||
'numero' => $codice_conto3,
|
||||
'descrizione' => $record['descrizione'],
|
||||
'idpianodeiconti2' => $idpianodeiconti2,
|
||||
'dir' => $record['dir'],
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($update_record) {
|
||||
if (!empty($idpianodeiconti2) && empty($codice_conto3)) {
|
||||
$database->update('co_pianodeiconti2', [
|
||||
'descrizione' => $record['descrizione'],
|
||||
], [
|
||||
'id' => $idpianodeiconti2,
|
||||
]);
|
||||
} elseif (!empty($idpianodeiconti2) && !empty($codice_conto3)) {
|
||||
$idpianodeiconti3 = $database->fetchOne('SELECT id FROM co_pianodeiconti3 WHERE numero='.prepare($codice_conto3).' AND idpianodeiconti2='.prepare($idpianodeiconti2))['id'];
|
||||
|
||||
if (!empty($idpianodeiconti3)) {
|
||||
$database->update('co_pianodeiconti3', [
|
||||
'descrizione' => $record['descrizione'],
|
||||
], [
|
||||
'id' => $idpianodeiconti3,
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -84,7 +84,7 @@ class CSV extends CSVImporter
|
||||
];
|
||||
}
|
||||
|
||||
public function import($record)
|
||||
public function import($record, $update_record = true, $add_record = true)
|
||||
{
|
||||
$database = database();
|
||||
$primary_key = $this->getPrimaryKey();
|
||||
@ -92,6 +92,11 @@ class CSV extends CSVImporter
|
||||
$id_preventivo = $database->fetchOne('SELECT id FROM `co_preventivi` WHERE `numero`='.prepare($record['numero']))['id'];
|
||||
$preventivo = Preventivo::find($id_preventivo);
|
||||
|
||||
// Controllo se creare o aggiornare il record
|
||||
if (($preventivo && !$update_record) || (!$preventivo && !$add_record)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (empty($preventivo)) {
|
||||
$anagrafica = Anagrafica::where('ragione_sociale', $record['ragione_sociale'])->first();
|
||||
|
||||
|
@ -92,7 +92,7 @@ abstract class CSVImporter implements ImporterInterface
|
||||
return $rows;
|
||||
}
|
||||
|
||||
public function importRows($offset, $length)
|
||||
public function importRows($offset, $length, $update_record = true, $add_record = true)
|
||||
{
|
||||
$rows = $this->getRows($offset, $length);
|
||||
foreach ($rows as $row) {
|
||||
@ -100,13 +100,13 @@ abstract class CSVImporter implements ImporterInterface
|
||||
$record = $this->getRecord($row);
|
||||
|
||||
// Importazione del record
|
||||
$this->import($record);
|
||||
$this->import($record, $update_record, $add_record);
|
||||
}
|
||||
|
||||
return count($rows);
|
||||
}
|
||||
|
||||
abstract public function import($record);
|
||||
abstract public function import($record, $update_record, $add_record);
|
||||
|
||||
public function getPrimaryKey()
|
||||
{
|
||||
|
@ -69,14 +69,14 @@ interface ImporterInterface
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function importRows($offset, $length);
|
||||
public function importRows($offset, $length, $update_record, $add_record);
|
||||
|
||||
/**
|
||||
* Gestisce le operazioni di importazione per un singolo record.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function import($record);
|
||||
public function import($record, $update_record, $add_record);
|
||||
|
||||
/**
|
||||
* Restituisce la chiave primaria impostata dall'utente.
|
||||
|
Loading…
x
Reference in New Issue
Block a user