diff --git a/modules/anagrafiche/actions.php b/modules/anagrafiche/actions.php
index b3b12c870..f10f8c5b9 100755
--- a/modules/anagrafiche/actions.php
+++ b/modules/anagrafiche/actions.php
@@ -83,74 +83,25 @@ switch (post('op')) {
$anagrafica->id_ritenuta_acconto_acquisti = post('id_ritenuta_acconto_acquisti');
$anagrafica->id_ritenuta_acconto_vendite = post('id_ritenuta_acconto_vendite');
$anagrafica->split_payment = post('split_payment');
-
$anagrafica->tipologie = (array) post('idtipoanagrafica');
- // Avviso durante il salvataggio del codice fiscale se già presente e informo l'utente delle schede presenti
- if (!empty(post('codice_fiscale'))) {
- $idanagrafica = $dbo->fetchOne('SELECT GROUP_CONCAT(idanagrafica) AS idanagrafica FROM an_anagrafiche WHERE codice_fiscale = '.prepare(post('codice_fiscale')).' AND idanagrafica != '.prepare($id_record).' AND deleted_at IS NULL')['idanagrafica'];
-
- if (!empty($idanagrafica)) {
- $array = explode(',', $idanagrafica);
- foreach ($array as $value) {
- flash()->warning(tr('Attenzione: il codice fiscale _COD_ è già stato censito. _LINK_', [
- '_COD_' => ''.post('codice_fiscale').'',
- '_LINK_' => Modules::link('Anagrafiche', $value, null, null, ''),
- ]));
- }
- } else {
- $anagrafica->codice_fiscale = strtoupper(post('codice_fiscale'));
- }
- } else {
- $anagrafica->codice_fiscale = strtoupper(post('codice_fiscale'));
- }
-
- // Avviso durante il salvataggio della partita iva se già presente e informo l'utente delle schede presenti
- if (!empty(post('piva')) && !in_array(post('piva'), ['99999999999', '00000000000'])) {
- $idanagrafica = $dbo->fetchOne('SELECT GROUP_CONCAT(idanagrafica) AS idanagrafica FROM an_anagrafiche WHERE piva = '.prepare(post('piva')).' AND idanagrafica != '.prepare($id_record))['idanagrafica'];
-
- if (!empty($idanagrafica)) {
- $array = explode(',', $idanagrafica);
- foreach ($array as $value) {
- flash()->warning(tr('Attenzione: la partita IVA _IVA_ è già stata censita. _LINK_', [
- '_IVA_' => post('piva'),
- '_LINK_' => Modules::link('Anagrafiche', $value, null, null, ''),
- ]));
- }
- } else {
- $anagrafica->partita_iva = post('piva');
- }
- } else {
- $anagrafica->partita_iva = post('piva');
- }
+ $anagrafica->codice_fiscale = strtoupper(post('codice_fiscale'));
+ $anagrafica->partita_iva = strtoupper(post('piva'));
$anagrafica->save();
+ // Aggiorno gli agenti collegati
+ $dbo->sync('an_anagrafiche_agenti', ['idanagrafica' => $id_record], ['idagente' => (array) post('idagenti')]);
+
+ // Se l'agente di default è stato elencato anche tra gli agenti secondari lo rimuovo
+ if (!empty(post('idagente'))) {
+ $dbo->query('DELETE FROM an_anagrafiche_agenti WHERE idanagrafica='.prepare($id_record).' AND idagente='.prepare(post('idagente')));
+ }
+
flash()->info(tr("Informazioni per l'anagrafica _NAME_ salvate correttamente!", [
'_NAME_' => $anagrafica->ragione_sociale,
]));
- // Validazione della Partita IVA
- $partita_iva = $anagrafica->partita_iva;
- $partita_iva = is_numeric($partita_iva) ? $anagrafica->nazione->iso2.$partita_iva : $partita_iva;
-
- $check_vat_number = Validate::isValidVatNumber($partita_iva);
- if (empty($check_vat_number['valid-format'])) {
- flash()->warning(tr('Attenzione: la partita IVA _IVA_ potrebbe non essere valida.', [
- '_IVA_' => $partita_iva,
- ]));
- }
-
- // Validazione del Codice Fiscale, solo per anagrafiche Private e Aziende, ignoro controllo se codice fiscale e settato uguale alla p.iva
- if ($anagrafica->tipo != 'Ente pubblico' and $anagrafica->codice_fiscale != $anagrafica->partita_iva) {
- $check_codice_fiscale = Validate::isValidTaxCode($anagrafica->codice_fiscale);
- if (empty($check_codice_fiscale)) {
- flash()->warning(tr('Attenzione: il codice fiscale _COD_ potrebbe non essere valido.', [
- '_COD_' => $anagrafica->codice_fiscale,
- ]));
- }
- }
-
// Aggiorno il codice anagrafica se non è già presente, altrimenti lo ignoro
if ($anagrafica->codice != post('codice')) {
flash()->warning(tr('Attenzione: il codice anagrafica _COD_ esiste già', [
@@ -158,12 +109,62 @@ switch (post('op')) {
]));
}
- // Aggiorno gli agenti collegati
- $dbo->sync('an_anagrafiche_agenti', ['idanagrafica' => $id_record], ['idagente' => (array) post('idagenti')]);
+ // Controllo che il Codice Fiscale non sia già presente
+ $codice_fiscale = $anagrafica->codice_fiscale;
+ if (!empty($codice_fiscale)) {
+ $anagrafiche_codice_fiscale = Anagrafica::where('codice_fiscale', $codice_fiscale)
+ ->where('idanagrafica', '!=', $anagrafica->id)
+ ->get();
+ if (!$anagrafiche_codice_fiscale->isEmpty()) {
+ $message = tr('Attenzione: il codice fiscale _COD_ è già stato censito', [
+ '_COD_' => $codice_fiscale,
+ ]);
- // Se l'agente di default è stato elencato anche tra gli agenti secondari lo rimuovo
- if (!empty(post('idagente'))) {
- $dbo->query('DELETE FROM an_anagrafiche_agenti WHERE idanagrafica='.prepare($id_record).' AND idagente='.prepare(post('idagente')));
+ $links = [];
+ foreach ($anagrafiche_codice_fiscale as $anagrafica_singola) {
+ $links[] = '
'.Modules::link('Anagrafiche', $anagrafica_singola->id, $anagrafica_singola->ragione_sociale).'';
+ }
+
+ flash()->warning($message.'');
+ }
+ }
+
+ // Controllo che la Partita IVA non sia già presente
+ $partita_iva = $anagrafica->partita_iva;
+ if (!empty($partita_iva)) {
+ $anagrafiche_partita_iva = Anagrafica::where('piva', $partita_iva)
+ ->where('idanagrafica', '!=', $anagrafica->id)
+ ->get();
+ if (!$anagrafiche_partita_iva->isEmpty()) {
+ $message = tr('Attenzione: la partita IVA _IVA_ è già stata censita', [
+ '__IVA__' => $partita_iva,
+ ]);
+
+ $links = [];
+ foreach ($anagrafiche_partita_iva as $anagrafica_singola) {
+ $links[] = ''.Modules::link('Anagrafiche', $anagrafica_singola->id, $anagrafica_singola->ragione_sociale).'';
+ }
+
+ flash()->warning($message.'');
+ }
+
+ $vat_number = is_numeric($partita_iva) ? $anagrafica->nazione->iso2.$partita_iva : $partita_iva;
+ $check_vat_number = Validate::isValidVatNumber($vat_number);
+ if (empty($check_vat_number['valid-format'])) {
+ flash()->warning(tr('Attenzione: la partita IVA _IVA_ potrebbe non essere valida', [
+ '_IVA_' => $partita_iva,
+ ]));
+ }
+ }
+
+ // Validazione del Codice Fiscale, solo per anagrafiche Private e Aziende, ignoro controllo se codice fiscale e settato uguale alla p.iva
+ if ($anagrafica->tipo != 'Ente pubblico' && !empty($anagrafica->codice_fiscale) && !empty($anagrafica->partita_iva) && $anagrafica->codice_fiscale != $anagrafica->partita_iva) {
+ $check_codice_fiscale = Validate::isValidTaxCode($codice_fiscale);
+ if (empty($check_codice_fiscale)) {
+ flash()->warning(tr('Attenzione: il codice fiscale _COD_ potrebbe non essere valido.', [
+ '_COD_' => $codice_fiscale,
+ ]));
+ }
}
break;
@@ -175,44 +176,6 @@ switch (post('op')) {
$anagrafica = Anagrafica::build($ragione_sociale, post('nome'), post('cognome'), $idtipoanagrafica);
$id_record = $anagrafica->id;
- // Blocco il salvataggio del codice fiscale se già presente
- if (!empty(post('codice_fiscale'))) {
- $idanagrafica = $dbo->fetchOne('SELECT GROUP_CONCAT(idanagrafica) AS idanagrafica FROM an_anagrafiche WHERE codice_fiscale = '.prepare(post('codice_fiscale')).' AND idanagrafica != '.prepare($id_record))['idanagrafica'];
-
- if (!empty($idanagrafica)) {
- $array = explode(',', $idanagrafica);
- foreach ($array as $value) {
- flash()->warning(tr('Attenzione: il codice fiscale _COD_ è già stato censito. _LINK_', [
- '_COD_' => ''.post('codice_fiscale').'',
- '_LINK_' => Modules::link('Anagrafiche', $value, null, null, ''),
- ]));
- }
- } else {
- $anagrafica->codice_fiscale = strtoupper(post('codice_fiscale'));
- }
- } else {
- $anagrafica->codice_fiscale = strtoupper(post('codice_fiscale'));
- }
-
- // Blocco il salvataggio della partita iva se già presente
- if (!empty(post('piva'))) {
- $idanagrafica = $dbo->fetchOne('SELECT GROUP_CONCAT(idanagrafica) AS idanagrafica FROM an_anagrafiche WHERE piva = '.prepare(post('piva')).' AND idanagrafica != '.prepare($id_record))['idanagrafica'];
-
- if (!empty($idanagrafica)) {
- $array = explode(',', $idanagrafica);
- foreach ($array as $value) {
- flash()->warning(tr('Attenzione: la partita IVA _IVA_ è già stata censita. _LINK_', [
- '_IVA_' => post('piva'),
- '_LINK_' => Modules::link('Anagrafiche', $value, null, null, ''),
- ]));
- }
- } else {
- $anagrafica->partita_iva = post('piva');
- }
- } else {
- $anagrafica->partita_iva = post('piva');
- }
-
// Se ad aggiungere un cliente è un agente, lo imposto come agente di quel cliente
// Lettura tipologia dell'utente loggato
$agente_is_logged = false;
@@ -241,6 +204,9 @@ switch (post('op')) {
$anagrafica->id_nazione = post('id_nazione') ?: null;
$anagrafica->codice_destinatario = strtoupper(post('codice_destinatario'));
+ $anagrafica->codice_fiscale = strtoupper(post('codice_fiscale'));
+ $anagrafica->partita_iva = strtoupper(post('piva'));
+
$anagrafica->save();
if ($anagrafica->isAzienda()) {
@@ -258,6 +224,64 @@ switch (post('op')) {
'_TYPE_' => '"'.implode(', ', $descrizioni_tipi).'"',
]));
+ // Controllo che il Codice Fiscale non sia già presente
+ $codice_fiscale = $anagrafica->codice_fiscale;
+ if (!empty($codice_fiscale)) {
+ $anagrafiche_codice_fiscale = Anagrafica::where('codice_fiscale', $codice_fiscale)
+ ->where('idanagrafica', '!=', $anagrafica->id)
+ ->get();
+ if (!$anagrafiche_codice_fiscale->isEmpty()) {
+ $message = tr('Attenzione: il codice fiscale _COD_ è già stato censito', [
+ '_COD_' => $codice_fiscale,
+ ]);
+
+ $links = [];
+ foreach ($anagrafiche_codice_fiscale as $anagrafica_singola) {
+ $links[] = ''.Modules::link('Anagrafiche', $anagrafica_singola->id, $anagrafica_singola->ragione_sociale).'';
+ }
+
+ flash()->warning($message.'');
+ }
+ }
+
+ // Controllo che la Partita IVA non sia già presente
+ $partita_iva = $anagrafica->partita_iva;
+ if (!empty($partita_iva)) {
+ $anagrafiche_partita_iva = Anagrafica::where('piva', $partita_iva)
+ ->where('idanagrafica', '!=', $anagrafica->id)
+ ->get();
+ if (!$anagrafiche_partita_iva->isEmpty()) {
+ $message = tr('Attenzione: la partita IVA _IVA_ è già stata censita', [
+ '__IVA__' => $partita_iva,
+ ]);
+
+ $links = [];
+ foreach ($anagrafiche_partita_iva as $anagrafica_singola) {
+ $links[] = ''.Modules::link('Anagrafiche', $anagrafica_singola->id, $anagrafica_singola->ragione_sociale).'';
+ }
+
+ flash()->warning($message.'');
+ }
+
+ $vat_number = is_numeric($partita_iva) ? $anagrafica->nazione->iso2.$partita_iva : $partita_iva;
+ $check_vat_number = Validate::isValidVatNumber($vat_number);
+ if (empty($check_vat_number['valid-format'])) {
+ flash()->warning(tr('Attenzione: la partita IVA _IVA_ potrebbe non essere valida', [
+ '_IVA_' => $partita_iva,
+ ]));
+ }
+ }
+
+ // Validazione del Codice Fiscale, solo per anagrafiche Private e Aziende, ignoro controllo se codice fiscale e settato uguale alla p.iva
+ if ($anagrafica->tipo != 'Ente pubblico' && !empty($anagrafica->codice_fiscale) && !empty($anagrafica->partita_iva) && $anagrafica->codice_fiscale != $anagrafica->partita_iva) {
+ $check_codice_fiscale = Validate::isValidTaxCode($codice_fiscale);
+ if (empty($check_codice_fiscale)) {
+ flash()->warning(tr('Attenzione: il codice fiscale _COD_ potrebbe non essere valido.', [
+ '_COD_' => $codice_fiscale,
+ ]));
+ }
+ }
+
break;
case 'delete':
diff --git a/modules/anagrafiche/src/Anagrafica.php b/modules/anagrafiche/src/Anagrafica.php
index 3953e14fd..4c4b0003b 100755
--- a/modules/anagrafiche/src/Anagrafica.php
+++ b/modules/anagrafiche/src/Anagrafica.php
@@ -222,11 +222,15 @@ class Anagrafica extends Model
public function getPartitaIvaAttribute()
{
- return $this->piva;
+ return $this->attributes['piva'];
}
public function setPartitaIvaAttribute($value)
{
+ if (in_array($value, ['99999999999', '00000000000'])) {
+ $value = null;
+ }
+
$this->attributes['piva'] = trim(strtoupper($value));
}