Merge branch 'master' of https://github.com/devcode-it/openstamanager
This commit is contained in:
commit
bdfec7c2eb
2
ajax.php
2
ajax.php
|
@ -55,7 +55,7 @@ switch (filter('op')) {
|
|||
// Imposta un valore ad una sessione
|
||||
case 'session_set':
|
||||
$array = explode(',', get('session'));
|
||||
$value = get('value');
|
||||
$value = get('value', true);
|
||||
$clear = get('clear');
|
||||
|
||||
if ($clear == 1 || $value == '') {
|
||||
|
|
|
@ -22,7 +22,7 @@ include_once __DIR__.'/core.php';
|
|||
use Util\Query;
|
||||
|
||||
// Informazioni fondamentali
|
||||
$columns = (array) filter('columns');
|
||||
$columns = (array) filter('columns', null, true);
|
||||
$order = filter('order') ? filter('order')[0] : [];
|
||||
$draw_numer = intval(filter('draw'));
|
||||
|
||||
|
|
|
@ -127,6 +127,17 @@ class Check extends Model
|
|||
}
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Rimuove tutte le check di un determinato modulo/plugin e record.
|
||||
*
|
||||
* @param array $data
|
||||
*/
|
||||
public static function deleteLinked($data)
|
||||
{
|
||||
database()->delete('zz_checks', $data);
|
||||
}
|
||||
|
||||
/* Relazioni Eloquent */
|
||||
|
||||
public function user()
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
|
||||
include_once __DIR__.'/../../../core.php';
|
||||
|
||||
$rs = $dbo->fetchArray('SELECT *,
|
||||
$rs = $dbo->fetchArray('SELECT co_contratti.id, co_contratti.nome, co_contratti.data_accettazione,
|
||||
((SELECT SUM(co_righe_contratti.qta) FROM co_righe_contratti WHERE co_righe_contratti.um=\'ore\' AND co_righe_contratti.idcontratto=co_contratti.id) - IFNULL( (SELECT SUM(in_interventi_tecnici.ore) FROM in_interventi_tecnici INNER JOIN in_interventi ON in_interventi_tecnici.idintervento=in_interventi.id WHERE in_interventi.id_contratto=co_contratti.id AND in_interventi.idstatointervento IN (SELECT in_statiintervento.idstatointervento FROM in_statiintervento WHERE in_statiintervento.is_completato = 1)), 0) ) AS ore_rimanenti,
|
||||
DATEDIFF(data_conclusione, NOW()) AS giorni_rimanenti,
|
||||
data_conclusione,
|
||||
|
@ -31,7 +31,7 @@ WHERE
|
|||
rinnovabile = 1 AND
|
||||
YEAR(data_conclusione) > 1970 AND
|
||||
co_contratti.id NOT IN (SELECT idcontratto_prev FROM co_contratti contratti) AND
|
||||
co_staticontratti.descrizione != "Concluso"
|
||||
co_staticontratti.descrizione NOT IN ("Concluso", "Rifiutato", "Bozza")
|
||||
HAVING (ore_rimanenti <= ore_preavviso_rinnovo OR DATEDIFF(data_conclusione, NOW()) <= ABS(giorni_preavviso_rinnovo))
|
||||
ORDER BY giorni_rimanenti ASC, ore_rimanenti ASC');
|
||||
|
||||
|
|
|
@ -176,6 +176,25 @@ class Mail extends Model
|
|||
$this->attributes['content'] = $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Rimuove tutte le mail di un determinato modulo/plugin e record.
|
||||
*
|
||||
* @param array $data
|
||||
*/
|
||||
public static function deleteLinked($data)
|
||||
{
|
||||
$templates = database()->table('em_templates')->where('id_module', $data['id_module'])->get();
|
||||
|
||||
$id_templates = [];
|
||||
|
||||
foreach($templates as $template) {
|
||||
$id_templates[] = $template->id;
|
||||
}
|
||||
|
||||
database()->table('em_emails')->where('id_record', $data['id_record'])->whereIn('id_template', $id_templates)->delete();
|
||||
}
|
||||
|
||||
|
||||
/* Relazioni Eloquent */
|
||||
|
||||
public function account()
|
||||
|
|
|
@ -346,12 +346,6 @@ switch ($op) {
|
|||
// Azzeramento collegamento della rata contrattuale alla pianificazione
|
||||
$dbo->query('UPDATE co_fatturazione_contratti SET iddocumento=0 WHERE iddocumento='.prepare($id_record));
|
||||
|
||||
// Eliminazione allegati collegati
|
||||
Uploads::deleteLinked([
|
||||
'id_module' => $id_module,
|
||||
'id_record' => $id_record,
|
||||
]);
|
||||
|
||||
flash()->info(tr('Fattura eliminata!'));
|
||||
} catch (InvalidArgumentException $e) {
|
||||
flash()->error(tr('Sono stati utilizzati alcuni serial number nel documento: impossibile procedere!'));
|
||||
|
|
|
@ -97,6 +97,10 @@ class Bollo
|
|||
$riga->id_iva = setting('Iva da applicare su marca da bollo');
|
||||
$riga->idconto = setting('Conto predefinito per la marca da bollo');
|
||||
|
||||
if ((setting('Regime Fiscale') == 'RF19') && (!empty(setting('Cassa previdenziale predefinita')))) {
|
||||
$riga['id_rivalsa_inps'] = setting('Cassa previdenziale predefinita');
|
||||
}
|
||||
|
||||
$riga->save();
|
||||
|
||||
return $riga->id;
|
||||
|
|
|
@ -398,11 +398,6 @@ switch (post('op')) {
|
|||
// Eliminazione associazione interventi e my_impianti
|
||||
$dbo->query('DELETE FROM my_impianti_interventi WHERE idintervento='.prepare($id_record));
|
||||
|
||||
// Elimino anche eventuali file caricati
|
||||
Uploads::deleteLinked([
|
||||
'id_module' => $id_module,
|
||||
'id_record' => $id_record,
|
||||
]);
|
||||
|
||||
flash()->info(tr('Intervento eliminato!'));
|
||||
} catch (InvalidArgumentException $e) {
|
||||
|
|
|
@ -289,11 +289,6 @@ switch (post('op')) {
|
|||
// Eliminazione associazione interventi e my_impianti
|
||||
$dbo->query('DELETE FROM my_impianti_interventi WHERE idintervento='.prepare($id_record));
|
||||
|
||||
// Elimino anche eventuali file caricati
|
||||
Uploads::deleteLinked([
|
||||
'id_module' => $id_module,
|
||||
'id_record' => $id_record,
|
||||
]);
|
||||
} catch (InvalidArgumentException $e) {
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,60 @@
|
|||
<?php
|
||||
/*
|
||||
* OpenSTAManager: il software gestionale open source per l'assistenza tecnica e la fatturazione
|
||||
* Copyright (C) DevCode s.r.l.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
include_once __DIR__.'/../../../core.php';
|
||||
|
||||
use Modules\Preventivi\Stato;
|
||||
|
||||
$id_module = Modules::get('Preventivi')['id'];
|
||||
|
||||
$rs = $dbo->fetchArray("SELECT *, (SELECT ragione_sociale FROM an_anagrafiche WHERE idanagrafica=co_preventivi.idanagrafica) AS ragione_sociale FROM co_preventivi WHERE idstato IN (SELECT id FROM co_statipreventivi WHERE is_fatturabile = 1) AND default_revision = 1 ORDER BY data_conclusione ASC");
|
||||
|
||||
if (!empty($rs)) {
|
||||
echo "
|
||||
<table class='table table-hover'>
|
||||
<tr>
|
||||
<th width='60%'>Preventivo</th>
|
||||
<th width='15%'>Data inizio</th>
|
||||
<th width='15%'>Data conclusione</th>
|
||||
<th width='15%'>Stato</th>
|
||||
</tr>";
|
||||
|
||||
foreach ($rs as $preventivo) {
|
||||
$data_accettazione = ($preventivo['data_accettazione'] != '0000-00-00') ? Translator::dateToLocale($preventivo['data_accettazione']) : '';
|
||||
$data_conclusione = ($preventivo['data_conclusione'] != '0000-00-00') ? Translator::dateToLocale($preventivo['data_conclusione']) : '';
|
||||
$stato_preventivo = Stato::find($preventivo['idstato'])->descrizione;
|
||||
|
||||
if (strtotime($preventivo['data_conclusione']) < strtotime(date('Y-m-d')) && $data_conclusione != '') {
|
||||
$attr = ' class="danger"';
|
||||
} else {
|
||||
$attr = '';
|
||||
}
|
||||
|
||||
echo '<tr '.$attr.'><td><a href="'.base_path().'/editor.php?id_module='.$id_module.'&id_record='.$preventivo['id'].'">'.$preventivo['nome']."</a><br><small class='help-block'>".$preventivo['ragione_sociale'].'</small></td>';
|
||||
echo '<td '.$attr.'>'.$data_accettazione.'</td>';
|
||||
echo '<td '.$attr.'>'.$data_conclusione.'</td>';
|
||||
echo '<td '.$attr.'>'.$stato_preventivo.'</td></tr>';
|
||||
}
|
||||
|
||||
echo '
|
||||
</table>';
|
||||
} else {
|
||||
echo '
|
||||
<p>'.tr('Non ci sono preventivi da fatturare').'.</p>';
|
||||
}
|
|
@ -80,6 +80,7 @@
|
|||
"assets-OSM": "yarn upgrade && yarn run build-OSM",
|
||||
"build-OSM": "gulp",
|
||||
"dump-OSM": "php composer.phar dump-autoload",
|
||||
"windows-fix": "yarn global add windows-build-tools"
|
||||
"windows-fix": "yarn global add windows-build-tools",
|
||||
"php-cs-fix": "vendor/bin/php-cs-fixer fix"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -128,7 +128,8 @@ class Checklists extends AppResource
|
|||
zz_checks.note,
|
||||
IF(zz_checks.id_parent IS NULL, 0, zz_checks.id_parent) AS id_parent,
|
||||
zz_checks.checked_by,
|
||||
zz_checks.order AS ordine
|
||||
zz_checks.order AS ordine,
|
||||
zz_checks.is_titolo
|
||||
FROM zz_checks
|
||||
WHERE zz_checks.id = '.prepare($id);
|
||||
|
||||
|
|
|
@ -160,7 +160,7 @@ class Interventi extends AppResource
|
|||
)';
|
||||
}
|
||||
|
||||
if (setting('Mostra promemoria attività ai soli Tecnici assegnati') == 1) {
|
||||
if (setting('Visualizza solo promemoria assegnati') == 1) {
|
||||
$records = database()->fetchArray($query, [
|
||||
':period_start' => $start,
|
||||
':period_end' => $end,
|
||||
|
|
|
@ -266,6 +266,40 @@ abstract class Document extends Model implements ReferenceInterface, DocumentInt
|
|||
$riga->delete();
|
||||
}
|
||||
|
||||
// Elimino eventuali file caricati
|
||||
\Uploads::deleteLinked([
|
||||
'id_module' => $this->getModule()->id,
|
||||
'id_record' => $this->id,
|
||||
]);
|
||||
|
||||
// Elimino eventuali note
|
||||
\Models\Note::deleteLinked([
|
||||
'id_module' => $this->getModule()->id,
|
||||
'id_record' => $this->id,
|
||||
]);
|
||||
|
||||
// Elimino eventuali checklist
|
||||
\Modules\Checklists\Check::deleteLinked([
|
||||
'id_module' => $this->getModule()->id,
|
||||
'id_record' => $this->id,
|
||||
]);
|
||||
|
||||
// Elimino eventuali email
|
||||
\Modules\Emails\Mail::deleteLinked([
|
||||
'id_module' => $this->getModule()->id,
|
||||
'id_record' => $this->id,
|
||||
]);
|
||||
|
||||
// Elimino eventuali campi personalizzati
|
||||
$fields = database()->table('zz_fields')->where('id_module', $this->getModule()->id)->get();
|
||||
|
||||
$id_fields = [];
|
||||
|
||||
foreach($fields as $field) {
|
||||
$id_fields[] = $field->id;
|
||||
}
|
||||
database()->table('zz_field_record')->where('id_record', $this->id)->whereIn('id_field', $id_fields)->delete();
|
||||
|
||||
return parent::delete();
|
||||
}
|
||||
|
||||
|
|
|
@ -60,6 +60,17 @@ class Note extends Model
|
|||
return $model;
|
||||
}
|
||||
|
||||
/**
|
||||
* Rimuove tutte le note di un determinato modulo/plugin e record.
|
||||
*
|
||||
* @param array $data
|
||||
*/
|
||||
public static function deleteLinked($data)
|
||||
{
|
||||
database()->delete('zz_notes', $data);
|
||||
}
|
||||
|
||||
|
||||
/* Relazioni Eloquent */
|
||||
|
||||
public function user()
|
||||
|
|
|
@ -64,7 +64,7 @@ echo "
|
|||
<td style='width:45mm;'>
|
||||
<table class='border-bottom'>
|
||||
<tr>
|
||||
<td colspan='2'>
|
||||
<td colspan='3'>
|
||||
<p class='small-bold'>".tr('Scadenze pagamenti', [], ['upper' => true]).'</p>
|
||||
</td>
|
||||
</tr>';
|
||||
|
@ -78,6 +78,9 @@ if (!empty($rs2)) {
|
|||
<td style='width:50%;'>
|
||||
<small>".Translator::dateToLocale($rs2[$i]['scadenza'])."</small>
|
||||
</td>
|
||||
<td style='width:50%;' class='text-right'>
|
||||
".(($rs2[$i]['pagato'] == $rs2[$i]['da_pagare']) ? "<small>PAGATO</small>" : "")."
|
||||
</td>
|
||||
<td style='width:50%;' class='text-right'>
|
||||
<small>".moneyFormat($rs2[$i]['da_pagare'], 2).'</small>
|
||||
</td>
|
||||
|
|
|
@ -53,4 +53,15 @@ INSERT INTO `zz_views` (`id_module`, `name`, `query`, `order`, `search`, `slow`,
|
|||
|
||||
UPDATE `zz_api_resources` SET `resource` = 'checklist-cleanup' WHERE `zz_api_resources`.`resource` = 'checklists-cleanup';
|
||||
|
||||
UPDATE `zz_widgets` SET `query` = 'SELECT\n COUNT(dati.id) AS dato\nFROM\n (\n SELECT\n co_contratti.id,\n (\n (\n SELECT\n SUM(co_righe_contratti.qta)\n FROM\n co_righe_contratti\n WHERE\n co_righe_contratti.um = \'ore\' AND co_righe_contratti.idcontratto = co_contratti.id\n ) - IFNULL(\n (\n SELECT\n SUM(in_interventi_tecnici.ore)\n FROM\n in_interventi_tecnici\n INNER JOIN in_interventi ON in_interventi_tecnici.idintervento = in_interventi.id\n WHERE\n in_interventi.id_contratto = co_contratti.id AND in_interventi.idstatointervento IN(\n SELECT\n in_statiintervento.idstatointervento\n FROM\n in_statiintervento\n WHERE\n in_statiintervento.is_completato = 1\n )\n ),\n 0\n )\n ) AS ore_rimanenti,\n DATEDIFF(data_conclusione, NOW()) AS giorni_rimanenti,\n data_conclusione,\n ore_preavviso_rinnovo,\n giorni_preavviso_rinnovo,\n (\n SELECT\n ragione_sociale\n FROM\n an_anagrafiche\n WHERE\n idanagrafica = co_contratti.idanagrafica\n ) AS ragione_sociale\nFROM\n co_contratti\n INNER JOIN co_staticontratti ON co_staticontratti.id = co_contratti.idstato\nWHERE\n rinnovabile = 1 AND YEAR(data_conclusione) > 1970 AND co_contratti.id NOT IN(\n SELECT\n idcontratto_prev\n FROM\n co_contratti contratti\n) AND co_staticontratti.descrizione != \"Concluso\"\nHAVING\n (\n ore_rimanenti <= ore_preavviso_rinnovo OR DATEDIFF(data_conclusione, NOW()) <= ABS(giorni_preavviso_rinnovo))\n ORDER BY\n giorni_rimanenti ASC,\n ore_rimanenti ASC\n ) dati' WHERE `zz_widgets`.`name` = 'Contratti in scadenza';
|
||||
UPDATE `zz_widgets` SET `query` = 'SELECT\n COUNT(dati.id) AS dato\nFROM\n (\n SELECT\n co_contratti.id,\n (\n (\n SELECT\n SUM(co_righe_contratti.qta)\n FROM\n co_righe_contratti\n WHERE\n co_righe_contratti.um = \'ore\' AND co_righe_contratti.idcontratto = co_contratti.id\n ) - IFNULL(\n (\n SELECT\n SUM(in_interventi_tecnici.ore)\n FROM\n in_interventi_tecnici\n INNER JOIN in_interventi ON in_interventi_tecnici.idintervento = in_interventi.id\n WHERE\n in_interventi.id_contratto = co_contratti.id AND in_interventi.idstatointervento IN(\n SELECT\n in_statiintervento.idstatointervento\n FROM\n in_statiintervento\n WHERE\n in_statiintervento.is_completato = 1\n )\n ),\n 0\n )\n ) AS ore_rimanenti,\n DATEDIFF(data_conclusione, NOW()) AS giorni_rimanenti,\n data_conclusione,\n ore_preavviso_rinnovo,\n giorni_preavviso_rinnovo,\n (\n SELECT\n ragione_sociale\n FROM\n an_anagrafiche\n WHERE\n idanagrafica = co_contratti.idanagrafica\n ) AS ragione_sociale\nFROM\n co_contratti\n INNER JOIN co_staticontratti ON co_staticontratti.id = co_contratti.idstato\nWHERE\n rinnovabile = 1 AND YEAR(data_conclusione) > 1970 AND co_contratti.id NOT IN(\n SELECT\n idcontratto_prev\n FROM\n co_contratti contratti\n) AND co_staticontratti.descrizione NOT IN (\"Concluso\", \"Rifiutato\", \"Bozza\")\nHAVING\n (\n ore_rimanenti <= ore_preavviso_rinnovo OR DATEDIFF(data_conclusione, NOW()) <= ABS(giorni_preavviso_rinnovo))\n ORDER BY\n giorni_rimanenti ASC,\n ore_rimanenti ASC\n ) dati' WHERE `zz_widgets`.`name` = 'Contratti in scadenza';
|
||||
|
||||
UPDATE `zz_settings` SET `tipo` = 'query=SELECT codice AS id, CONCAT(codice, \' - \', descrizione)as descrizione FROM fe_regime_fiscale;' WHERE `zz_settings`.`nome` = "Regime Fiscale";
|
||||
|
||||
INSERT INTO `zz_views` (`id_module`, `name`, `query`, `order`, `search`, `slow`, `format`, `default`, `visible`) VALUES
|
||||
((SELECT `id` FROM `zz_modules` WHERE `name` = 'Listini cliente'), 'Data scadenza', 'data_scadenza_predefinita', 3, 1, 0, 1, 1, 1);
|
||||
|
||||
UPDATE `zz_widgets` SET `text` = 'Listini disattivati' WHERE `zz_widgets`.`name` = 'Listini scaduti';
|
||||
|
||||
INSERT INTO `zz_widgets` (`id`, `name`, `type`, `id_module`, `location`, `class`, `query`, `bgcolor`, `icon`, `print_link`, `more_link`, `more_link_type`, `php_include`, `text`, `enabled`, `help`) VALUES (NULL, 'Preventivi da fatturare', 'stats', '1', 'controller_top', NULL, 'SELECT COUNT(id) AS dato FROM co_preventivi WHERE idstato IN (SELECT id FROM co_statipreventivi WHERE is_fatturabile=1) AND default_revision=1', '#44aae4', 'fa fa-file', '', './modules/preventivi/widgets/preventivi.fatturare.dashboard.php', 'popup', '', 'Preventivi da fatturare', 0, NULL);
|
||||
|
||||
INSERT INTO `zz_views` (`id_module`, `name`, `query`, `order`, `search`, `slow`, `format`, `html_format`, `search_inside`, `order_by`, `visible`, `summable`, `default`) VALUES ((SELECT `id` FROM `zz_modules` WHERE `name` = 'Articoli'), '_bg_', 'IF(threshold_qta!=0, IF(mg_articoli.qta>threshold_qta, \'#CCFFCC\', \'#FFCCEB\'), \'\')', '14', '0', '0', '0', '0', '', '', '0', '0', '0');
|
Loading…
Reference in New Issue