Merge branch 'master' of https://github.com/devcode-it/openstamanager
This commit is contained in:
commit
d152e6cc51
|
@ -17,8 +17,6 @@
|
|||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
use Geocoder\Provider\GoogleMaps;
|
||||
use Ivory\HttpAdapter\CurlHttpAdapter;
|
||||
use Modules\Anagrafiche\Anagrafica;
|
||||
use Modules\Anagrafiche\Export\CSV;
|
||||
|
||||
|
@ -50,7 +48,7 @@ switch (post('op')) {
|
|||
|
||||
// TODO: da riscrivere con Guzzle e spostare su hook
|
||||
$ch = curl_init();
|
||||
$url = "https://nominatim.openstreetmap.org/search.php?q=".$indirizzo."&format=jsonv2";
|
||||
$url = 'https://nominatim.openstreetmap.org/search.php?q='.$indirizzo.'&format=jsonv2';
|
||||
$user_agent = 'traccar';
|
||||
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
|
||||
curl_setopt($ch, CURLOPT_URL, $url);
|
||||
|
|
|
@ -201,7 +201,7 @@ class CSV extends CSVImporter
|
|||
],
|
||||
[
|
||||
'field' => 'idtipoanagrafica',
|
||||
'label' => 'Tipo',
|
||||
'label' => 'Tipo di anagrafica',
|
||||
'names' => [
|
||||
'Tipo',
|
||||
'tipo',
|
||||
|
@ -210,7 +210,7 @@ class CSV extends CSVImporter
|
|||
],
|
||||
[
|
||||
'field' => 'tipo',
|
||||
'label' => 'Tipologia',
|
||||
'label' => 'Tipologia (Privato, Ente pubblico, Azienda)',
|
||||
],
|
||||
[
|
||||
'field' => 'codice_destinatario',
|
||||
|
@ -229,6 +229,14 @@ class CSV extends CSVImporter
|
|||
'split_payment',
|
||||
],
|
||||
],
|
||||
[
|
||||
'field' => 'id_settore',
|
||||
'label' => 'Settore merceologico',
|
||||
'names' => [
|
||||
'settore',
|
||||
'settore merceologico',
|
||||
],
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
|
@ -244,15 +252,28 @@ class CSV extends CSVImporter
|
|||
$tipi_selezionati = explode(',', $record['idtipoanagrafica']);
|
||||
|
||||
foreach ($tipi_selezionati as $tipo) {
|
||||
$tipo_anagrafica = $database->fetchOne('SELECT idtipoanagrafica AS id FROM an_tipianagrafiche WHERE descrizione = '.prepare($tipo).' OR idtipoanagrafica = '.prepare($tipo));
|
||||
$tipo_anagrafica = $database->fetchOne('SELECT idtipoanagrafica FROM an_tipianagrafiche WHERE LOWER(descrizione) = LOWER('.prepare($tipo).') OR idtipoanagrafica = '.prepare($tipo))['idtipoanagrafica'];
|
||||
|
||||
if (!empty($tipo_anagrafica)) {
|
||||
$tipologie[] = $tipo_anagrafica['id'];
|
||||
// Creo il tipo anagrafica se non esiste
|
||||
if (empty($tipo_anagrafica)) {
|
||||
$database->insert('an_tipianagrafiche', [
|
||||
'descrizione' => $tipo,
|
||||
])['idtipoanagrafica'];
|
||||
|
||||
$tipo_anagrafica = $database->fetchOne('SELECT idtipoanagrafica FROM an_tipianagrafiche WHERE lower(descrizione) = LOWER('.prepare($tipo).') OR idtipoanagrafica = '.prepare($tipo))['idtipoanagrafica'];
|
||||
}
|
||||
|
||||
$tipologie[] = $tipo_anagrafica;
|
||||
}
|
||||
}
|
||||
unset($record['idtipoanagrafica']);
|
||||
|
||||
$tipi_selezionati = [];
|
||||
if (!empty($record['tipo'])) {
|
||||
$tipi_selezionati = explode(',', $record['tipo']);
|
||||
}
|
||||
unset($record['tipo']);
|
||||
|
||||
// Fix per campi con contenuti derivati da query implicite
|
||||
if (!empty($record['id_nazione'])) {
|
||||
$record['id_nazione'] = $database->fetchOne('SELECT id FROM an_nazioni WHERE LOWER(nome) = LOWER('.prepare($record['id_nazione']).') OR LOWER(iso2) = LOWER('.prepare($record['id_nazione']).')')['id'];
|
||||
|
@ -260,11 +281,21 @@ class CSV extends CSVImporter
|
|||
unset($record['id_nazione']);
|
||||
}
|
||||
|
||||
// Creo il settore merceologico nel caso in cui non sia presente
|
||||
$id_settore = '';
|
||||
if (!empty($record['id_settore'])) {
|
||||
$settore = $record['id_settore'];
|
||||
$id_settore = $database->fetchOne('SELECT id FROM an_settori WHERE LOWER(descrizione) = LOWER('.prepare($settore).')')['id'];
|
||||
|
||||
if (empty($id_settore)) {
|
||||
$id_settore = $database->insert('an_settori', [
|
||||
'descrizione' => $settore,
|
||||
])['id'];
|
||||
}
|
||||
}
|
||||
|
||||
// Separazione dei campi relativi alla sede legale
|
||||
$campi_sede = [
|
||||
//'piva',
|
||||
//'codice_fiscale',
|
||||
//'codice_destinatario',
|
||||
'indirizzo',
|
||||
'indirizzo2',
|
||||
'citta',
|
||||
|
@ -284,9 +315,11 @@ class CSV extends CSVImporter
|
|||
|
||||
$dati_sede = [];
|
||||
foreach ($campi_sede as $field) {
|
||||
if (isset($record[$field])) {
|
||||
$dati_sede[$field] = trim($record[$field]);
|
||||
unset($record[$field]);
|
||||
if ($primary_key != $field) {
|
||||
if (isset($record[$field])) {
|
||||
$dati_sede[$field] = trim($record[$field]);
|
||||
unset($record[$field]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -307,6 +340,8 @@ class CSV extends CSVImporter
|
|||
|
||||
$anagrafica->fill($record);
|
||||
$anagrafica->tipologie = $tipologie;
|
||||
$anagrafica->tipo = $tipi_selezionati;
|
||||
$anagrafica->id_settore = $id_settore;
|
||||
$anagrafica->save();
|
||||
|
||||
$sede = $anagrafica->sedeLegale;
|
||||
|
|
|
@ -101,7 +101,7 @@ echo '
|
|||
</div>
|
||||
|
||||
<div class="col-md-3">
|
||||
{[ "type": "select", "label": "<?php echo tr('Stato'); ?>", "name": "idstato", "required": 1, "values": "query=SELECT id, descrizione FROM co_staticontratti", "value": "$idstato$", "class": "unblockable" ]}
|
||||
{[ "type": "select", "label": "<?php echo tr('Stato'); ?>", "name": "idstato", "required": 1, "values": "query=SELECT id, descrizione, colore AS _bgcolor_ FROM co_staticontratti ORDER BY descrizione", "value": "$idstato$", "class": "unblockable" ]}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -603,7 +603,7 @@ if (!empty($elementi)) {
|
|||
?>
|
||||
|
||||
<a class="btn btn-danger ask" data-backto="record-list">
|
||||
<i class="fa fa-trash"></i> <?php echo tr('Elimina'); ?>
|
||||
<i id ="elimina" class="fa fa-trash"></i> <?php echo tr('Elimina'); ?>
|
||||
</a>
|
||||
|
||||
<?php
|
||||
|
|
|
@ -492,11 +492,13 @@ $(".check").on("change", function() {
|
|||
$("#duplica_righe").removeClass("disabled");
|
||||
$("#confronta_righe").removeClass("disabled");
|
||||
$("#aggiorna_righe").removeClass("disabled");
|
||||
$("#elimina").addClass("disabled");
|
||||
} else {
|
||||
$("#elimina_righe").addClass("disabled");
|
||||
$("#duplica_righe").addClass("disabled");
|
||||
$("#confronta_righe").addClass("disabled");
|
||||
$("#aggiorna_righe").addClass("disabled");
|
||||
$("#elimina").removeClass("disabled");
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
@ -128,56 +128,59 @@ switch (filter('op')) {
|
|||
co_preventivi.numero,
|
||||
co_preventivi.data_accettazione,
|
||||
co_preventivi.data_conclusione,
|
||||
co_statipreventivi.is_pianificabile,
|
||||
co_statipreventivi.descrizione as stato,
|
||||
co_statipreventivi.is_completato,
|
||||
(SELECT ragione_sociale FROM an_anagrafiche WHERE idanagrafica = co_preventivi.idanagrafica) AS cliente,
|
||||
(SELECT id FROM zz_files WHERE id_record = co_preventivi.id AND id_module = '.prepare($modulo_preventivi->id).' LIMIT 1) AS have_attachments,
|
||||
\'1\' AS is_completato
|
||||
(SELECT id FROM zz_files WHERE id_record = co_preventivi.id AND id_module = '.prepare($modulo_preventivi->id).' LIMIT 1) AS have_attachments
|
||||
FROM co_preventivi
|
||||
LEFT JOIN co_statipreventivi ON co_preventivi.idstato = co_statipreventivi.id
|
||||
WHERE
|
||||
(
|
||||
(co_preventivi.data_accettazione >= '.prepare($start).' AND co_preventivi.data_accettazione <= '.prepare($end).')
|
||||
OR (co_preventivi.data_conclusione >= '.prepare($start).' AND co_preventivi.data_conclusione <= '.prepare($end).')
|
||||
)
|
||||
AND
|
||||
co_statipreventivi.is_pianificabile=1';
|
||||
)';
|
||||
|
||||
$preventivi = $dbo->fetchArray($query);
|
||||
|
||||
|
||||
foreach ($preventivi as $preventivo) {
|
||||
if (!empty($preventivo['data_accettazione']) && $preventivo['data_accettazione'] != '0000-00-00') {
|
||||
$results[] = [
|
||||
'id' => 'A_'.$modulo_preventivi->id.'_'.$preventivo['id'],
|
||||
'idintervento' => $preventivo['id'],
|
||||
'idtecnico' => '',
|
||||
'title' => '<div style=\'position:absolute; top:7%; right:3%;\' > '.(($preventivo['is_completato']) ? '<i class="fa fa-lock" aria-hidden="true"></i>' : '').' '.(($preventivo['have_attachments']) ? '<i class="fa fa-paperclip" aria-hidden="true"></i>' : '').'</div>'.'<b>'.tr('Accettazione prev.').' '.$preventivo['numero'].'</b> '.$preventivo['nome'].'<br><b>'.tr('Cliente').':</b> '.$preventivo['cliente'],
|
||||
'start' => $preventivo['data_accettazione'],
|
||||
//'end' => $preventivo['data_accettazione'],
|
||||
'url' => base_path().'/editor.php?id_module='.$modulo_preventivi->id.'&id_record='.$preventivo['id'],
|
||||
'backgroundColor' => '#ff7f50',
|
||||
'textColor' => color_inverse('#ff7f50'),
|
||||
'borderColor' => '#ff7f50',
|
||||
'allDay' => true,
|
||||
'eventStartEditable' => false,
|
||||
'editable' => false,
|
||||
];
|
||||
}
|
||||
if ($preventivo['is_pianificabile'] == 1 || $preventivo['stato'] = 'In attesa di conferma') {
|
||||
if (!empty($preventivo['data_accettazione']) && $preventivo['data_accettazione'] != '0000-00-00') {
|
||||
$query."AND co_statipreventivi.is_pianificabile=1";
|
||||
$results[] = [
|
||||
'id' => 'A_'.$modulo_preventivi->id.'_'.$preventivo['id'],
|
||||
'idintervento' => $preventivo['id'],
|
||||
'idtecnico' => '',
|
||||
'title' => '<div style=\'position:absolute; top:7%; right:3%;\' > '.(($preventivo['is_completato']) ? '<i class="fa fa-lock" aria-hidden="true"></i>' : '<i class="fa fa-pencil" aria-hidden="true"></i>').' '.(($preventivo['have_attachments']) ? '<i class="fa fa-paperclip" aria-hidden="true"></i>' : '').'</div>'.'<b>'.tr('Accettazione prev.').' '.$preventivo['numero'].'</b> '.$preventivo['nome'].'<br><b>'.tr('Cliente').':</b> '.$preventivo['cliente'],
|
||||
'start' => $preventivo['data_accettazione'],
|
||||
//'end' => $preventivo['data_accettazione'],
|
||||
'url' => base_path().'/editor.php?id_module='.$modulo_preventivi->id.'&id_record='.$preventivo['id'],
|
||||
'backgroundColor' => '#ff7f50',
|
||||
'textColor' => color_inverse('#ff7f50'),
|
||||
'borderColor' => '#ff7f50',
|
||||
'allDay' => true,
|
||||
'eventStartEditable' => false,
|
||||
'editable' => false,
|
||||
];
|
||||
}
|
||||
|
||||
if ($preventivo['data_accettazione'] != $preventivo['data_conclusione'] && $preventivo['data_conclusione'] != '0000-00-00' && !empty($preventivo['data_conclusione'])) {
|
||||
$results[] = [
|
||||
'id' => 'B_'.$modulo_preventivi->id.'_'.$preventivo['id'],
|
||||
'idintervento' => $preventivo['id'],
|
||||
'idtecnico' => '',
|
||||
'title' => '<div style=\'position:absolute; top:7%; right:3%;\' > '.(($preventivo['is_completato']) ? '<i class="fa fa-lock" aria-hidden="true"></i>' : '').' '.(($preventivo['have_attachments']) ? '<i class="fa fa-paperclip" aria-hidden="true"></i>' : '').'</div>'.'<b>'.tr('Conclusione prev.').' '.$preventivo['numero'].'</b> '.$preventivo['nome'].'<br><b>'.tr('Cliente').':</b> '.$preventivo['cliente'],
|
||||
'start' => $preventivo['data_conclusione'],
|
||||
//'end' => $preventivo['data_conclusione'],
|
||||
'url' => base_path().'/editor.php?id_module='.$modulo_preventivi->id.'&id_record='.$preventivo['id'],
|
||||
'backgroundColor' => '#ff7f50',
|
||||
'textColor' => color_inverse('#ff7f50'),
|
||||
'borderColor' => '#ff7f50',
|
||||
'allDay' => true,
|
||||
'eventStartEditable' => false,
|
||||
'editable' => false,
|
||||
];
|
||||
if ($preventivo['data_accettazione'] != $preventivo['data_conclusione'] && $preventivo['data_conclusione'] != '0000-00-00' && !empty($preventivo['data_conclusione'])) {
|
||||
$results[] = [
|
||||
'id' => 'B_'.$modulo_preventivi->id.'_'.$preventivo['id'],
|
||||
'idintervento' => $preventivo['id'],
|
||||
'idtecnico' => '',
|
||||
'title' => '<div style=\'position:absolute; top:7%; right:3%;\' > '.(($preventivo['is_completato']) ? '<i class="fa fa-lock" aria-hidden="true"></i>' : '<i class="fa fa-pencil" aria-hidden="true"></i>').' '.(($preventivo['have_attachments']) ? '<i class="fa fa-paperclip" aria-hidden="true"></i>' : '').'</div>'.'<b>'.tr('Conclusione prev.').' '.$preventivo['numero'].'</b> '.$preventivo['nome'].'<br><b>'.tr('Cliente').':</b> '.$preventivo['cliente'],
|
||||
'start' => $preventivo['data_conclusione'],
|
||||
//'end' => $preventivo['data_conclusione'],
|
||||
'url' => base_path().'/editor.php?id_module='.$modulo_preventivi->id.'&id_record='.$preventivo['id'],
|
||||
'backgroundColor' => '#ff7f50',
|
||||
'textColor' => color_inverse('#ff7f50'),
|
||||
'borderColor' => '#ff7f50',
|
||||
'allDay' => true,
|
||||
'eventStartEditable' => false,
|
||||
'editable' => false,
|
||||
];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -738,7 +738,7 @@ switch (filter('op')) {
|
|||
$sconto = $listino['sconto_percentuale_listino'];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if ($dir == 'entrata') {
|
||||
$prezzo_unitario = $prezzo_unitario ?: ($prezzi_ivati ? $riga->articolo->prezzo_vendita_ivato : $riga->articolo->prezzo_vendita);
|
||||
$riga->costo_unitario = $riga->articolo->prezzo_acquisto;
|
||||
|
|
|
@ -106,16 +106,16 @@ if ($dir == 'entrata') {
|
|||
if (setting('Cambia automaticamente stato ddt fatturati')) {
|
||||
if ($record['stato'] == 'Fatturato' || $record['stato'] == 'Parzialmente fatturato') {
|
||||
?>
|
||||
{[ "type": "select", "label": "<?php echo tr('Stato'); ?>", "name": "idstatoddt", "required": 1, "values": "query=SELECT * FROM dt_statiddt", "value": "$idstatoddt$", "extra": "readonly", "class": "unblockable" ]}
|
||||
{[ "type": "select", "label": "<?php echo tr('Stato'); ?>", "name": "idstatoddt", "required": 1, "values": "query=SELECT *, colore AS _bgcolor_ FROM dt_statiddt ORDER BY descrizione", "value": "$idstatoddt$", "extra": "readonly", "class": "unblockable" ]}
|
||||
<?php
|
||||
} else {
|
||||
?>
|
||||
{[ "type": "select", "label": "<?php echo tr('Stato'); ?>", "name": "idstatoddt", "required": 1, "values": "query=SELECT * FROM dt_statiddt WHERE descrizione IN('Bozza', 'Evaso', 'Parzialmente evaso')", "value": "$idstatoddt$", "class": "unblockable" ]}
|
||||
{[ "type": "select", "label": "<?php echo tr('Stato'); ?>", "name": "idstatoddt", "required": 1, "values": "query=SELECT *, colore AS _bgcolor_ FROM dt_statiddt WHERE descrizione IN('Bozza', 'Evaso', 'Parzialmente evaso') ORDER BY descrizione", "value": "$idstatoddt$", "class": "unblockable" ]}
|
||||
<?php
|
||||
}
|
||||
} else {
|
||||
?>
|
||||
{[ "type": "select", "label": "<?php echo tr('Stato'); ?>", "name": "idstatoddt", "required": 1, "values": "query=SELECT * FROM dt_statiddt", "value": "$idstatoddt$", "class": "unblockable" ]}
|
||||
{[ "type": "select", "label": "<?php echo tr('Stato'); ?>", "name": "idstatoddt", "required": 1, "values": "query=SELECT *, colore AS _bgcolor_ FROM dt_statiddt ORDER BY descrizione", "value": "$idstatoddt$", "class": "unblockable" ]}
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
|
@ -180,7 +180,7 @@ if ($dir == 'entrata') {
|
|||
|
||||
<div class="col-md-4">
|
||||
<?php
|
||||
$sede_anagrafica = $ddt->anagrafica->sedeLegale;
|
||||
$sede_anagrafica = $ddt->anagrafica->sedeLegale;
|
||||
$id_sede_anagrafica = $dir == 'entrata' ? $ddt->idsede_destinazione : $ddt->idsede_partenza;
|
||||
if (!empty($id_sede_anagrafica)) {
|
||||
$sede_anagrafica = Sede::find($id_sede_anagrafica);
|
||||
|
@ -798,7 +798,7 @@ $field_name = ($dir == 'entrata') ? 'idsede_partenza' : 'idsede_destinazione';
|
|||
if (in_array($record[$field_name], $user->sedi)) {
|
||||
?>
|
||||
<a class="btn btn-danger ask" data-backto="record-list">
|
||||
<i class="fa fa-trash"></i> <?php echo tr('Elimina'); ?>
|
||||
<i id ="elimina" class="fa fa-trash"></i> <?php echo tr('Elimina'); ?>
|
||||
</a>
|
||||
<?php
|
||||
}
|
||||
|
|
|
@ -563,11 +563,13 @@ $(".check").on("change", function() {
|
|||
$("#duplica_righe").removeClass("disabled");
|
||||
$("#confronta_righe").removeClass("disabled");
|
||||
$("#aggiorna_righe").removeClass("disabled");
|
||||
$("#elimina").addClass("disabled");
|
||||
} else {
|
||||
$("#elimina_righe").addClass("disabled");
|
||||
$("#duplica_righe").addClass("disabled");
|
||||
$("#confronta_righe").addClass("disabled");
|
||||
$("#aggiorna_righe").removeClass("disabled");
|
||||
$("#aggiorna_righe").addClass("disabled");
|
||||
$("#elimina").removeClass("disabled");
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
@ -238,7 +238,7 @@ if ($dir == 'entrata') {
|
|||
|
||||
<?php
|
||||
|
||||
$query = 'SELECT * FROM co_statidocumento';
|
||||
$query = 'SELECT *, colore AS _bgcolor_ FROM co_statidocumento';
|
||||
if (empty($record['is_fiscale'])) {
|
||||
$query .= " WHERE descrizione = 'Bozza'";
|
||||
|
||||
|
@ -250,6 +250,8 @@ elseif ($record['stato'] == 'Bozza') {
|
|||
$query .= " WHERE descrizione IN ('Emessa', 'Bozza')";
|
||||
}
|
||||
|
||||
$query .= ' ORDER BY descrizione';
|
||||
|
||||
?>
|
||||
<?php if ($dir == 'entrata') {
|
||||
$readonly = '"readonly":1,';
|
||||
|
@ -355,7 +357,7 @@ elseif ($record['stato'] == 'Bozza') {
|
|||
<div class="col-md-3">
|
||||
<!-- Nella realtà la fattura accompagnatoria non può esistere per la fatturazione elettronica, in quanto la risposta dal SDI potrebbe non essere immediata e le merci in viaggio. Dunque si può emettere una documento di viaggio valido per le merci ed eventualmente una fattura pro-forma per l'incasso della stessa, emettendo infine la fattura elettronica differita. -->
|
||||
|
||||
{[ "type": "select", "label": "<?php echo tr('Tipo documento'); ?>", "name": "idtipodocumento", "required": 1, "values": "query=SELECT id, CONCAT_WS(\" - \",codice_tipo_documento_fe, descrizione) AS descrizione FROM co_tipidocumento WHERE dir='<?php echo $dir; ?>' AND (reversed = 0 OR id = <?php echo $record['idtipodocumento']; ?>) ORDER BY codice_tipo_documento_fe", "value": "$idtipodocumento$", "readonly": <?php echo intval($record['stato'] != 'Bozza' && $record['stato'] != 'Annullata'); ?>, "help": "<?php echo ($database->fetchOne('SELECT tipo FROM an_anagrafiche WHERE idanagrafica = '.prepare($record['idanagrafica']))['tipo'] == 'Ente pubblico') ? 'FPA12 - fattura verso PA (Ente pubblico)' : 'FPR12 - fattura verso soggetti privati (Azienda o Privato)'; ?>" ]}
|
||||
{[ "type": "select", "label": "<?php echo tr('Tipo documento'); ?>", "name": "idtipodocumento", "required": 1, "values": "query=SELECT id, CONCAT_WS(\" - \",codice_tipo_documento_fe, descrizione) AS descrizione FROM co_tipidocumento WHERE dir='<?php echo $dir; ?>' AND ((reversed = 0 AND id_segment ='<?php echo $record['id_segment']; ?>') OR id = <?php echo $record['idtipodocumento']; ?>) ORDER BY codice_tipo_documento_fe", "value": "$idtipodocumento$", "readonly": <?php echo intval($record['stato'] != 'Bozza' && $record['stato'] != 'Annullata'); ?>, "help": "<?php echo ($database->fetchOne('SELECT tipo FROM an_anagrafiche WHERE idanagrafica = '.prepare($record['idanagrafica']))['tipo'] == 'Ente pubblico') ? 'FPA12 - fattura verso PA (Ente pubblico)' : 'FPR12 - fattura verso soggetti privati (Azienda o Privato)'; ?>" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-3">
|
||||
|
@ -971,7 +973,7 @@ if (in_array($record[$field_name], $user->sedi)) {
|
|||
$disabilita_eliminazione = in_array($fattura->codice_stato_fe, ['RC', 'MC', 'EC01', 'WAIT']);
|
||||
|
||||
echo '
|
||||
<a class="btn btn-danger ask '.($disabilita_eliminazione ? 'disabled' : '').'" data-backto="record-list" '.($disabilita_eliminazione ? 'disabled' : '').'>
|
||||
<a id ="elimina" class="btn btn-danger ask '.($disabilita_eliminazione ? 'disabled' : '').'" data-backto="record-list" '.($disabilita_eliminazione ? 'disabled' : '').'>
|
||||
<i class="fa fa-trash"></i> '.tr('Elimina').'
|
||||
</a>';
|
||||
}
|
||||
|
|
|
@ -687,11 +687,13 @@ $(".check").on("change", function() {
|
|||
$("#duplica_righe").removeClass("disabled");
|
||||
$("#confronta_righe").removeClass("disabled");
|
||||
$("#aggiorna_righe").removeClass("disabled");
|
||||
$("#elimina").addClass("disabled");
|
||||
} else {
|
||||
$("#elimina_righe").addClass("disabled");
|
||||
$("#duplica_righe").addClass("disabled");
|
||||
$("#confronta_righe").addClass("disabled");
|
||||
$("#aggiorna_righe").removeClass("disabled");
|
||||
$("#aggiorna_righe").addClass("disabled");
|
||||
$("#elimina").removeClass("disabled");
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
@ -701,7 +701,7 @@ class Fattura extends Document
|
|||
|
||||
// In fase di duplicazione di una fattura non deve essere calcolato il numero progressivo ma questo deve
|
||||
// essere generato in fase di emissione della stessa.
|
||||
$new->numero_esterno = null;
|
||||
$new->numero_esterno = '';
|
||||
$new->numero = Fattura::getNextNumero($now, $new->direzione, $new->id_segment);
|
||||
|
||||
// Rimozione informazioni di Fattura Elettronica
|
||||
|
|
|
@ -894,5 +894,5 @@ if (!empty($elementi)) {
|
|||
?>
|
||||
|
||||
<a class="btn btn-danger ask" data-backto="record-list">
|
||||
<i class="fa fa-trash"></i> <?php echo tr('Elimina'); ?>
|
||||
<i id ="elimina" class="fa fa-trash"></i> <?php echo tr('Elimina'); ?>
|
||||
</a>
|
||||
|
|
|
@ -438,11 +438,13 @@ $(".check").on("change", function() {
|
|||
$("#duplica_righe").removeClass("disabled");
|
||||
$("#confronta_righe").removeClass("disabled");
|
||||
$("#aggiorna_righe").removeClass("disabled");
|
||||
$("#elimina").addClass("disabled");
|
||||
} else {
|
||||
$("#elimina_righe").addClass("disabled");
|
||||
$("#duplica_righe").addClass("disabled");
|
||||
$("#confronta_righe").addClass("disabled");
|
||||
$("#aggiorna_righe").removeClass("disabled");
|
||||
$("#aggiorna_righe").addClass("disabled");
|
||||
$("#elimina").removeClass("disabled");
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
@ -76,7 +76,7 @@ echo '
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<table class="table table-hover table-condensed table-bordered" id="tablelistini">
|
||||
<table class="table table-hover table-condensed table-bordered" id="tablelistini" width="100%">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="text-center">
|
||||
|
|
|
@ -52,7 +52,7 @@ switch (filter('op')) {
|
|||
|
||||
flash()->info(tr('Campagna newsletter salvata!'));
|
||||
|
||||
if ($newsletter->state = 'OK') {
|
||||
if ($newsletter['state'] === 'OK') {
|
||||
$newsletter->completed_at = $newsletter->updated_at;
|
||||
}
|
||||
|
||||
|
|
|
@ -827,4 +827,4 @@ switch (post('op')) {
|
|||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -60,16 +60,16 @@ if ($module['name'] == 'Ordini cliente') {
|
|||
if (setting('Cambia automaticamente stato ordini fatturati')) {
|
||||
if ($record['stato'] == 'Evaso' || $record['stato'] == 'Parzialmente evaso' || $record['stato'] == 'Fatturato' || $record['stato'] == 'Parzialmente fatturato') {
|
||||
?>
|
||||
{[ "type": "select", "label": "<?php echo tr('Stato'); ?>", "name": "idstatoordine", "required": 1, "values": "query=SELECT * FROM or_statiordine", "value": "$idstatoordine$", "extra": "readonly", "class": "unblockable" ]}
|
||||
{[ "type": "select", "label": "<?php echo tr('Stato'); ?>", "name": "idstatoordine", "required": 1, "values": "query=SELECT *, colore AS _bgcolor_ FROM or_statiordine ORDER BY descrizione", "value": "$idstatoordine$", "extra": "readonly", "class": "unblockable" ]}
|
||||
<?php
|
||||
} else {
|
||||
?>
|
||||
{[ "type": "select", "label": "<?php echo tr('Stato'); ?>", "name": "idstatoordine", "required": 1, "values": "query=SELECT * FROM or_statiordine WHERE descrizione IN('Bozza', 'Accettato', 'In attesa di conferma', 'Annullato')", "value": "$idstatoordine$", "class": "unblockable" ]}
|
||||
{[ "type": "select", "label": "<?php echo tr('Stato'); ?>", "name": "idstatoordine", "required": 1, "values": "query=SELECT *, colore AS _bgcolor_ FROM or_statiordine WHERE descrizione IN('Bozza', 'Accettato', 'In attesa di conferma', 'Annullato') ORDER BY descrizione", "value": "$idstatoordine$", "class": "unblockable" ]}
|
||||
<?php
|
||||
}
|
||||
} else {
|
||||
?>
|
||||
{[ "type": "select", "label": "<?php echo tr('Stato'); ?>", "name": "idstatoordine", "required": 1, "values": "query=SELECT * FROM or_statiordine", "value": "$idstatoordine$", "class": "unblockable" ]}
|
||||
{[ "type": "select", "label": "<?php echo tr('Stato'); ?>", "name": "idstatoordine", "required": 1, "values": "query=SELECT *, colore AS _bgcolor_ FROM or_statiordine ORDER BY descrizione", "value": "$idstatoordine$", "class": "unblockable" ]}
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
|
@ -516,6 +516,6 @@ if (!empty($elementi)) {
|
|||
?>
|
||||
|
||||
<a class="btn btn-danger ask" data-backto="record-list">
|
||||
<i class="fa fa-trash"></i> <?php echo tr('Elimina'); ?>
|
||||
<i id ="elimina" class="fa fa-trash"></i> <?php echo tr('Elimina'); ?>
|
||||
</a>
|
||||
|
||||
|
|
|
@ -618,11 +618,13 @@ $(".check").on("change", function() {
|
|||
$("#duplica_righe").removeClass("disabled");
|
||||
$("#confronta_righe").removeClass("disabled");
|
||||
$("#aggiorna_righe").removeClass("disabled");
|
||||
$("#elimina").addClass("disabled");
|
||||
} else {
|
||||
$("#elimina_righe").addClass("disabled");
|
||||
$("#duplica_righe").addClass("disabled");
|
||||
$("#confronta_righe").addClass("disabled");
|
||||
$("#aggiorna_righe").removeClass("disabled");
|
||||
$("#aggiorna_righe").addClass("disabled");
|
||||
$("#elimina").removeClass("disabled");
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
@ -626,4 +626,4 @@ switch (post('op')) {
|
|||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -115,7 +115,7 @@ echo '
|
|||
</div>
|
||||
|
||||
<div class="col-md-3">
|
||||
{[ "type": "select", "label": "<?php echo tr('Stato'); ?>", "name": "idstato", "required": 1, "values": "query=SELECT id, descrizione FROM co_statipreventivi", "value": "$idstato$", "class": "unblockable" ]}
|
||||
{[ "type": "select", "label": "<?php echo tr('Stato'); ?>", "name": "idstato", "required": 1, "values": "query=SELECT id, descrizione, colore AS _bgcolor_ FROM co_statipreventivi ORDER BY descrizione", "value": "$idstato$", "class": "unblockable" ]}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
@ -518,7 +518,7 @@ if (!empty($elementi)) {
|
|||
?>
|
||||
|
||||
<a class="btn btn-danger ask" data-backto="record-list">
|
||||
<i class="fa fa-trash"></i> <?php echo tr('Elimina'); ?>
|
||||
<i id="elimina" class="fa fa-trash"></i> <?php echo tr('Elimina'); ?>
|
||||
</a>
|
||||
|
||||
<script>
|
||||
|
|
|
@ -611,11 +611,13 @@ $(".check").on("change", function() {
|
|||
$("#duplica_righe").removeClass("disabled");
|
||||
$("#confronta_righe").removeClass("disabled");
|
||||
$("#aggiorna_righe").removeClass("disabled");
|
||||
$("#elimina").addClass("disabled");
|
||||
} else {
|
||||
$("#elimina_righe").addClass("disabled");
|
||||
$("#duplica_righe").addClass("disabled");
|
||||
$("#confronta_righe").addClass("disabled");
|
||||
$("#aggiorna_righe").removeClass("disabled");
|
||||
$("#aggiorna_righe").addClass("disabled");
|
||||
$("#elimina").removeClass("disabled");
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
@ -24,6 +24,7 @@ switch (post('op')) {
|
|||
$dbo->update('co_staticontratti', [
|
||||
'descrizione' => (count($dbo->fetchArray('SELECT descrizione FROM co_staticontratti WHERE descrizione = '.prepare(post('descrizione')))) > 0) ? $dbo->fetchOne('SELECT descrizione FROM co_staticontratti WHERE id ='.$id_record)['descrizione'] : post('descrizione'),
|
||||
'icona' => post('icona'),
|
||||
'colore' => post('colore'),
|
||||
'is_completato' => post('is_completato') ?: null,
|
||||
'is_fatturabile' => post('is_fatturabile') ?: null,
|
||||
'is_pianificabile' => post('is_pianificabile') ?: null,
|
||||
|
@ -36,6 +37,7 @@ switch (post('op')) {
|
|||
case 'add':
|
||||
$descrizione = post('descrizione');
|
||||
$icona = post('icona');
|
||||
$colore = post('colore');
|
||||
$is_completato = post('is_completato') ?: null;
|
||||
$is_fatturabile = post('is_fatturabile') ?: null;
|
||||
$is_pianificabile = post('is_pianificabile') ?: null;
|
||||
|
@ -44,7 +46,7 @@ switch (post('op')) {
|
|||
if (count($dbo->fetchArray('SELECT descrizione FROM co_staticontratti WHERE descrizione='.prepare($descrizione))) > 0) {
|
||||
flash()->error(tr('Stato di contratto già esistente.'));
|
||||
} else {
|
||||
$query = 'INSERT INTO co_staticontratti(descrizione, icona, is_completato, is_fatturabile, is_pianificabile) VALUES ('.prepare($descrizione).', '.prepare($icona).', '.prepare($is_completato).', '.prepare($is_fatturabile).', '.prepare($is_pianificabile).' )';
|
||||
$query = 'INSERT INTO co_staticontratti(descrizione, icona, colore, is_completato, is_fatturabile, is_pianificabile) VALUES ('.prepare($descrizione).', '.prepare($icona).', '.prepare($colore).', '.prepare($is_completato).', '.prepare($is_fatturabile).', '.prepare($is_pianificabile).' )';
|
||||
$dbo->query($query);
|
||||
$id_record = $dbo->lastInsertedID();
|
||||
flash()->info(tr('Nuovo stato contratto aggiunto.'));
|
||||
|
|
|
@ -24,9 +24,13 @@ include_once __DIR__.'/../../core.php';
|
|||
<input type="hidden" name="backto" value="record-edit">
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="col-md-9">
|
||||
{[ "type": "text", "label": "<?php echo tr('Descrizione'); ?>", "name": "descrizione", "required": 1 ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-3">
|
||||
{[ "type": "text", "label": "<?php echo tr('Colore'); ?>", "name": "colore", "required": 1, "class": "colorpicker text-center", "value": "$colore$", "extra": "maxlength='7'", "icon-after": "<div class='img-circle square'></div>" ]}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
|
@ -53,3 +57,13 @@ include_once __DIR__.'/../../core.php';
|
|||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<script>
|
||||
$(document).ready( function() {
|
||||
$('.colorpicker').colorpicker({ format: 'hex' }).on('changeColor', function() {
|
||||
$('#modals > div #colore_').parent().find('.square').css( 'background', $('#modals > div #colore_').val() );
|
||||
});
|
||||
|
||||
$('#modals > div #colore_').parent().find('.square').css( 'background', $('#modals > div #colore_').val() );
|
||||
});
|
||||
</script>
|
||||
|
|
|
@ -33,14 +33,18 @@ if ($record['can_delete']) {
|
|||
<input type="hidden" name="id_record" value="<?php echo $id_record; ?>">
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-5">
|
||||
<div class="col-md-4">
|
||||
{[ "type": "text", "label": "<?php echo tr('Descrizione'); ?>", "name": "descrizione", "required": 1, "value": "$descrizione$", "extra": "<?php echo $attr; ?>" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
<div class="col-md-3">
|
||||
{[ "type": "text", "label": "<?php echo tr('Icona'); ?>", "name": "icona", "required": 1, "class": "text-center", "value": "$icona$", "extra": "", "icon-after": "<?php echo (!empty($record['icona'])) ? '<i class=\"'.$record['icona'].'\"></i>' : ''; ?>" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
{[ "type": "text", "label": "<?php echo tr('Colore'); ?>", "name": "colore", "required": 1, "class": "colorpicker text-center", "value": "$colore$", "extra": "maxlength='7'", "icon-after": "<div class='img-circle square'></div>" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-3">
|
||||
<div class="panel panel-primary">
|
||||
<div class="panel-heading">
|
||||
|
@ -78,3 +82,14 @@ if (!empty($record['can_delete'])) {
|
|||
}
|
||||
|
||||
?>
|
||||
|
||||
<script>
|
||||
$(document).ready( function() {
|
||||
$('.colorpicker').colorpicker({ format: 'hex' }).on('changeColor', function() {
|
||||
$('#colore').parent().find('.square').css( 'background', $('#colore').val() );
|
||||
});
|
||||
$('#colore').parent().find('.square').css( 'background', $('#colore').val() );
|
||||
|
||||
notifica();
|
||||
});
|
||||
</script>
|
||||
|
|
|
@ -24,6 +24,7 @@ switch (post('op')) {
|
|||
$dbo->update('or_statiordine', [
|
||||
'descrizione' => (count($dbo->fetchArray('SELECT descrizione FROM or_statiordine WHERE descrizione = '.prepare(post('descrizione')))) > 0) ? $dbo->fetchOne('SELECT descrizione FROM or_statiordine WHERE id ='.$id_record)['descrizione'] : post('descrizione'),
|
||||
'icona' => post('icona'),
|
||||
'colore' => post('colore'),
|
||||
'completato' => post('completato') ?: null,
|
||||
'is_fatturabile' => post('is_fatturabile') ?: null,
|
||||
'impegnato' => post('impegnato') ?: null,
|
||||
|
@ -36,6 +37,7 @@ switch (post('op')) {
|
|||
case 'add':
|
||||
$descrizione = post('descrizione');
|
||||
$icona = post('icona');
|
||||
$colore = post('colore');
|
||||
$completato = post('completato') ?: null;
|
||||
$is_fatturabile = post('is_fatturabile') ?: null;
|
||||
$impegnato = post('impegnato') ?: null;
|
||||
|
@ -44,7 +46,7 @@ switch (post('op')) {
|
|||
if (count($dbo->fetchArray('SELECT descrizione FROM or_statiordine WHERE descrizione='.prepare($descrizione))) > 0) {
|
||||
flash()->error(tr('Stato ordine già esistente.'));
|
||||
} else {
|
||||
$query = 'INSERT INTO or_statiordine(descrizione, icona, completato, is_fatturabile, impegnato) VALUES ('.prepare($descrizione).', '.prepare($icona).', '.prepare($completato).', '.prepare($is_fatturabile).', '.prepare($impegnato).' )';
|
||||
$query = 'INSERT INTO or_statiordine(descrizione, icona, colore, completato, is_fatturabile, impegnato) VALUES ('.prepare($descrizione).', '.prepare($icona).', '.prepare($colore).','.prepare($completato).', '.prepare($is_fatturabile).', '.prepare($impegnato).' )';
|
||||
$dbo->query($query);
|
||||
$id_record = $dbo->lastInsertedID();
|
||||
flash()->info(tr('Nuovo stato ordine aggiunto.'));
|
||||
|
@ -54,7 +56,7 @@ switch (post('op')) {
|
|||
|
||||
case 'delete':
|
||||
//scelgo se settare come eliminato o cancellare direttamente la riga se non è stato utilizzato negli ordini
|
||||
if (count($dbo->fetchArray('SELECT id FROM or_statiordine WHERE idstato='.prepare($id_record))) > 0) {
|
||||
if (count($dbo->fetchArray('SELECT id FROM or_statiordine WHERE id='.prepare($id_record))) > 0) {
|
||||
$query = 'UPDATE or_statiordine SET deleted_at = NOW() WHERE can_delete = 1 AND id='.prepare($id_record);
|
||||
} else {
|
||||
$query = 'DELETE FROM or_statiordine WHERE can_delete = 1 AND id='.prepare($id_record);
|
||||
|
|
|
@ -24,9 +24,13 @@ include_once __DIR__.'/../../core.php';
|
|||
<input type="hidden" name="backto" value="record-edit">
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="col-md-9">
|
||||
{[ "type": "text", "label": "<?php echo tr('Descrizione'); ?>", "name": "descrizione", "required": 1 ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-3">
|
||||
{[ "type": "text", "label": "<?php echo tr('Colore'); ?>", "name": "colore", "required": 1, "class": "colorpicker text-center", "value": "$colore$", "extra": "maxlength='7'", "icon-after": "<div class='img-circle square'></div>" ]}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
|
@ -53,3 +57,13 @@ include_once __DIR__.'/../../core.php';
|
|||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<script>
|
||||
$(document).ready( function() {
|
||||
$('.colorpicker').colorpicker({ format: 'hex' }).on('changeColor', function() {
|
||||
$('#modals > div #colore_').parent().find('.square').css( 'background', $('#modals > div #colore_').val() );
|
||||
});
|
||||
|
||||
$('#modals > div #colore_').parent().find('.square').css( 'background', $('#modals > div #colore_').val() );
|
||||
});
|
||||
</script>
|
||||
|
|
|
@ -33,14 +33,18 @@ if ($record['can_delete']) {
|
|||
<input type="hidden" name="id_record" value="<?php echo $id_record; ?>">
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-5">
|
||||
<div class="col-md-4">
|
||||
{[ "type": "text", "label": "<?php echo tr('Descrizione'); ?>", "name": "descrizione", "required": 1, "value": "$descrizione$", "extra": "<?php echo $attr; ?>" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
<div class="col-md-3">
|
||||
{[ "type": "text", "label": "<?php echo tr('Icona'); ?>", "name": "icona", "required": 1, "class": "text-center", "value": "$icona$", "extra": "", "icon-after": "<?php echo (!empty($record['icona'])) ? '<i class=\"'.$record['icona'].'\"></i>' : ''; ?>" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
{[ "type": "text", "label": "<?php echo tr('Colore'); ?>", "name": "colore", "required": 1, "class": "colorpicker text-center", "value": "$colore$", "extra": "maxlength='7'", "icon-after": "<div class='img-circle square'></div>" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-3">
|
||||
<div class="panel panel-primary">
|
||||
<div class="panel-heading">
|
||||
|
@ -78,3 +82,13 @@ if (!empty($record['can_delete'])) {
|
|||
}
|
||||
|
||||
?>
|
||||
<script>
|
||||
$(document).ready( function() {
|
||||
$('.colorpicker').colorpicker({ format: 'hex' }).on('changeColor', function() {
|
||||
$('#colore').parent().find('.square').css( 'background', $('#colore').val() );
|
||||
});
|
||||
$('#colore').parent().find('.square').css( 'background', $('#colore').val() );
|
||||
|
||||
notifica();
|
||||
});
|
||||
</script>
|
||||
|
|
|
@ -39,7 +39,7 @@ switch (filter('op')) {
|
|||
'help' => filter('help'),
|
||||
'predefined' => $predefined,
|
||||
'enabled' => post('enabled'),
|
||||
'id_segment' => post('id_segment')
|
||||
'id_segment' => post('id_segment'),
|
||||
], ['id' => $id_record]);
|
||||
|
||||
flash()->info(tr('Salvataggio completato!'));
|
||||
|
|
|
@ -49,11 +49,11 @@ include_once __DIR__.'/../../core.php';
|
|||
</div>
|
||||
|
||||
<?php
|
||||
|
||||
|
||||
$id_module_acquisti = database()->fetchOne('SELECT id FROM zz_modules WHERE title = "Fatture di acquisto"')['id'];
|
||||
$id_module_vendite = database()->fetchOne('SELECT id FROM zz_modules WHERE title = "Fatture di vendita"')['id'];
|
||||
|
||||
echo'
|
||||
|
||||
echo '
|
||||
<div class="col-md-3">
|
||||
|
||||
{[ "type": "select", "label": "'.tr('Sezionale predefinito').'", "name": "id_segment", "required": 1, "ajax-source": "segmenti", "select-options": '.json_encode(['id_module' => $record['dir'] == 'entrata' ? $id_module_vendite : $id_module_acquisti, 'is_sezionale' => 1]).', "value": "$id_segment$" ]}
|
||||
|
|
|
@ -815,7 +815,7 @@ class FatturaElettronica
|
|||
}
|
||||
|
||||
// Riferimento Amministrazione
|
||||
if ($fattura->getCliente()->tipo == "Ente pubblico") {
|
||||
if ($fattura->getCliente()->tipo == 'Ente pubblico') {
|
||||
if (!empty($fattura->getCliente()->riferimento_amministrazione)) {
|
||||
$result['RiferimentoAmministrazione'] = $fattura->getCliente()->riferimento_amministrazione;
|
||||
}
|
||||
|
@ -849,10 +849,6 @@ class FatturaElettronica
|
|||
'Sede' => static::getSede($cliente),
|
||||
];
|
||||
|
||||
// Riferimento Amministrazione
|
||||
if (!empty($cliente->riferimento_amministrazione)) {
|
||||
$result['RiferimentoAmministrazione'] = $cliente->riferimento_amministrazione;
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
|
|
@ -87,9 +87,7 @@ class FatturaOrdinaria extends FatturaElettronica
|
|||
{
|
||||
$linee = $this->getBody()['DatiBeniServizi']['DettaglioLinee'];
|
||||
$linee = $this->forceArray($linee);
|
||||
$ritenuta = $this->getBody()['DatiGenerali']['DatiGeneraliDocumento']['DatiRitenuta'];
|
||||
$cassa_previdenziale = $this->getBody()['DatiGenerali']['DatiGeneraliDocumento']['DatiCassaPrevidenziale'];
|
||||
$linee = $this->forceArray($linee);
|
||||
|
||||
$imponibile = [];
|
||||
$totale_imposta = [];
|
||||
|
@ -387,7 +385,8 @@ class FatturaOrdinaria extends FatturaElettronica
|
|||
// Arrotondamenti differenti nella fattura XML
|
||||
$diff = round(abs($totale_righe) + $totale_arrotondamento - abs($fattura->totale_imponibile), 2);
|
||||
// Aggiunta della riga di arrotondamento nel caso in cui ci sia una differenza tra i totali, o tra l'imponibile dell'XML e quello ricavato dalla somma delle righe
|
||||
if (($diff != 0 && $diff != $totale_arrotondamento) || $fattura->totale_imponibile + $fattura->rivalsa_inps != $totale_imp) {
|
||||
|
||||
if (($diff != 0 && $diff != $totale_arrotondamento) || (($fattura->totale_imponibile + $fattura->rivalsa_inps) != $totale_imp)) {
|
||||
// Rimozione dell'IVA calcolata automaticamente dal gestionale
|
||||
$iva_arrotondamento = database()->fetchOne('SELECT * FROM co_iva WHERE percentuale=0 AND deleted_at IS NULL');
|
||||
if ($diff != 0) {
|
||||
|
@ -506,6 +505,11 @@ class FatturaOrdinaria extends FatturaElettronica
|
|||
if (!empty($riga['Ritenuta'])) {
|
||||
$totali[] = $riga['PrezzoTotale'];
|
||||
$ritenuta_norighe = false;
|
||||
$ritenuta = $this->forceArray($ritenuta);
|
||||
foreach ($ritenuta as $rit) {
|
||||
$percentuale += floatval($rit['AliquotaRitenuta']);
|
||||
$importo += floatval($rit['ImportoRitenuta']);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -516,9 +520,6 @@ class FatturaOrdinaria extends FatturaElettronica
|
|||
$totale = sum($totali);
|
||||
}
|
||||
|
||||
$percentuale = floatval($ritenuta['AliquotaRitenuta']);
|
||||
$importo = floatval($ritenuta['ImportoRitenuta']);
|
||||
|
||||
$totale_previsto = round($importo / $percentuale * 100, 2);
|
||||
$percentuale_importo = round($totale_previsto / $totale * 100, 2);
|
||||
$percentuale_importo = min($percentuale_importo, 100); // Nota: Fix per la percentuale che superava il 100% nel caso di importi con Rivalsa compresa
|
||||
|
|
|
@ -0,0 +1,91 @@
|
|||
ALTER TABLE `co_staticontratti` ADD `colore` VARCHAR(7) NOT NULL AFTER `icona`;
|
||||
ALTER TABLE `co_statidocumento` ADD `colore` VARCHAR(7) NOT NULL AFTER `icona`;
|
||||
ALTER TABLE `dt_statiddt` ADD `colore` VARCHAR(7) NOT NULL AFTER `icona`;
|
||||
ALTER TABLE `or_statiordine` ADD `colore` VARCHAR(7) NOT NULL AFTER `icona`;
|
||||
|
||||
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 = 'Stati dei contratti'), 'color_Colore', 'colore', '7', '0', '0', '1', '0', '', '', '1', '0', '0');
|
||||
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 = 'Stati degli ordini'), 'color_Colore', 'colore', '7', '0', '0', '1', '0', '', '', '1', '0', '0');
|
||||
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 = 'Ordini cliente'), '_bg_', 'or_statiordine.colore', '14', '0', '0', '1', '0', '', '', '0', '0', '0');
|
||||
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 = 'Ordini fornitore'), '_bg_', 'or_statiordine.colore', '14', '0', '0', '1', '0', '', '', '0', '0', '0');
|
||||
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 = 'Contratti'), '_bg_', 'co_staticontratti.colore', '14', '0', '0', '1', '0', '', '', '0', '0', '0');
|
||||
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 = 'Ddt di vendita'), '_bg_', 'dt_statiddt.colore', '14', '0', '0', '1', '0', '', '', '0', '0', '0');
|
||||
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 = 'Ddt di acquisto'), '_bg_', 'dt_statiddt.colore', '14', '0', '0', '1', '0', '', '', '0', '0', '0');
|
||||
|
||||
UPDATE `co_staticontratti` SET `colore` = '#ffef99' WHERE `co_staticontratti`.`descrizione` = 'Bozza';
|
||||
UPDATE `co_staticontratti` SET `colore` = '#99e6ff' WHERE `co_staticontratti`.`descrizione` = 'In attesa di conferma';
|
||||
UPDATE `co_staticontratti` SET `colore` = '#99ffff' WHERE `co_staticontratti`.`descrizione` = 'Accettato';
|
||||
UPDATE `co_staticontratti` SET `colore` = '#e5e4e2' WHERE `co_staticontratti`.`descrizione` = 'Rifiutato';
|
||||
UPDATE `co_staticontratti` SET `colore` = '#fdd9a0' WHERE `co_staticontratti`.`descrizione` = 'In lavorazione';
|
||||
UPDATE `co_staticontratti` SET `colore` = '#98fb98' WHERE `co_staticontratti`.`descrizione` = 'Fatturato';
|
||||
UPDATE `co_staticontratti` SET `colore` = '#88de69' WHERE `co_staticontratti`.`descrizione` = 'Pagato';
|
||||
UPDATE `co_staticontratti` SET `colore` = '#5dd333' WHERE `co_staticontratti`.`descrizione` = 'Concluso';
|
||||
UPDATE `co_staticontratti` SET `colore` = '#b4ff99' WHERE `co_staticontratti`.`descrizione` = 'Parzialmente fatturato';
|
||||
|
||||
UPDATE `co_statidocumento` SET `colore` = '#88de69' WHERE `co_statidocumento`.`descrizione` = 'Pagato';
|
||||
UPDATE `co_statidocumento` SET `colore` = '#ffef99' WHERE `co_statidocumento`.`descrizione` = 'Bozza';
|
||||
UPDATE `co_statidocumento` SET `colore` = '#99ffff' WHERE `co_statidocumento`.`descrizione` = 'Emessa';
|
||||
UPDATE `co_statidocumento` SET `colore` = '#e5e4e2' WHERE `co_statidocumento`.`descrizione` = 'Annullata';
|
||||
UPDATE `co_statidocumento` SET `colore` = '#98fb98' WHERE `co_statidocumento`.`descrizione` = 'Parzialmente pagato';
|
||||
|
||||
UPDATE `dt_statiddt` SET `colore` = '#ffef99' WHERE `dt_statiddt`.`descrizione` = 'Bozza';
|
||||
UPDATE `dt_statiddt` SET `colore` = '#99ffff' WHERE `dt_statiddt`.`descrizione` = 'Evaso';
|
||||
UPDATE `dt_statiddt` SET `colore` = '#98fb98' WHERE `dt_statiddt`.`descrizione` = 'Fatturato';
|
||||
UPDATE `dt_statiddt` SET `colore` = '#b4ff99' WHERE `dt_statiddt`.`descrizione` = 'Parzialmente fatturato';
|
||||
UPDATE `dt_statiddt` SET `colore` = '#FFDF80' WHERE `dt_statiddt`.`descrizione` = 'Parzialmente evaso';
|
||||
|
||||
UPDATE `or_statiordine` SET `colore` = '#ffef99' WHERE `or_statiordine`.`descrizione` = 'Bozza';
|
||||
UPDATE `or_statiordine` SET `colore` = '#99ffff' WHERE `or_statiordine`.`descrizione` = 'Evaso';
|
||||
UPDATE `or_statiordine` SET `colore` = '#FFDF80' WHERE `or_statiordine`.`descrizione` = 'Parzialmente evaso';
|
||||
UPDATE `or_statiordine` SET `colore` = '#b4ff99' WHERE `or_statiordine`.`descrizione` = 'Parzialmente fatturato';
|
||||
UPDATE `or_statiordine` SET `colore` = '#98fb98' WHERE `or_statiordine`.`descrizione` = 'Fatturato';
|
||||
UPDATE `or_statiordine` SET `colore` = '#f9f5be' WHERE `or_statiordine`.`descrizione` = 'In attesa di conferma';
|
||||
UPDATE `or_statiordine` SET `colore` = '#99E6FF' WHERE `or_statiordine`.`descrizione` = 'Accettato';
|
||||
UPDATE `or_statiordine` SET `colore` = '#e5e4e2' WHERE `or_statiordine`.`descrizione` = 'Annullato';
|
||||
|
||||
UPDATE `co_statipreventivi` SET `colore` = '#ffef99' WHERE `co_statipreventivi`.`descrizione` = 'Bozza';
|
||||
UPDATE `co_statipreventivi` SET `colore` = '#99e6ff' WHERE `co_statipreventivi`.`descrizione` = 'In attesa di conferma';
|
||||
UPDATE `co_statipreventivi` SET `colore` = '#99ffff' WHERE `co_statipreventivi`.`descrizione` = 'Accettato';
|
||||
UPDATE `co_statipreventivi` SET `colore` = '#e5e4e2' WHERE `co_statipreventivi`.`descrizione` = 'Rifiutato';
|
||||
UPDATE `co_statipreventivi` SET `colore` = '#fdd9a0' WHERE `co_statipreventivi`.`descrizione` = 'In lavorazione';
|
||||
UPDATE `co_statipreventivi` SET `colore` = '#d8bfd8' WHERE `co_statipreventivi`.`descrizione` = 'Concluso';
|
||||
UPDATE `co_statipreventivi` SET `colore` = '#88de69' WHERE `co_statipreventivi`.`descrizione` = 'Pagato';
|
||||
UPDATE `co_statipreventivi` SET `colore` = '#98fb98' WHERE `co_statipreventivi`.`descrizione` = 'Fatturato';
|
||||
UPDATE `co_statipreventivi` SET `colore` = '#b4ff99' WHERE `co_statipreventivi`.`descrizione` = 'Parzialmente fatturato';
|
||||
|
||||
UPDATE `in_statiintervento` SET `colore` = '#ffef99' WHERE `in_statiintervento`.`descrizione` = 'Da programmare';
|
||||
UPDATE `in_statiintervento` SET `colore` = '#98fb98' WHERE `in_statiintervento`.`descrizione` = 'Fatturato';
|
||||
UPDATE `in_statiintervento` SET `colore` = '#d8bfd8' WHERE `in_statiintervento`.`descrizione` = 'Completato';
|
||||
UPDATE `in_statiintervento` SET `colore` = '#99e6ff' WHERE `in_statiintervento`.`descrizione` = 'Programmato';
|
||||
|
||||
UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = 'IF(`d`.`conteggio`>1, \'red\', co_statidocumento.colore)' WHERE `zz_modules`.`name` = 'Fatture di acquisto' AND `zz_views`.`name` = '_bg_';
|
||||
UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = 'IF(`dup`.`numero_esterno` IS NOT NULL, \'red\', co_statidocumento.colore)' WHERE `zz_modules`.`name` = 'Fatture di vendita' AND `zz_views`.`name` = '_bg_';
|
||||
|
||||
-- Allineamento query Fatture di vendita
|
||||
UPDATE `zz_modules` SET `options` = "
|
||||
SELECT
|
||||
|select|
|
||||
FROM
|
||||
`co_documenti`
|
||||
LEFT JOIN (SELECT SUM(`totale`) AS `totale`, `iddocumento` FROM `co_movimenti` WHERE `totale` > 0 AND `primanota` = 1 GROUP BY `iddocumento`) AS `primanota` ON `primanota`.`iddocumento` = `co_documenti`.`id`
|
||||
LEFT JOIN `an_anagrafiche` ON `co_documenti`.`idanagrafica` = `an_anagrafiche`.`idanagrafica`
|
||||
LEFT JOIN `co_tipidocumento` ON `co_documenti`.`idtipodocumento` = `co_tipidocumento`.`id`
|
||||
LEFT JOIN (SELECT `iddocumento`, SUM(`subtotale` - `sconto`) AS `totale_imponibile`, SUM(`iva`) AS `iva` FROM `co_righe_documenti` GROUP BY `iddocumento`) AS righe ON `co_documenti`.`id` = `righe`.`iddocumento`
|
||||
LEFT JOIN (SELECT `co_banche`.`id`, CONCAT(`co_banche`.`nome`, ' - ', `co_banche`.`iban`) AS descrizione FROM `co_banche` GROUP BY `co_banche`.`id`) AS banche ON `banche`.`id` =`co_documenti`.`id_banca_azienda`
|
||||
LEFT JOIN `co_statidocumento` ON `co_documenti`.`idstatodocumento` = `co_statidocumento`.`id`
|
||||
LEFT JOIN `fe_stati_documento` ON `co_documenti`.`codice_stato_fe` = `fe_stati_documento`.`codice`
|
||||
LEFT JOIN `co_ritenuta_contributi` ON `co_documenti`.`id_ritenuta_contributi` = `co_ritenuta_contributi`.`id`
|
||||
LEFT JOIN (SELECT COUNT(id) as emails, em_emails.id_record FROM em_emails INNER JOIN zz_operations ON zz_operations.id_email = em_emails.id WHERE id_module IN(SELECT id FROM zz_modules WHERE name = 'Fatture di vendita') AND `zz_operations`.`op` = 'send-email' GROUP BY em_emails.id_record) AS `email` ON `email`.`id_record` = `co_documenti`.`id`
|
||||
LEFT JOIN `co_pagamenti` ON `co_documenti`.`idpagamento` = `co_pagamenti`.`id`
|
||||
LEFT JOIN (SELECT `numero_esterno`, `id_segment`, `idtipodocumento`, `data` FROM `co_documenti` WHERE `co_documenti`.`idtipodocumento` IN( SELECT `id` FROM `co_tipidocumento` WHERE `dir` = 'entrata') AND `numero_esterno` != '' GROUP BY `id_segment`, `numero_esterno`, `idtipodocumento` HAVING COUNT(`numero_esterno`) > 1 |date_period(`co_documenti`.`data`)| ) dup ON `co_documenti`.`numero_esterno` = `dup`.`numero_esterno` AND `dup`.`id_segment` = `co_documenti`.`id_segment` AND `dup`.`idtipodocumento` = `co_documenti`.`idtipodocumento`
|
||||
WHERE
|
||||
1=1 AND `dir` = 'entrata' |segment(`co_documenti`.`id_segment`)| |date_period(`co_documenti`.`data`)|
|
||||
HAVING
|
||||
2=2
|
||||
ORDER BY
|
||||
`co_documenti`.`data` DESC,
|
||||
CAST(`co_documenti`.`numero_esterno` AS UNSIGNED) DESC" WHERE `name` = 'Fatture di vendita';
|
||||
|
||||
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 = 'Tipi documento'), 'Sezionale', 'zz_segments.name', '8', '1', '0', '0', '0', '', '', '1', '0', '0');
|
||||
|
||||
UPDATE `zz_prints` SET `predefined` = '0' WHERE `zz_prints`.`name` IN ('Stampa calendario settimanale', "Intervento & checklist", "Intervento & checklist (senza costi)", "Barcode bulk");
|
||||
|
Loading…
Reference in New Issue