Aggiunta gestione stato fattura Non valida
This commit is contained in:
parent
1ba9f45549
commit
e32bdec38f
|
@ -1166,6 +1166,14 @@ switch ($op) {
|
|||
}
|
||||
|
||||
break;
|
||||
|
||||
case 'cambia_stato':
|
||||
$stato = Stato::find((new Stato())->getByName('Non valida')->id_record);
|
||||
$fattura->stato()->associate($stato);
|
||||
$fattura->save();
|
||||
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
// Nota di debito
|
||||
|
|
|
@ -182,6 +182,18 @@ if ($dir == 'entrata') {
|
|||
</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
|
||||
$fatturazione_futura = false;
|
||||
$data_fattura = new Carbon($fattura->data);
|
||||
|
@ -262,7 +274,7 @@ if ($righe_vuote) {
|
|||
|
||||
<?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'])) {
|
||||
$query .= " WHERE `name` = 'Bozza'";
|
||||
|
||||
|
@ -304,7 +316,7 @@ $query .= ' ORDER BY `name`';
|
|||
|
||||
echo '
|
||||
<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>
|
||||
|
||||
|
@ -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>';
|
||||
|
|
|
@ -37,7 +37,8 @@ if (isset($id_record)) {
|
|||
$is_fiscale = $fattura->isFiscale();
|
||||
}
|
||||
|
||||
$record = $dbo->fetchOne('SELECT `co_documenti`.*,
|
||||
$record = $dbo->fetchOne('SELECT
|
||||
`co_documenti`.*,
|
||||
`co_tipidocumento`.`reversed` AS is_reversed,
|
||||
`co_documenti`.`idagente` AS idagente_fattura,
|
||||
`co_documenti`.`note`,
|
||||
|
@ -53,7 +54,7 @@ if (isset($id_record)) {
|
|||
(SELECT `descrizione` FROM `co_rivalse` WHERE `id`=`idrivalsainps`) AS rivalsainps_desc,
|
||||
`dt_causalet_lang`.`name` AS causale_desc
|
||||
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()).')
|
||||
INNER JOIN `an_anagrafiche` ON `co_documenti`.`idanagrafica`=`an_anagrafiche`.`idanagrafica`
|
||||
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
|
||||
if (
|
||||
(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'
|
||||
) {
|
||||
// Registrazione scadenze
|
||||
|
@ -611,7 +611,7 @@ class Fattura extends Document
|
|||
// Registrazione movimenti
|
||||
$this->gestoreMovimenti->registra();
|
||||
} // Stato qualunque -> Bozza o Annullato
|
||||
elseif (in_array($stato->name, ['Bozza', 'Annullata'])) {
|
||||
elseif (in_array($stato->name, ['Bozza', 'Annullata', 'Non valida'])) {
|
||||
// Rimozione delle scadenza
|
||||
$this->rimuoviScadenze();
|
||||
|
||||
|
@ -622,7 +622,7 @@ class Fattura extends Document
|
|||
$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();
|
||||
foreach ($movimenti as $movimento) {
|
||||
$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;
|
||||
|
||||
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