Aggiunta gestione stato fattura Non valida
This commit is contained in:
parent
1ba9f45549
commit
e32bdec38f
|
@ -1166,6 +1166,14 @@ switch ($op) {
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'cambia_stato':
|
||||||
|
$stato = Stato::find((new Stato())->getByName('Non valida')->id_record);
|
||||||
|
$fattura->stato()->associate($stato);
|
||||||
|
$fattura->save();
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Nota di debito
|
// Nota di debito
|
||||||
|
|
|
@ -182,6 +182,18 @@ if ($dir == 'entrata') {
|
||||||
</div>';
|
</div>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$data_fattura = new DateTime($fattura->data);
|
||||||
|
$data_odierna = new DateTime();
|
||||||
|
$differenza = $data_odierna->diff($data_fattura)->days;
|
||||||
|
|
||||||
|
if ($fattura->codice_stato_fe == 'NS' && $fattura->stato->name != 'Non valida' && ($differenza > setting('Giorni validità fattura scartata'))) {
|
||||||
|
echo '
|
||||||
|
<div class="alert alert-error">
|
||||||
|
<i class="fa fa-warning"></i> '.tr("Questa fattura è stata scartata e sono trascorsi i termini di reinvio, è necessario invalidare il documento.").'</b>
|
||||||
|
<button type="button" class="btn btn-xs btn-success" onclick="risolviStato()"><i class="fa fa-cog"></i> '.tr('Invalida il documento').'</button>
|
||||||
|
</div>';
|
||||||
|
}
|
||||||
|
|
||||||
// Verifica la data dell'intervento rispetto alla data della fattura
|
// Verifica la data dell'intervento rispetto alla data della fattura
|
||||||
$fatturazione_futura = false;
|
$fatturazione_futura = false;
|
||||||
$data_fattura = new Carbon($fattura->data);
|
$data_fattura = new Carbon($fattura->data);
|
||||||
|
@ -262,7 +274,7 @@ if ($righe_vuote) {
|
||||||
|
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
$query = 'SELECT *, `colore` AS _bgcolor_, `co_statidocumento_lang`.`name` as descrizione FROM `co_statidocumento` LEFT JOIN `co_statidocumento_lang` ON (`co_statidocumento_lang`.`id_record` = `co_statidocumento`.`id` AND `co_statidocumento_lang`.`id_lang` = '.prepare(\App::getLang()).')';
|
$query = 'SELECT *, `co_statidocumento`.`id` AS id, `colore` AS _bgcolor_, `co_statidocumento_lang`.`name` as descrizione FROM `co_statidocumento` LEFT JOIN `co_statidocumento_lang` ON (`co_statidocumento_lang`.`id_record` = `co_statidocumento`.`id` AND `co_statidocumento_lang`.`id_lang` = '.prepare(\App::getLang()).')';
|
||||||
if (empty($record['is_fiscale'])) {
|
if (empty($record['is_fiscale'])) {
|
||||||
$query .= " WHERE `name` = 'Bozza'";
|
$query .= " WHERE `name` = 'Bozza'";
|
||||||
|
|
||||||
|
@ -304,7 +316,7 @@ $query .= ' ORDER BY `name`';
|
||||||
|
|
||||||
echo '
|
echo '
|
||||||
<div class="col-md-'.($record['is_fiscale'] ? 2 : 6).'">
|
<div class="col-md-'.($record['is_fiscale'] ? 2 : 6).'">
|
||||||
{[ "type": "select", "label": "'.tr('Stato').'", "name": "idstatodocumento", "required": 1, "values": "query='.$query.'", "value": "$idstatodocumento$", "class": "'.(($record['stato'] != 'Bozza' && !$abilita_genera) ? '' : 'unblockable').'", "extra": "onchange=\"return cambiaStato()\"" ]}
|
{[ "type": "select", "label": "'.tr('Stato').'", "name": "idstatodocumento", "required": 1, "values": "query='.$query.'", "value": "'.$fattura->stato->id.'", "class": "'.(($fattura->stato->name != 'Bozza' && !$abilita_genera) ? '' : 'unblockable').'", "extra": "onchange=\"return cambiaStato()\"" ]}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -1238,4 +1250,23 @@ input("ordinamento").on("change", function(){
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
function risolviStato() {
|
||||||
|
$.ajax({
|
||||||
|
url: globals.rootdir + "/actions.php",
|
||||||
|
type: "POST",
|
||||||
|
dataType: "json",
|
||||||
|
data: {
|
||||||
|
id_module: globals.id_module,
|
||||||
|
id_record: globals.id_record,
|
||||||
|
op: "cambia_stato",
|
||||||
|
},
|
||||||
|
success: function (response) {
|
||||||
|
location.reload();
|
||||||
|
},
|
||||||
|
error: function() {
|
||||||
|
location.reload();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
</script>';
|
</script>';
|
||||||
|
|
|
@ -37,7 +37,8 @@ if (isset($id_record)) {
|
||||||
$is_fiscale = $fattura->isFiscale();
|
$is_fiscale = $fattura->isFiscale();
|
||||||
}
|
}
|
||||||
|
|
||||||
$record = $dbo->fetchOne('SELECT `co_documenti`.*,
|
$record = $dbo->fetchOne('SELECT
|
||||||
|
`co_documenti`.*,
|
||||||
`co_tipidocumento`.`reversed` AS is_reversed,
|
`co_tipidocumento`.`reversed` AS is_reversed,
|
||||||
`co_documenti`.`idagente` AS idagente_fattura,
|
`co_documenti`.`idagente` AS idagente_fattura,
|
||||||
`co_documenti`.`note`,
|
`co_documenti`.`note`,
|
||||||
|
@ -53,7 +54,7 @@ if (isset($id_record)) {
|
||||||
(SELECT `descrizione` FROM `co_rivalse` WHERE `id`=`idrivalsainps`) AS rivalsainps_desc,
|
(SELECT `descrizione` FROM `co_rivalse` WHERE `id`=`idrivalsainps`) AS rivalsainps_desc,
|
||||||
`dt_causalet_lang`.`name` AS causale_desc
|
`dt_causalet_lang`.`name` AS causale_desc
|
||||||
FROM `co_documenti`
|
FROM `co_documenti`
|
||||||
LEFT JOIN `co_statidocumento` ON `co_documenti`.`idstatodocumento`=`co_statidocumento`.`id`
|
INNER JOIN `co_statidocumento` ON `co_documenti`.`idstatodocumento` = `co_statidocumento`.`id`
|
||||||
LEFT JOIN `co_statidocumento_lang` ON (`co_statidocumento_lang`.`id_record` = `co_statidocumento`.`id` AND `co_statidocumento_lang`.`id_lang` = '.prepare(\App::getLang()).')
|
LEFT JOIN `co_statidocumento_lang` ON (`co_statidocumento_lang`.`id_record` = `co_statidocumento`.`id` AND `co_statidocumento_lang`.`id_lang` = '.prepare(\App::getLang()).')
|
||||||
INNER JOIN `an_anagrafiche` ON `co_documenti`.`idanagrafica`=`an_anagrafiche`.`idanagrafica`
|
INNER JOIN `an_anagrafiche` ON `co_documenti`.`idanagrafica`=`an_anagrafiche`.`idanagrafica`
|
||||||
INNER JOIN `co_tipidocumento` ON `co_documenti`.`idtipodocumento`=`co_tipidocumento`.`id`
|
INNER JOIN `co_tipidocumento` ON `co_documenti`.`idtipodocumento`=`co_tipidocumento`.`id`
|
||||||
|
|
|
@ -602,7 +602,7 @@ class Fattura extends Document
|
||||||
// Bozza o Annullato -> Stato diverso da Bozza o Annullato
|
// Bozza o Annullato -> Stato diverso da Bozza o Annullato
|
||||||
if (
|
if (
|
||||||
(in_array($stato_precedente->name, ['Bozza', 'Annullata'])
|
(in_array($stato_precedente->name, ['Bozza', 'Annullata'])
|
||||||
&& !in_array($stato->name, ['Bozza', 'Annullata']))
|
&& !in_array($stato->name, ['Bozza', 'Annullata', 'Non valida']))
|
||||||
|| $options[0] == 'forza_emissione'
|
|| $options[0] == 'forza_emissione'
|
||||||
) {
|
) {
|
||||||
// Registrazione scadenze
|
// Registrazione scadenze
|
||||||
|
@ -611,7 +611,7 @@ class Fattura extends Document
|
||||||
// Registrazione movimenti
|
// Registrazione movimenti
|
||||||
$this->gestoreMovimenti->registra();
|
$this->gestoreMovimenti->registra();
|
||||||
} // Stato qualunque -> Bozza o Annullato
|
} // Stato qualunque -> Bozza o Annullato
|
||||||
elseif (in_array($stato->name, ['Bozza', 'Annullata'])) {
|
elseif (in_array($stato->name, ['Bozza', 'Annullata', 'Non valida'])) {
|
||||||
// Rimozione delle scadenza
|
// Rimozione delle scadenza
|
||||||
$this->rimuoviScadenze();
|
$this->rimuoviScadenze();
|
||||||
|
|
||||||
|
@ -622,7 +622,7 @@ class Fattura extends Document
|
||||||
$this->movimentiContabili()->delete();
|
$this->movimentiContabili()->delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($this->changes['data_competenza'] && !in_array($stato->name, ['Bozza', 'Annullata'])) {
|
if ($this->changes['data_competenza'] && !in_array($stato->name, ['Bozza', 'Annullata', 'Non valida'])) {
|
||||||
$movimenti = Movimento::where('iddocumento', $this->id)->where('primanota', 0)->get();
|
$movimenti = Movimento::where('iddocumento', $this->id)->where('primanota', 0)->get();
|
||||||
foreach ($movimenti as $movimento) {
|
foreach ($movimenti as $movimento) {
|
||||||
$movimento->data = $this->data_competenza;
|
$movimento->data = $this->data_competenza;
|
||||||
|
|
|
@ -2354,3 +2354,10 @@ ALTER TABLE `zz_files` ADD `id_adapter` INT NOT NULL AFTER `id_record`;
|
||||||
UPDATE zz_files SET id_adapter=1;
|
UPDATE zz_files SET id_adapter=1;
|
||||||
|
|
||||||
DELETE FROM `zz_settings` WHERE `nome` = 'Iva da applicare su marca da bollo';
|
DELETE FROM `zz_settings` WHERE `nome` = 'Iva da applicare su marca da bollo';
|
||||||
|
|
||||||
|
-- Aggiunta gestione stato documento Non valida
|
||||||
|
INSERT INTO `co_statidocumento` (`icona`, `colore`) VALUES ('fa fa-times text-muted', '#d3d3d3');
|
||||||
|
INSERT INTO `co_statidocumento_lang` (`id_record`, `id_lang`, `name`) VALUES ((SELECT MAX(`id`) FROM `co_statidocumento`), (SELECT `valore` FROM `zz_settings` WHERE `nome` = 'Lingua'), 'Non valida');
|
||||||
|
|
||||||
|
INSERT INTO `zz_settings` (`nome`, `valore`, `tipo`, `editable`, `sezione`, `help`) VALUES ('Giorni validità fattura scartata', '5', 'int', '0', 'Fatturazione Elettronica', 'Numero di giorni a disposizione per poter correggere una fattura scartata dallo SDI prima di non poter più utilizzare il suo numero di fatturazione. Una volta passati i giorni indicati è necessario emettere una nuova fattura e questa passa in stato Non valida.');
|
||||||
|
INSERT INTO `zz_settings_lang` (`id_record`, `id_lang`, `title`) VALUES ((SELECT `id` FROM `zz_settings` WHERE `nome` = 'Giorni validità fattura scartata'), (SELECT `valore` FROM `zz_settings` WHERE `nome` = 'Lingua'), 'Giorni validità fattura scartata');
|
||||||
|
|
Loading…
Reference in New Issue