mirror of
https://github.com/devcode-it/openstamanager.git
synced 2025-02-11 00:50:37 +01:00
Merge branch 'master' of https://github.com/devcode-it/openstamanager
This commit is contained in:
commit
5dd7692c5d
35
CHANGELOG.md
35
CHANGELOG.md
@ -4,6 +4,7 @@ Tutti i maggiori cambiamenti di questo progetto saranno documentati in questo fi
|
||||
|
||||
Il formato utilizzato è basato sulle linee guida di [Keep a Changelog](http://keepachangelog.com/), e il progetto segue il [Semantic Versioning](http://semver.org/) per definire le versioni delle release.
|
||||
|
||||
- [2.4.27 (2021-10-25)](#2427-2021-10-26)
|
||||
- [2.4.26 (2021-09-24)](#2426-2021-09-24)
|
||||
- [2.4.25 (2021-08-25)](#2425-2021-08-25)
|
||||
- [2.4.24 (2021-07-28)](#2424-2021-07-28)
|
||||
@ -37,6 +38,40 @@ Il formato utilizzato è basato sulle linee guida di [Keep a Changelog](http://k
|
||||
- [2.2 (2016-11-10)](#22-2016-11-10)
|
||||
- [2.1 (2015-04-02)](#21-2015-04-02)
|
||||
|
||||
## 2.4.27 (2021-10-26)
|
||||
|
||||
### Aggiunto (Added)
|
||||
- Aggiunta selezione automatica **banca** in fase di importazione fattura elettronica
|
||||
- Aggiunta selezione automatica del **conto di acquisto** articolo in fase di importazione fattura elettronica
|
||||
- Aggiunto select **conto acquisto/vendita** in fase di creazione articolo
|
||||
- Aggiunto select per aggiornare i prezzi di acquisto dell'articolo in fase di importazione fattura elettronica
|
||||
- Aggiunto filtro per mostrare gli impianti ai tecnici assegnati
|
||||
- Aggiunto ordinamento righe in interventi
|
||||
- Aggiunta azione di gruppo per **rincaro prezzi di vendita** articoli con possibilità di scelta del prezzo di partenza
|
||||
- Aggiunta azione di gruppo per cambiare la **categoria** degli articoli
|
||||
- Aggiunta azione di gruppo per aggiornare l'aliquota iva degli articoli
|
||||
- Aggiunto **Mese prossimo** nel calendario
|
||||
- Aggiunta variabile ragione sociale per l'invio mail da ddt
|
||||
- Aggiunta immagine in import CSV articoli
|
||||
- Aggiunta selezione prezzo di acquisto per stampa inventario
|
||||
- Aggiunto costo medio in fase di aggiunta riga articolo
|
||||
- Aggiunta azione di gruppo per aggiornare il prezzo di acquisto per gli articoli a cui non è impostato, in base all'ultima fattura di acquisto
|
||||
### Modificato (Changed)
|
||||
- Ampliata **ricerca articoli** in importazione fatturazione elettronica per collegamento automatico
|
||||
- Ridotto il valid time per la cache
|
||||
- Ordinamento **gestione documentale** per data decrescente
|
||||
- Spostamento stampe situazione contabile e bilancio in **Stampe contabili**
|
||||
### Fixed
|
||||
- Fix sconti in **fatturazione interventi**
|
||||
- Fix statistiche **fatture**
|
||||
- Fix aggiunta intervento da dashboard vista mese
|
||||
- Fix selezione iva in aggiunta riga articolo
|
||||
- Fix cambio stato intervento in fase di eliminazione riga da fattura
|
||||
- Fix selezione iva in **crea fattura** da contratto
|
||||
- Fix filigrana stampe
|
||||
- Fix arrotondamento automatico
|
||||
- Fix azzeramento revisione in duplicazione **preventivo**
|
||||
|
||||
## 2.4.26 (2021-09-24)
|
||||
|
||||
### Aggiunto (Added)
|
||||
|
@ -1096,3 +1096,12 @@ div.tip {
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.table-extra-condensed > thead > tr > th,
|
||||
.table-extra-condensed > tbody > tr > th,
|
||||
.table-extra-condensed > tfoot > tr > th,
|
||||
.table-extra-condensed > thead > tr > td,
|
||||
.table-extra-condensed > tbody > tr > td,
|
||||
.table-extra-condensed > tfoot > tr > td {
|
||||
padding: 2px;
|
||||
}
|
@ -277,7 +277,7 @@ function srcFonts() {
|
||||
|
||||
function ckeditor() {
|
||||
return gulp.src([
|
||||
config.nodeDirectory + '/ckeditor4/{adapters,lang,skins,plugins,core}/**/*.{js,json,css,png}',
|
||||
config.nodeDirectory + '/ckeditor4/{adapters,lang,skins,plugins,core}/**/*.{js,json,css,png,gif,html}',
|
||||
config.nodeDirectory + '/ckeditor4/*.{js,css}',
|
||||
])
|
||||
.pipe(gulp.dest(config.production + '/' + config.paths.js + '/ckeditor'));
|
||||
|
@ -53,8 +53,7 @@ if (empty($result['idarticolo'])) {
|
||||
$qta_minima = $articolo['qta_minima'];
|
||||
|
||||
echo '
|
||||
<p><strong>'.tr('Articolo').':</strong> '.$articolo['codice'].' - '.$articolo['descrizione'].'.</p>
|
||||
<input type="hidden" name="idarticolo" id="idarticolo" value="'.$articolo['id'].'">
|
||||
{[ "type": "select", "disabled":"1", "label": "'.tr('Articolo').'", "name": "idarticolo", "required": 1, "value": "'.$result['idarticolo'].'", "ajax-source": "articoli", "select-options": '.json_encode($options['select-options']['articoli']).', "icon-after": "add|'.Modules::get('Articoli')['id'].'" ]}
|
||||
|
||||
<script>
|
||||
$(document).ready(function (){
|
||||
@ -267,7 +266,7 @@ function verificaPrezzoArticolo() {
|
||||
|
||||
let div = prezzo_unitario_input.closest("div").parent().find("div[id*=errors]");
|
||||
|
||||
if (prezzo_previsto === prezzo_unitario) {
|
||||
if (prezzo_previsto === prezzo_unitario || prezzo_previsto === 0 ) {
|
||||
div.css("padding-top", "0");
|
||||
div.html("");
|
||||
|
||||
@ -275,7 +274,7 @@ function verificaPrezzoArticolo() {
|
||||
}
|
||||
|
||||
div.css("padding-top", "5px");
|
||||
div.html(`<small class="label label-warning" >'.tr('Prezzo suggerito').': ` + prezzo_previsto.toLocale() + globals.currency + `<button type="button" class="btn btn-xs btn-info pull-right" onclick="aggiornaPrezzoArticolo()"><i class="fa fa-refresh"></i> '.tr('Aggiorna').'</button></small>`);
|
||||
div.html(`<small class="label label-info" >'.tr('Prezzo suggerito').': ` + prezzo_previsto.toLocale() + " " + globals.currency + `<button type="button" class="btn btn-xs btn-info pull-right" onclick="aggiornaPrezzoArticolo()"><i class="fa fa-refresh"></i> '.tr('Aggiorna').'</button></small>`);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -297,7 +296,7 @@ function verificaScontoArticolo() {
|
||||
}
|
||||
|
||||
div.css("padding-top", "5px");
|
||||
div.html(`<small class="label label-warning" >'.tr('Sconto suggerito').': ` + sconto_previsto.toLocale() + `%<button type="button" class="btn btn-xs btn-info pull-right" onclick="aggiornaScontoArticolo()"><i class="fa fa-refresh"></i> '.tr('Aggiorna').'</button></small>`);
|
||||
div.html(`<small class="label label-info" >'.tr('Sconto suggerito').': ` + sconto_previsto.toLocale() + `%<button type="button" class="btn btn-xs btn-info pull-right" onclick="aggiornaScontoArticolo()"><i class="fa fa-refresh"></i> '.tr('Aggiorna').'</button></small>`);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -353,7 +352,5 @@ function aggiornaQtaMinima() {
|
||||
div.removeClass("text-danger").addClass("text-success");
|
||||
}
|
||||
}
|
||||
if (direzione === "entrata") {
|
||||
aggiorna_guadagno();
|
||||
}
|
||||
|
||||
</script>';
|
||||
|
@ -268,7 +268,7 @@ function verificaPrezzoArticolo(tr) {
|
||||
|
||||
let div = prezzo_unitario_input.closest("div").parent().find("div[id*=errors]");
|
||||
|
||||
if (prezzo_previsto === prezzo_unitario) {
|
||||
if (prezzo_previsto === prezzo_unitario || prezzo_previsto === 0) {
|
||||
div.css("padding-top", "0");
|
||||
div.html("");
|
||||
|
||||
@ -276,7 +276,7 @@ function verificaPrezzoArticolo(tr) {
|
||||
}
|
||||
|
||||
div.css("padding-top", "5px");
|
||||
div.html(`<small class="label label-warning" >'.tr('Prezzo suggerito').': ` + prezzo_previsto.toLocale() + globals.currency + `<button type="button" class="btn btn-xs btn-info pull-right" onclick="aggiornaPrezzoArticolo(this)"><i class="fa fa-refresh"></i> '.tr('Aggiorna').'</button></small>`);
|
||||
div.html(`<small class="label label-info" >'.tr('Prezzo suggerito').': ` + prezzo_previsto.toLocale() + " " + globals.currency + `<button type="button" class="btn btn-xs btn-info pull-right" onclick="aggiornaPrezzoArticolo(this)"><i class="fa fa-refresh"></i> '.tr('Aggiorna').'</button></small>`);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -314,7 +314,7 @@ function verificaScontoArticolo(tr) {
|
||||
}
|
||||
|
||||
div.css("padding-top", "5px");
|
||||
div.html(`<small class="label label-warning" >'.tr('Sconto suggerito').': ` + sconto_previsto.toLocale() + `%<button type="button" class="btn btn-xs btn-info pull-right" onclick="aggiornaScontoArticolo(this)"><i class="fa fa-refresh"></i> '.tr('Aggiorna').'</button></small>`);
|
||||
div.html(`<small class="label label-info" >'.tr('Sconto suggerito').': ` + sconto_previsto.toLocale() + `%<button type="button" class="btn btn-xs btn-info pull-right" onclick="aggiornaScontoArticolo(this)"><i class="fa fa-refresh"></i> '.tr('Aggiorna').'</button></small>`);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -71,10 +71,50 @@ if ($options['dir'] == 'entrata') {
|
||||
var margine = (((prezzo - sconto) * 100) / costo_unitario) - 100;
|
||||
var parent = $("#costo_unitario").closest("div").parent();
|
||||
var div = parent.find("div[id*=\"errors\"]");
|
||||
var mediaponderata = 0;
|
||||
|
||||
margine = isNaN(margine) || !isFinite(margine) ? 0: margine; // Fix per magine NaN
|
||||
|
||||
div.html("<small> '.tr('Guadagno').': " + guadagno.toLocale() + " " + globals.currency + " '.tr('Margine').': " + margine.toLocale() + " %</small>");
|
||||
if ($("#idarticolo").val()) {
|
||||
mediaponderata = parseFloat($("#idarticolo").selectData().media_ponderata);
|
||||
}
|
||||
|
||||
div.html("<table class=\"table table-extra-condensed\" style=\"margin-top:7px;\" >\
|
||||
<tr>\
|
||||
<td>\
|
||||
<small> '.tr('Guadagno').':</small>\
|
||||
</td>\
|
||||
<td align=\"right\">\
|
||||
<small>" + guadagno.toLocale() + "</small>\
|
||||
</td>\
|
||||
<td align=\"center\">\
|
||||
<small>" + globals.currency + "</small>\
|
||||
</td>\
|
||||
</tr>\
|
||||
<tr>\
|
||||
<td>\
|
||||
<small> '.tr('Margine').':</small>\
|
||||
</td>\
|
||||
<td align=\"right\">\
|
||||
<small>" + margine.toLocale() + "<small>\
|
||||
</td>\
|
||||
<td align=\"center\">\
|
||||
<small> %<small>\
|
||||
</td>\
|
||||
</tr>\
|
||||
<tr>\
|
||||
<td>\
|
||||
<small> '.tr('Costo medio').':</small>\
|
||||
</td>\
|
||||
<td align=\"right\">\
|
||||
<small>" + (mediaponderata!=0 ? mediaponderata.toLocale() : "- ") + "</small>\
|
||||
</td>\
|
||||
<td align=\"center\">\
|
||||
<small>" + globals.currency + "</small>\
|
||||
</td>\
|
||||
</tr>\
|
||||
</table>");
|
||||
|
||||
if (guadagno < 0) {
|
||||
parent.addClass("has-error");
|
||||
div.addClass("label-danger").removeClass("label-success");
|
||||
@ -123,7 +163,7 @@ if (in_array($module['name'], ['Ordini cliente', 'Ordini fornitore', 'Preventivi
|
||||
$confermato = $result['confermato'];
|
||||
}
|
||||
echo '
|
||||
<div class="box box-warning collapsable collapsed-box">
|
||||
<div class="box box-info collapsable collapsed-box">
|
||||
<div class="box-header with-border">
|
||||
<h3 class="box-title">'.tr('Informazioni aggiuntive').'</h3>
|
||||
<div class="box-tools pull-right">
|
||||
|
@ -213,21 +213,22 @@ if (Auth::check()) {
|
||||
["Undo","Redo","-","Cut","Copy","Paste","PasteText","PasteFromWord","-","SpellChecker", "Scayt", "-","Link","Unlink","-","Bold","Italic","Underline","Superscript","SpecialChar","HorizontalRule","-","JustifyLeft","JustifyCenter","JustifyRight","JustifyBlock","-","NumberedList","BulletedList","Outdent","Indent","Blockquote","-","Styles","Format","Image","Table", "TextColor", "BGColor" ],
|
||||
],
|
||||
ckeditorToolbar_Full: [
|
||||
{ name: "document", items : [ "Source" ] },
|
||||
{ name: "document", items : [ "Source", "ExportPdf", "Preview", "Print", "-", "Templates" ] },
|
||||
{ name: "clipboard", items : [ "Cut","Copy","Paste","PasteText","PasteFromWord","-","Undo","Redo" ] },
|
||||
{ name: "editing", items : [ "Find","Replace","-","SelectAll","-","SpellChecker", "Scayt" ] },
|
||||
{ name: "forms", items : [ "Form", "Checkbox", "Radio", "TextField", "Textarea", "Select", "Button", "ImageButton",
|
||||
"HiddenField" ] },
|
||||
"/",
|
||||
{ name: "basicstyles", items : [ "Bold","Italic","Underline","Strike","Subscript","Superscript","-","RemoveFormat" ] },
|
||||
{ name: "basicstyles", items : [ "Bold","Italic","Underline","Strike","Subscript","Superscript","-","CopyFormatting","RemoveFormat" ] },
|
||||
{ name: "paragraph", items : [ "NumberedList","BulletedList","-","Outdent","Indent","-","Blockquote","CreateDiv",
|
||||
"-","JustifyLeft","JustifyCenter","JustifyRight","JustifyBlock","-","BidiLtr","BidiRtl" ] },
|
||||
"-","JustifyLeft","JustifyCenter","JustifyRight","JustifyBlock","-","BidiLtr","BidiRtl","Language" ] },
|
||||
{ name: "links", items : [ "Link","Unlink","Anchor" ] },
|
||||
{ name: "insert", items : [ "Image","Flash","Table","HorizontalRule","Smiley","SpecialChar","PageBreak","Iframe" ] },
|
||||
"/",
|
||||
{ name: "styles", items : [ "Styles","Format","Font","FontSize" ] },
|
||||
{ name: "colors", items : [ "TextColor","BGColor" ] },
|
||||
{ name: "tools", items : [ "Maximize", "ShowBlocks","-","About" ] }
|
||||
{ name: "tools", items : [ "Maximize", "ShowBlocks" ] },
|
||||
{ name: "about", items: [ "About" ] }
|
||||
],
|
||||
order_manager_id: "'.($dbo->isInstalled() ? Modules::get('Stato dei servizi')['id'] : '').'",
|
||||
dataload_page_buffer: '.setting('Lunghezza in pagine del buffer Datatables').',
|
||||
|
@ -54,7 +54,7 @@ if (function_exists('customComponents')) {
|
||||
echo '
|
||||
</table>
|
||||
|
||||
<p><strong>'.tr("Si sconsiglia l'aggiornamento senza il supporto dell'assistenza ufficiale").'.</strong></p>';
|
||||
<div class="alert alert-warning" role="alert"> <i class="fa fa-exclamation-triangle"></i> '.tr("Attenzione, il gestionale presenta delle personalizzazioni: si sconsiglia l'aggiornamento senza il supporto dell'assistenza ufficiale").'.</div>';
|
||||
} else {
|
||||
echo '
|
||||
<p>'.tr('Non ci sono strutture personalizzate').'.</p>';
|
||||
@ -115,7 +115,7 @@ if (setting('Attiva aggiornamenti')) {
|
||||
|
||||
if (!empty($alerts)) {
|
||||
echo '
|
||||
<div class="alert alert-warning">
|
||||
<div class="alert alert-info">
|
||||
<p>'.tr('Devi modificare il seguenti parametri del file di configurazione PHP (_FILE_) per poter caricare gli aggiornamenti', [
|
||||
'_FILE_' => '<b>php.ini</b>',
|
||||
]).':<ul>';
|
||||
@ -198,7 +198,25 @@ function search(button) {
|
||||
|
||||
{[ "type": "file", "name": "blob", "required": 1, "accept": ".zip" ]}
|
||||
|
||||
<button type="button" class="btn btn-primary pull-right" onclick="update()">
|
||||
';
|
||||
|
||||
if (!empty($custom) || !empty($tables)) {
|
||||
$disabled = 'disabled';
|
||||
echo ' <input type="checkbox" id="aggiorna_custom" class="pull-left" style="margin-top:10px;" value="1" >
|
||||
<label for="aggiorna_custom" style="margin-top:7px;" >'.tr("Desidero comunque procedere all'aggiornamento").'.</label>
|
||||
<script>
|
||||
$("#aggiorna_custom").change(function() {
|
||||
if(this.checked) {
|
||||
$("#aggiorna").removeClass("disabled");
|
||||
}else{
|
||||
$("#aggiorna").addClass("disabled");
|
||||
}
|
||||
});
|
||||
</script>';
|
||||
}
|
||||
echo '
|
||||
|
||||
<button type="button" class="btn btn-primary pull-right '.$disabled.'" id="aggiorna" onclick="update()">
|
||||
<i class="fa fa-upload"></i> '.tr('Carica').'
|
||||
</button>
|
||||
</form>
|
||||
|
@ -80,7 +80,7 @@ class DatiFattureElettroniche extends Controllo
|
||||
}
|
||||
|
||||
// Se riscontro un'anomalia
|
||||
if ($fattura_vendita->anagrafica->piva != $dati_anagrafici['IdFiscaleIVA']['IdCodice'] || $fattura_vendita->anagrafica->codice_fiscale != $dati_anagrafici['CodiceFiscale'] || $fattura_vendita->totale != $totale_documento_xml) {
|
||||
if ($fattura_vendita->anagrafica->piva != $dati_anagrafici['IdFiscaleIVA']['IdCodice'] || $fattura_vendita->anagrafica->codice_fiscale != $dati_anagrafici['CodiceFiscale'] || numberFormat($fattura_vendita->totale) != numberFormat($totale_documento_xml)) {
|
||||
$anomalia = [
|
||||
'fattura_vendita' => $fattura_vendita,
|
||||
'codice_fiscale_xml' => !empty($dati_anagrafici['CodiceFiscale']) ? $dati_anagrafici['CodiceFiscale'] : null,
|
||||
|
@ -35,7 +35,7 @@ switch ($resource) {
|
||||
SELECT idddt AS id, "Ddt" AS tipo, "Ddt di vendita" AS modulo, (subtotale-sconto)/qta AS costo_unitario, (SELECT numero FROM dt_ddt WHERE id=idddt) AS n_documento, (SELECT numero_esterno FROM dt_ddt WHERE id=idddt) AS n2_documento, (SELECT data FROM dt_ddt WHERE id=idddt) AS data_documento FROM dt_righe_ddt WHERE idarticolo='.$idarticolo.' AND idddt IN(SELECT id FROM dt_ddt WHERE idtipoddt IN(SELECT id FROM dt_tipiddt WHERE dir="entrata") AND idanagrafica='.prepare($idanagrafica).') LIMIT 0,5');
|
||||
|
||||
if (sizeof($documenti) > 0) {
|
||||
echo "<br/><table cellspacing='0' class='table-striped table-bordered' >\n";
|
||||
echo "<br/><table class='table table-striped table-bordered table-extra-condensed' >\n";
|
||||
echo "<tr><th width='180'>Documento</th>\n";
|
||||
echo "<th width='100' class='text-right' >Totale</th></tr>\n";
|
||||
|
||||
@ -64,7 +64,7 @@ switch ($resource) {
|
||||
SELECT idddt AS id, "Ddt" AS tipo, "Ddt di vendita" AS modulo, (subtotale-sconto)/qta AS costo_unitario, (SELECT numero FROM dt_ddt WHERE id=idddt) AS n_documento, (SELECT numero_esterno FROM dt_ddt WHERE id=idddt) AS n2_documento, (SELECT data FROM dt_ddt WHERE id=idddt) AS data_documento FROM dt_righe_ddt WHERE idarticolo='.prepare($idarticolo).' AND idddt IN(SELECT id FROM dt_ddt WHERE idtipoddt IN(SELECT id FROM dt_tipiddt WHERE dir="entrata")) LIMIT 0,5');
|
||||
|
||||
if (sizeof($documenti) > 0) {
|
||||
echo "<br/><table cellspacing='0' class='table-striped table-bordered' >\n";
|
||||
echo "<br/><table class='table table-striped table-bordered table-extra-condensed' >\n";
|
||||
echo "<tr><th width='180'>Documento</th>\n";
|
||||
echo "<th width='100' class='text-right' >Totale</th></tr>\n";
|
||||
|
||||
@ -92,7 +92,7 @@ switch ($resource) {
|
||||
SELECT idddt AS id, "Ddt" AS tipo, "Ddt di acquisto" AS modulo, (subtotale-sconto)/qta AS costo_unitario, (SELECT numero FROM dt_ddt WHERE id=idddt) AS n_documento, (SELECT numero_esterno FROM dt_ddt WHERE id=idddt) AS n2_documento, (SELECT data FROM dt_ddt WHERE id=idddt) AS data_documento FROM dt_righe_ddt WHERE idarticolo='.prepare($idarticolo).' AND idddt IN(SELECT id FROM dt_ddt WHERE idtipoddt IN(SELECT id FROM dt_tipiddt WHERE dir="uscita")) LIMIT 0,5');
|
||||
|
||||
if (sizeof($documenti) > 0) {
|
||||
echo "<br/><table cellspacing='0' class='table-striped table-bordered' >\n";
|
||||
echo "<br/><table class='table table-striped table-bordered table-extra-condensed' >\n";
|
||||
echo "<tr><th width='180'>Documento</th>\n";
|
||||
echo "<th width='100' class='text-right' >Totale</th></tr>\n";
|
||||
|
||||
@ -140,14 +140,6 @@ switch ($resource) {
|
||||
]);
|
||||
$results = $database->fetchArray($query_anagrafica);
|
||||
|
||||
// Lettura dei prezzi relativi all'articolo, senza anagrafica collegata
|
||||
if (empty($results)) {
|
||||
$query_predefinito = replace($query, [
|
||||
'|where|' => '',
|
||||
]);
|
||||
$results = $database->fetchArray($query_predefinito);
|
||||
}
|
||||
|
||||
// Lettura dei prezzi registrati direttamente sull'articolo, per compatibilità con il formato standard
|
||||
if (empty($results)) {
|
||||
$result = $database->fetchOne('SELECT prezzo_acquisto, '.($prezzi_ivati ? 'prezzo_vendita_ivato' : 'prezzo_vendita').' AS prezzo_vendita FROM mg_articoli WHERE id = '.prepare($id_articolo));
|
||||
|
@ -79,6 +79,7 @@ switch ($resource) {
|
||||
mg_articoli.idconto_acquisto,
|
||||
categoria.`nome` AS categoria,
|
||||
sottocategoria.`nome` AS sottocategoria,
|
||||
(SUM((co_righe_documenti.prezzo_unitario-co_righe_documenti.sconto_unitario)*co_righe_documenti.qta)/SUM(co_righe_documenti.qta)) AS media_ponderata,
|
||||
|
||||
CONCAT(conto_vendita_categoria .numero, '.', conto_vendita_sottocategoria.numero, ' ', conto_vendita_sottocategoria.descrizione) AS idconto_vendita_title,
|
||||
CONCAT(conto_acquisto_categoria .numero, '.', conto_acquisto_sottocategoria.numero, ' ', conto_acquisto_sottocategoria.descrizione) AS idconto_acquisto_title
|
||||
@ -91,6 +92,9 @@ switch ($resource) {
|
||||
LEFT JOIN co_pianodeiconti3 AS conto_acquisto_sottocategoria ON conto_acquisto_sottocategoria.id=mg_articoli.idconto_acquisto
|
||||
LEFT JOIN co_pianodeiconti2 AS conto_acquisto_categoria ON conto_acquisto_sottocategoria.idpianodeiconti2=conto_acquisto_categoria.id
|
||||
|
||||
LEFT JOIN co_righe_documenti ON co_righe_documenti.idarticolo=mg_articoli.id
|
||||
LEFT JOIN co_documenti ON co_documenti.id=co_righe_documenti.iddocumento
|
||||
LEFT JOIN co_tipidocumento ON co_tipidocumento.id=co_documenti.idtipodocumento
|
||||
LEFT JOIN co_iva AS iva_articolo ON iva_articolo.id = mg_articoli.idiva_vendita
|
||||
LEFT JOIN co_iva AS iva_predefinita ON iva_predefinita.id = (SELECT valore FROM zz_settings WHERE nome = 'Iva predefinita')";
|
||||
|
||||
@ -133,6 +137,7 @@ switch ($resource) {
|
||||
|
||||
$where[] = 'mg_articoli.attivo = 1';
|
||||
$where[] = 'mg_articoli.deleted_at IS NULL';
|
||||
$where[] = '(co_tipidocumento.dir="uscita" OR co_tipidocumento.dir IS NULL)';
|
||||
|
||||
if (!empty($search)) {
|
||||
$search_fields[] = 'mg_articoli.descrizione LIKE '.prepare('%'.$search.'%');
|
||||
|
@ -214,6 +214,29 @@ switch (post('op')) {
|
||||
flash()->warning(tr('Nessun articolo modificato!'));
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case 'set-acquisto-ifzero':
|
||||
$n_art = 0;
|
||||
foreach ($id_records as $id) {
|
||||
$articolo = Articolo::find($id);
|
||||
|
||||
if ($articolo->prezzo_acquisto==0 && empty($articolo->idfornitore)) {
|
||||
$new_prezzo_acquisto = $dbo->fetchOne('SELECT (prezzo_unitario-sconto_unitario) AS prezzo_acquisto FROM co_righe_documenti LEFT JOIN co_documenti ON co_righe_documenti.iddocumento=co_documenti.id LEFT JOIN co_tipidocumento ON co_tipidocumento.id=co_documenti.idtipodocumento WHERE idarticolo='.prepare($id).' AND dir="uscita" ORDER BY co_documenti.data DESC, co_righe_documenti.id DESC LIMIT 0,1')['prezzo_acquisto'];
|
||||
|
||||
$articolo->prezzo_acquisto = $new_prezzo_acquisto;
|
||||
$articolo->save();
|
||||
|
||||
if ($new_prezzo_acquisto!=0) {
|
||||
$n_art++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
flash()->info(tr('Prezzi di acquisto aggiornati per _NUM_ articoli!', [
|
||||
'_NUM_' => $n_art,
|
||||
]));
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
@ -322,4 +345,15 @@ $operations['change-iva'] = [
|
||||
],
|
||||
];
|
||||
|
||||
$operations['set-acquisto-ifzero'] = [
|
||||
'text' => '<span><i class="fa fa-refresh"></i> '.tr('Imposta prezzo di acquisto da fattura ').'</span>',
|
||||
'data' => [
|
||||
'title' => tr('Impostare il prezzo di acquisto per gli articoli selezionati?'),
|
||||
'msg' => 'Il prezzo di acquisto verrà impostato sugli articoli che non hanno nessun prezzo di acquisto inserito e verrà aggiornato in base alla fattura di acquisto più recente',
|
||||
'button' => tr('Procedi'),
|
||||
'class' => 'btn btn-lg btn-warning',
|
||||
'blank' => false,
|
||||
],
|
||||
];
|
||||
|
||||
return $operations;
|
||||
|
@ -173,7 +173,7 @@ include_once __DIR__.'/../../core.php';
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
{[ "type": "select", "label": "<?php echo tr('Fornitore predefinito'); ?>", "name": "id_fornitore", "ajax-source": "fornitori-articolo", "select-options": <?php echo json_encode(['id_articolo' => $id_record]); ?>, "value":"$id_fornitore$", "help": "<?php echo tr('Fornitore predefinito selezionabile tra i fornitori presenti nel plugin \"Prezzi di listino\"'); ?>." ]}
|
||||
{[ "type": "select", "label": "<?php echo tr('Fornitore predefinito'); ?>", "name": "id_fornitore", "ajax-source": "fornitori-articolo", "select-options": <?php echo json_encode(['id_articolo' => $id_record]); ?>, "value":"$id_fornitore$", "help": "<?php echo tr('Fornitore predefinito selezionabile tra i fornitori presenti nel plugin \"Listino fornitori\"'); ?>." ]}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -237,8 +237,8 @@ if (file_exists($backup_dir)) {
|
||||
<a class="btn btn-primary" href="'.base_path().'/modules/backups/actions.php?op=getfile&number='.$id.'" target="_blank"><i class="fa fa-download"></i> '.tr('Scarica').'</a>
|
||||
|
||||
<div class="pull-right">
|
||||
<a class="btn btn-warning ask" data-backto="record-edit" data-method="post" data-op="restore" data-number="'.$id.'" data-msg="'.tr('Vuoi ripristinare questo backup?').'" data-button="Ripristina" data-class="btn btn-lg btn-warning">
|
||||
<i class="fa fa-upload"></i>
|
||||
<a class="btn btn-warning ask" data-backto="record-edit" data-method="post" data-op="restore" data-number="'.$id.'" data-msg="'.tr('Clicca su Ripristina per ripristinare questo backup').'" data-button="Ripristina" data-class="btn btn-lg btn-warning">
|
||||
<i class="fa fa-upload"></i> '.tr('Ripristina').'
|
||||
</a>
|
||||
|
||||
<a class="btn btn-danger ask" title="'.tr('Elimina backup').'" data-backto="record-list" data-op="del" data-number="'.$id.'">
|
||||
|
@ -36,6 +36,7 @@ switch (post('op')) {
|
||||
$dbo->update('do_documenti', [
|
||||
'idcategoria' => post('idcategoria'),
|
||||
'nome' => post('nome'),
|
||||
'descrizione' => post('descrizione', true) ?: null,
|
||||
'data' => post('data') ?: null,
|
||||
], ['id' => $id_record]);
|
||||
|
||||
|
@ -37,8 +37,6 @@ include_once __DIR__.'/../../core.php';
|
||||
{[ "type": "text", "label": "Nome", "name": "nome", "required": 1, "value": "$nome$", "extra": "" ]}
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="col-md-3">
|
||||
{[ "type": "select", "label": "Categoria", "name": "idcategoria", "required": 1, "ajax-source": "categorie_documenti", "value": "$idcategoria$", "extra": "" ]}
|
||||
</div>
|
||||
@ -49,6 +47,12 @@ include_once __DIR__.'/../../core.php';
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
{[ "type": "ckeditor", "use_full_ckeditor": 1, "label": "<?php echo tr('Descrizione'); ?>", "name": "descrizione", "value": "$descrizione$" ]}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -43,7 +43,7 @@ $id_anagrafica = filter('id_anagrafica');
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
{[ "type": "select", "label": "<?php echo tr('Tecnico assegnato'); ?>", "name": "idtecnico", "ajax-source": "tecnici" ]}
|
||||
{[ "type": "select", "label": "<?php echo tr('Tecnico assegnato'); ?>", "name": "idtecnico", "ajax-source": "tecnici", "icon-after": "add|<?php echo Modules::get('Anagrafiche')['id']; ?>|tipoanagrafica=Tecnico&readonly_tipo=1" ]}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -213,7 +213,7 @@ echo '
|
||||
$espandi_dettagli = setting('Espandi automaticamente la sezione "Dettagli aggiuntivi"');
|
||||
echo '
|
||||
<!-- DATI AGGIUNTIVI -->
|
||||
<div class="box box-warning collapsable '.(empty($espandi_dettagli) ? 'collapsed-box' : '').'">
|
||||
<div class="box box-info collapsable '.(empty($espandi_dettagli) ? 'collapsed-box' : '').'">
|
||||
<div class="box-header with-border">
|
||||
<h3 class="box-title">'.tr('Dettagli aggiuntivi').'</h3>
|
||||
<div class="box-tools pull-right">
|
||||
@ -277,10 +277,10 @@ if (empty($id_intervento)) {
|
||||
}
|
||||
|
||||
echo '
|
||||
<!-- ORE DI LAVORO -->
|
||||
<div class="box box-primary collapsable '.($origine_dashboard ? '' : 'collapsed-box').'">
|
||||
<!-- ORE LAVORO -->
|
||||
<div class="box box-info collapsable '.($origine_dashboard ? '' : 'collapsed-box').'">
|
||||
<div class="box-header with-border">
|
||||
<h3 class="box-title">'.tr('Ore di lavoro').'</h3>
|
||||
<h3 class="box-title">'.tr('Ore lavoro').'</h3>
|
||||
<div class="box-tools pull-right">
|
||||
<button type="button" class="btn btn-box-tool" data-widget="collapse">
|
||||
<i class="fa fa-'.($origine_dashboard ? 'minus' : 'plus').'"></i>
|
||||
@ -315,7 +315,7 @@ echo '
|
||||
</div>
|
||||
|
||||
<!-- RICORRENZA -->
|
||||
<div class="box box-warning collapsable collapsed-box">
|
||||
<div class="box box-info collapsable collapsed-box">
|
||||
<div class="box-header with-border">
|
||||
<h3 class="box-title">'.tr('Ricorrenza').'</h3>
|
||||
<div class="box-tools pull-right">
|
||||
@ -328,7 +328,7 @@ echo '
|
||||
<div class="box-body">
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
{[ "type": "checkbox", "label": "'.tr('Ricorsiva').'", "name": "ricorsiva", "value": "" ]}
|
||||
{[ "type": "checkbox", "label": "'.tr('Attività ricorrente').'", "name": "ricorsiva", "value": "" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-4 ricorrenza">
|
||||
@ -367,7 +367,7 @@ echo '
|
||||
</div>
|
||||
|
||||
<!-- DETTAGLI CLIENTE -->
|
||||
<div class="box box-success collapsable collapsed-box">
|
||||
<div class="box box-info collapsable collapsed-box">
|
||||
<div class="box-header with-border">
|
||||
<h3 class="box-title">'.tr('Dettagli cliente').'</h3>
|
||||
<div class="box-tools pull-right">
|
||||
@ -378,7 +378,7 @@ echo '
|
||||
</div>
|
||||
|
||||
<div class="box-body" id="dettagli_cliente">
|
||||
'.tr('Prima seleziona un cliente').'...
|
||||
'.tr('Seleziona prima un cliente').'...
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -381,7 +381,7 @@ echo '
|
||||
<!-- ORE LAVORO -->
|
||||
<div class="panel panel-primary">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title"><?php echo tr('Ore di lavoro'); ?></h3>
|
||||
<h3 class="panel-title"><?php echo tr('Ore lavoro'); ?></h3>
|
||||
</div>
|
||||
|
||||
<div class="panel-body">
|
||||
|
@ -46,7 +46,7 @@ switch (filter('op')) {
|
||||
$newsletter->completed_at = filter('completed_at');
|
||||
|
||||
$newsletter->subject = filter('subject');
|
||||
$newsletter->content = $_POST['content']; //filter('content');
|
||||
$newsletter->content = post('content', true); //filter('content');
|
||||
|
||||
$newsletter->save();
|
||||
|
||||
|
@ -32,7 +32,6 @@ if ($bilancio_gia_aperto) {
|
||||
|
||||
echo '
|
||||
<div class="text-right">
|
||||
<button type="button" class="btn btn-lg btn-info" data-toggle="modal" data-title="'.tr('Stampa Bilancio').'" data-href="'.base_path().'/modules/partitario/stampa_bilancio.php" ><i class="fa fa-print"></i> '.tr('Stampa Bilancio').'</button>
|
||||
<button type="button" class="btn btn-lg '.$btn_class.'" data-op="apri-bilancio" data-title="'.tr('Apertura bilancio').'" data-backto="record-list" data-msg="'.$msg.'" data-button="'.tr('Riprendi saldi').'" data-class="btn btn-lg btn-warning" onclick="message( this );">
|
||||
<i class="fa fa-folder-open"></i> '.tr('Apertura bilancio').'
|
||||
</button>
|
||||
@ -60,9 +59,6 @@ foreach ($primo_livello as $conto_primo) {
|
||||
<i class="fa fa-plus-circle"></i>
|
||||
</button>
|
||||
</h3>
|
||||
<div class="pull-right">
|
||||
'.Prints::getLink('Mastrino', $conto_primo['id'], null, tr('Stampa'), null, 'lev=1').'
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="box-body">';
|
||||
|
@ -74,4 +74,22 @@ echo '
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
<div class="panel panel-primary">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">'.tr('Piano dei conti').'</h3>
|
||||
</div>
|
||||
|
||||
<div class="panel-body">
|
||||
<button type="button" class="btn btn-primary col-md-2" data-toggle="modal" data-title="'.tr('Stampa Bilancio').'" data-href="'.base_path().'/modules/stampe_contabili/stampa_bilancio.php" ><i class="fa fa-print fa-2x"></i> <br>'.tr('Stampa').'<br>'.tr('bilancio').'</button>
|
||||
|
||||
'.Prints::getLink('Mastrino', 1, 'btn-primary col-md-4 col-md-push-1', '<br>'.tr('Stampa situazione').'<br>'.tr('patrimoniale'), '|default| fa-2x', 'lev=1').'
|
||||
|
||||
'.Prints::getLink('Mastrino', 2, 'btn-primary col-md-4 col-md-push-2', '<br>'.tr('Stampa situazione').'<br>'.tr('economica'), '|default| fa-2x', 'lev=1').'
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>';
|
||||
|
@ -49,6 +49,7 @@ if (Services::isEnabled()) {
|
||||
<th width="50%">'.tr('Nome').'</th>
|
||||
<th>'.tr('Tipo').'</th>
|
||||
<th width="30%">'.tr('Scadenza').'</th>
|
||||
<th width="10%" class="text-center" >'.tr('#').'</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
@ -61,11 +62,28 @@ if (Services::isEnabled()) {
|
||||
<td>'.$servizio['codice'].' - '.$servizio['nome'].'</td>
|
||||
<td>'.$servizio['sottocategoria'].'</td>
|
||||
<td>'.dateFormat($scadenza).' ('.$scadenza->diffForHumans().')</td>
|
||||
<td class="text-center" >
|
||||
<input type="checkbox" class="check_rinnova '.($scadenza->lessThan($limite_scadenze) ? "" : "hide").'" name="rinnova[]" value="'.$servizio['codice'].'">
|
||||
</td>
|
||||
</tr>';
|
||||
}
|
||||
|
||||
|
||||
$servizi_in_scadenza = Services::getServiziInScadenza($limite_scadenze);
|
||||
$servizi_scaduti = Services::getServiziScaduti();
|
||||
if (!$servizi_in_scadenza->isEmpty() || !$servizi_scaduti->isEmpty()){
|
||||
//TODO: Il tasto deve preparare correttamente il carrello con servizi e le risorse in scadenza, considerando anche eventuali ampliamenti (es. spazio FE esaurito o in esaurimento)
|
||||
echo ' </tbody>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
<a type="button" href="https://marketplace.devcode.it/" target="_blank" id="btn_rinnova" class="btn btn-xs btn-primary pull-right disabled" ><i class="fa fa-shopping-cart"></i> '.tr('Rinnova').'</a>
|
||||
</td>
|
||||
</tr>
|
||||
</tfoot>';
|
||||
}
|
||||
|
||||
echo '
|
||||
</tbody>
|
||||
</table>';
|
||||
} else {
|
||||
echo '
|
||||
@ -98,26 +116,26 @@ if (Services::isEnabled()) {
|
||||
|
||||
if (!$risorse_in_scadenza->isEmpty() || !$risorse_scadute->isEmpty() ) {
|
||||
|
||||
if (!$risorse_scadute->isEmpty()){
|
||||
echo '
|
||||
<div class="alert alert-danger" role="alert"> <i class="fa fa-exclamation-triangle"></i> '.tr('Attenzione, alcune risorse sono scadute o hanno esaurito i crediti:', [
|
||||
'_NUM_' => $risorse_scadute->count(),
|
||||
]).'</div>';
|
||||
}
|
||||
|
||||
if (!$risorse_in_scadenza->isEmpty()){
|
||||
echo '
|
||||
<div class="alert alert-warning" role="alert"> <i class="fa fa-clock-o"></i> '.tr('Attenzione, _NUM_ risorse sono in scadenza o stanno per esaurire i crediti:', [
|
||||
<div class="alert alert-warning" role="alert"> <i class="fa fa-clock-o"></i> '.tr('Attenzione, alcune risorse sono in scadenza o stanno per esaurire i crediti:', [
|
||||
'_NUM_' => $risorse_in_scadenza->count(),
|
||||
]).'</div>';
|
||||
|
||||
}
|
||||
|
||||
if (!$risorse_scadute->isEmpty()){
|
||||
echo '
|
||||
<div class="alert alert-danger" role="alert"> <i class="fa fa-exclamation-triangle"></i> '.tr('Attenzione, _NUM_ risorse sono scadute o hanno esaurito i crediti:', [
|
||||
'_NUM_' => $risorse_scadute->count(),
|
||||
]).'</div>';
|
||||
}
|
||||
|
||||
} else {
|
||||
echo '
|
||||
/*echo '
|
||||
<div class="alert alert-success" role="alert"> <i class="fa fa-check-circle"></i> '.tr('Bene, tutte le risorse sono attive e non presentano avvisi:', [
|
||||
'_NUM_' => $risorse_attive->count(),
|
||||
]).'</div>';
|
||||
]).'</div>';*/
|
||||
}
|
||||
|
||||
echo '
|
||||
@ -137,8 +155,8 @@ if (Services::isEnabled()) {
|
||||
echo '
|
||||
<tr class="'.($scadenza->lessThan(Carbon::now()) ? 'danger' : ($scadenza->lessThan($limite_scadenze) ? 'warning' : '')).'">
|
||||
<td>'.$servizio['name'].'</td>
|
||||
<td>'.(($servizio['credits'] < 100 && $servizio['credits']) ? '<b><i class="fa fa-icon fa-warning" ></i>' : '').(($servizio['credits']) ? $servizio['credits'] : '-').(($servizio['credits'] < 100 && $servizio['credits']) ? '</b>' : '').'</td>
|
||||
<td>'.((Carbon::now()->diffInDays($scadenza, false) < $days && $scadenza) ? '<b><i class="fa fa-icon fa-warning" ></i>' : '').dateFormat($scadenza).' ('.$scadenza->diffForHumans().')'.((Carbon::now()->diffInDays($scadenza, false) < $days && $scadenza) ? '</b>' : '').'</td>
|
||||
<td>'.(($servizio['credits'] < 100 && $servizio['credits'] !== null) ? '<b><i class="fa fa-icon fa-warning text-warning" ></i> ' : '').(($servizio['credits'] !== null) ? $servizio['credits'] : '-').(($servizio['credits'] < 100 && $servizio['credits'] !== null) ? '</b>' : '').'</td>
|
||||
<td>'.((Carbon::now()->diffInDays($scadenza, false) < $days && $scadenza) ? '<b><i class="fa fa-icon fa-warning text-warning" ></i> ' : '').dateFormat($scadenza).' ('.$scadenza->diffForHumans().')'.((Carbon::now()->diffInDays($scadenza, false) < $days && $scadenza) ? '</b>' : '').'</td>
|
||||
</tr>';
|
||||
}
|
||||
|
||||
@ -150,26 +168,26 @@ if (Services::isEnabled()) {
|
||||
if (Services::getRisorseAttive()->where('name', 'Fatturazione Elettronica')->count()) {
|
||||
echo '
|
||||
|
||||
<div class="panel panel-info">
|
||||
<div class="panel panel-primary">
|
||||
<div class="panel-heading" > <i class="fa fa-bar-chart"></i> '.tr('Statistiche su Fatture Elettroniche').'</div>
|
||||
|
||||
<div class="panel-body">
|
||||
|
||||
<div class="alert hidden" role="alert" id="spazio-fe">
|
||||
<i id="spazio-fe-icon" class=""></i> <span>'.tr('Spazio per fatture elettroniche _TEXT_: _NUM_ utilizzati su _TOT_ disponibili', [
|
||||
<i id="spazio-fe-icon" class=""></i> <span>'.tr('Attenzione, spazio per fatture elettroniche _TEXT_: _NUM_ utilizzati su _TOT_ disponibili', [
|
||||
'_TEXT_' => '<span id="spazio-fe-text"></span>',
|
||||
'_NUM_' => '<span id="spazio-fe-occupato"></span>',
|
||||
'_TOT_' => '<span id="spazio-fe-totale"></span>',
|
||||
]).'.<br>'.tr("Contatta l'assistenza per risolvere il problema").'</span>.
|
||||
]).'.<br>'.tr("Contattare l'assistenza per risolvere il problema").'</span>.
|
||||
</div>
|
||||
|
||||
|
||||
<div class="alert hidden" role="alert" id="numero-fe">
|
||||
<i id="numero-fe-icon" class=""></i> <span>'.tr('Numero di fatture elettroniche per l\'annualità _TEXT_: _NUM_ documenti transitati su _TOT_ disponibili', [
|
||||
<i id="numero-fe-icon" class=""></i> <span>'.tr('Attenzione, numero di fatture elettroniche per l\'annualità _TEXT_: _NUM_ documenti transitati su _TOT_ disponibili', [
|
||||
'_TEXT_' => '<span id="numero-fe-text"></span>',
|
||||
'_NUM_' => '<span id="numero-fe-occupato"></span>',
|
||||
'_TOT_' => '<span id="numero-fe-totale"></span>',
|
||||
]).'.<br>'.tr("Contatta l'assistenza per risolvere il problema").'</span>.
|
||||
]).'.<br>'.tr("Contattare l'assistenza per risolvere il problema").'</span>.
|
||||
</div>
|
||||
|
||||
|
||||
@ -178,14 +196,14 @@ if (Services::isEnabled()) {
|
||||
<tr>
|
||||
<th>'.tr('Anno').'</th>
|
||||
<th>
|
||||
'.tr('Documenti archiviati').'
|
||||
'.tr('N. documenti archiviati').'
|
||||
<span class="tip" title="'.tr('Fatture attive e relative ricevute, fatture passive').'.">
|
||||
<i class="fa fa-question-circle-o"></i>
|
||||
</span>
|
||||
</th>
|
||||
|
||||
<th>
|
||||
'.tr('Totale spazio occupato').'
|
||||
'.tr('Spazio utilizzato').'
|
||||
<span class="tip" title="'.tr('Fatture attive con eventuali allegati e ricevute, fatture passive con eventuali allegati').'.">
|
||||
<i class="fa fa-question-circle-o"></i>
|
||||
</span>
|
||||
@ -193,13 +211,13 @@ if (Services::isEnabled()) {
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody id="elenco-fe">
|
||||
<tfoot id="elenco-fe">
|
||||
<tr style="background-color:#CCCCCC;" >
|
||||
<td>'.tr('Totale').'</td>
|
||||
<td id="fe_numero"></td>
|
||||
<td id="fe_spazio"></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</tfoot>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
@ -263,6 +281,24 @@ echo '
|
||||
</div>
|
||||
|
||||
<script>
|
||||
|
||||
$(".check_rinnova").each(function() {
|
||||
|
||||
var len = 0;
|
||||
|
||||
input(this).change(function() {
|
||||
|
||||
len = $("input[type=checkbox]:checked.check_rinnova").length;
|
||||
|
||||
if (len>0){
|
||||
$("#btn_rinnova").removeClass("disabled");
|
||||
}else{
|
||||
$("#btn_rinnova").addClass("disabled");
|
||||
}
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
function aggiornaStatisticheFE(){
|
||||
$.ajax({
|
||||
url: globals.rootdir + "/actions.php",
|
||||
@ -277,35 +313,39 @@ function aggiornaStatisticheFE(){
|
||||
|
||||
$("#fe_spazio").html(response.spazio_occupato);
|
||||
|
||||
if (response.spazio_totale){
|
||||
$("#fe_spazio").html($("#fe_spazio").html() + " / " + response.spazio_totale);
|
||||
|
||||
if (response.spazio_occupato>response.spazio_totale && response.avviso_spazio){
|
||||
$("#fe_spazio").html("<span style=\"font-weight:bold;\" ><i class=\"fa fa-warning\" ></i> " + $("#fe_spazio").html() + "</span>");
|
||||
}
|
||||
}
|
||||
|
||||
// Informazioni sullo spazio occupato
|
||||
$("#spazio-fe-occupato").html(response.spazio_occupato);
|
||||
$("#spazio-fe-totale").html(response.spazio_totale);
|
||||
|
||||
if (response.avviso_spazio) {
|
||||
|
||||
$("#spazio-fe").removeClass("hidden");
|
||||
$("input.check_rinnova").addClass("disabled");
|
||||
|
||||
response.spazio_occupato = parseFloat(response.spazio_occupato);
|
||||
response.spazio_totale = parseFloat(response.spazio_totale);
|
||||
|
||||
if (response.spazio_totale){
|
||||
$("#fe_spazio").html($("#fe_spazio").html() + " / " + response.spazio_totale);
|
||||
|
||||
if (response.spazio_occupato>response.spazio_totale && response.avviso_spazio){
|
||||
$("#fe_spazio").html("<span style=\"font-weight:bold;\" ><i class=\"fa fa-warning text-warning\" ></i> " + $("#fe_spazio").html() + "</span>");
|
||||
}
|
||||
}
|
||||
|
||||
if (response.spazio_occupato<response.spazio_totale){
|
||||
$("#spazio-fe-icon").addClass("fa fa-warning");
|
||||
$("#spazio-fe-icon").addClass("fa fa-clock-o");
|
||||
$("#spazio-fe").addClass("alert-warning");
|
||||
$("#spazio-fe-text").html("'.tr('in esaurimento').'");
|
||||
}
|
||||
else if (response.spazio_occupato>=response.spazio_totale){
|
||||
$("#spazio-fe-icon").addClass("fa fa-times");
|
||||
$("#spazio-fe-icon").addClass("fa fa-warning");
|
||||
$("#spazio-fe").addClass("alert-danger");
|
||||
$("#spazio-fe-text").html("'.tr('terminato').'");
|
||||
}
|
||||
}
|
||||
|
||||
if (response.history.length) {
|
||||
|
||||
|
||||
for (let i = 0; i < response.history.length; i++) {
|
||||
|
||||
@ -319,7 +359,7 @@ function aggiornaStatisticheFE(){
|
||||
data["number"] = number + " / " + response.maxNumber;
|
||||
|
||||
if (response.avviso_numero)
|
||||
data["number"] = "<span style=\"font-weight:bold;\" > <i class=\"fa fa-warning\" ></i> " + data["number"] + "</span>";
|
||||
data["number"] = "<span style=\"font-weight:bold;\" > <i class=\"fa fa-warning text-warning\" ></i> " + data["number"] + "</span>";
|
||||
|
||||
$("#numero-fe-occupato").html(number);
|
||||
$("#numero-fe-totale").html(response.maxNumber);
|
||||
@ -327,21 +367,21 @@ function aggiornaStatisticheFE(){
|
||||
if (response.avviso_numero) {
|
||||
|
||||
$("#numero-fe").removeClass("hidden");
|
||||
$("input.check_rinnova").addClass("disabled");
|
||||
|
||||
if (number<response.maxNumber){
|
||||
$("#numero-fe-icon").addClass("fa fa-warning");
|
||||
$("#numero-fe-icon").addClass("fa fa-clock-o");
|
||||
$("#numero-fe").addClass("alert-warning");
|
||||
$("#numero-fe-text").html("'.tr('in esaurimento').'");
|
||||
}
|
||||
else if (number>=response.maxNumber){
|
||||
$("#numero-fe-icon").addClass("fa fa-times");
|
||||
$("#numero-fe-icon").addClass("fa fa-warning");
|
||||
$("#numero-fe").addClass("alert-danger");
|
||||
$("#numero-fe-text").html("'.tr('esaurito').'");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}else{
|
||||
var highlight = "<tr>";
|
||||
}
|
||||
|
@ -20,7 +20,7 @@
|
||||
"dropzone": "^5.7.2",
|
||||
"eonasdan-bootstrap-datetimepicker": "^4.17.47",
|
||||
"font-awesome": "^4.7.0",
|
||||
"fullcalendar": "^3.4.0",
|
||||
"fullcalendar": "^3.10.4",
|
||||
"geocomplete": "^1.7.0",
|
||||
"hotkeys-js": "^3.8.5",
|
||||
"html5sortable": "^0.13.2",
|
||||
|
@ -60,9 +60,9 @@ echo '
|
||||
<th class="text-center col-md-4">'.($direzione == 'entrata' ? tr('Cliente') : tr('Fornitore')).'</th>
|
||||
<th class="text-center col-md-4">'.tr('Prezzo predefinito').'</th>';
|
||||
if ($direzione == 'uscita') {
|
||||
echo '<th class="text-center col-md-4">'.tr('Fornitore predefinito').'</th>';
|
||||
echo '<th class="text-center col-md-4">'.tr('E\' il fornitore predefinito?').'</th>';
|
||||
} else {
|
||||
echo '<th class="text-center col-md-4"></th>';
|
||||
echo '<th class="text-center col-md-4">'.tr('Fornitore predefinito').'</th>';
|
||||
}
|
||||
echo '
|
||||
</tr>
|
||||
@ -72,7 +72,7 @@ echo '
|
||||
if ($direzione == 'uscita') {
|
||||
echo '<td class="text-center"><i class="fa fa-'.$icon.' text-'.$color.'"></i> '.$text.'</td>';
|
||||
} else {
|
||||
echo '<td></td>';
|
||||
echo '<td class="text-center">'.(!empty($articolo->id_fornitore) ? Anagrafica::find($articolo->id_fornitore)->ragione_sociale : tr('Nessuno')).'</td>';
|
||||
}
|
||||
echo '
|
||||
</tr>
|
||||
@ -89,7 +89,7 @@ echo '
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
{[ "type": "checkbox", "label": "'.tr('Imposta prezzo per questa anagrafica').'", "name": "modifica_prezzi", "value": "'.intval(!empty($dettaglio_predefinito)).'" ]}
|
||||
{[ "type": "checkbox", "label": "'.tr('Imposta prezzo specifico per questa anagrafica').'", "name": "modifica_prezzi", "value": "'.intval(!empty($dettaglio_predefinito)).'" ]}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -97,6 +97,7 @@ echo '
|
||||
<div class="info_prezzi">
|
||||
<div class="col-md-4">
|
||||
{[ "type": "number", "label": "'.tr('Prezzo specifico').'", "name": "prezzo_unitario_fisso", "value": "'.($prezzi_ivati ? $dettaglio_predefinito->prezzo_unitario_ivato : $dettaglio_predefinito->prezzo_unitario).'", "icon-after": "'.currency().'", "help": "'.($prezzi_ivati ? tr('Importo IVA inclusa') : '').'" ]}
|
||||
<button type="button" style="margin-top:-10px;" class="btn btn-xs btn-info pull-right '.($prezzo_predefinito>0 ? "" : "disabled").'" onclick="copiaPrezzoPredefinito()"><i class="fa fa-refresh"></i> '.tr('Importa').'</button>
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
@ -107,7 +108,7 @@ echo '
|
||||
|
||||
<div class="row">
|
||||
<div id="imposta_prezzo_qta" class="col-md-4">
|
||||
{[ "type": "checkbox", "label": "'.tr('Imposta un prezzo in base alla quantità').'", "name": "prezzo_qta", "value": "'.intval($dettagli->count() != 0).'" ]}
|
||||
{[ "type": "checkbox", "label": "'.tr('Imposta prezzo in base alla quantità').'", "name": "prezzo_qta", "value": "'.intval($dettagli->count() != 0).'" ]}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -214,6 +215,11 @@ echo '
|
||||
<script>$(document).ready(init);</script>
|
||||
|
||||
<script>
|
||||
|
||||
function copiaPrezzoPredefinito() {
|
||||
$("#prezzo_unitario_fisso").val('.$prezzo_predefinito.').trigger("change");
|
||||
}
|
||||
|
||||
var key = '.$dettagli->count().';
|
||||
function aggiungiPrezzo(button) {
|
||||
cleanup_inputs();
|
||||
@ -266,5 +272,5 @@ input("prezzo_qta").change(function () {
|
||||
})
|
||||
|
||||
$(document).ready(cambioImpostazioni);
|
||||
content_was_modified = false;
|
||||
content_was_modified = false;
|
||||
</script>';
|
||||
|
@ -23,6 +23,7 @@ use Plugins\ListinoClienti\DettaglioPrezzo;
|
||||
include_once __DIR__.'/../../core.php';
|
||||
|
||||
$id_articolo = $id_record;
|
||||
|
||||
echo '
|
||||
<div class="box">
|
||||
<div class="box-header">
|
||||
@ -32,7 +33,7 @@ echo '
|
||||
<div class="box-body">
|
||||
<div class="row">
|
||||
<div class="col-md-9">
|
||||
{[ "type": "select", "label": "'.tr('Cliente').'", "name": "id_cliente_informazioni", "required":"1", "ajax-source": "clienti" ]}
|
||||
{[ "type": "select", "label": "'.tr('Cliente').'", "name": "id_cliente_informazioni", "required":"1", "ajax-source": "clienti", "icon-after": "add|'.Modules::get('Anagrafiche')['id'].'|tipoanagrafica=Cliente&readonly_tipo=1" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-3">
|
||||
|
@ -38,9 +38,9 @@ if (!empty($id_riga)) {
|
||||
}
|
||||
|
||||
echo '
|
||||
<p>'.tr('Informazioni relative al fornitore _NAME_', [
|
||||
'_NAME_' => $anagrafica->ragione_sociale,
|
||||
]).'.</p>
|
||||
<p>'.tr('Informazioni relative al fornitore: _NAME_', [
|
||||
'_NAME_' => '<b>'.$anagrafica->ragione_sociale.'</b>',
|
||||
]).'</p>
|
||||
|
||||
<form action="" method="post">
|
||||
<input type="hidden" name="backto" value="record-edit">
|
||||
|
@ -32,7 +32,7 @@ echo '
|
||||
<div class="box-body">
|
||||
<div class="row">
|
||||
<div class="col-md-9">
|
||||
{[ "type": "select", "label": "'.tr('Fornitore').'", "name": "id_fornitore_informazioni", "required":"1", "ajax-source": "fornitori" ]}
|
||||
{[ "type": "select", "label": "'.tr('Fornitore').'", "name": "id_fornitore_informazioni", "required":"1", "ajax-source": "fornitori","icon-after": "add|'.Modules::get('Anagrafiche')['id'].'|tipoanagrafica=Fornitore&readonly_tipo=1" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-3">
|
||||
|
@ -55,10 +55,10 @@ echo '
|
||||
{[ "type": "select", "label": "'.tr('Ricorrenza fatturazione').'", "name": "scadenza", "values": "list=\"\":\"Seleziona un\'opzione\", \"Mensile\":\"Mensile\", \"Bimestrale\":\"Bimestrale\", \"Trimestrale\":\"Trimestrale\", \"Quadrimestrale\":\"Quadrimestrale\", \"Semestrale\":\"Semestrale\", \"Annuale\":\"Annuale\"", "value": "Mensile", "help":"'.tr('Specificare la cadenza con cui creare la pianificazione fatturazione').'" ]}
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
{[ "type": "select", "label": "'.tr('Giorno di fatturazione').'", "name": "cadenza_fatturazione", "values": "list=\"\":\"Seleziona un\'opzione\", \"Inizio\":\"Inizio mese\", \"Fine\":\"Fine mese\", \"Giorno\":\"Giorno fisso\" ", "value": "Inizio", "help":"'.tr('Specificare per la pianificazione fatturazione se si desidera creare le fatture a inizio mese o alla fine. Se non specificata alcuna opzione saranno create di default a fine mese.').'" ]}
|
||||
{[ "type": "select", "label": "'.tr('Giorno di fatturazione').'", "name": "cadenza_fatturazione", "values": "list=\"\":\"Seleziona un\'opzione\", \"Inizio\":\"Inizio mese\", \"Fine\":\"Fine mese\", \"Giorno\":\"Giorno fisso\" ", "value": "Inizio", "help":"'.tr('Specificare per la pianificazione fatturazione se si desidera creare le fatture ad inizio o alla fine del mese. Se non specificata alcuna opzione saranno create di default a fine mese.').'" ]}
|
||||
</div>
|
||||
<div class="col-md-3" id="div_giorno_fisso" hidden>
|
||||
{[ "type": "select", "label": "'.tr('Giorno fisso fatturazione').'", "name": "giorno_fisso", "values": '.json_encode($giorni_fatturazione).', "value": "1", "help":"'.tr('Selezionare il giorno fisso di fatturazione.').'" ]}
|
||||
<div class="col-md-3">
|
||||
{[ "type": "select", "label": "'.tr('Giorno fisso fatturazione').'", "disabled": 1, "name": "giorno_fisso", "id":"giorno_fisso", "values": '.json_encode($giorni_fatturazione).', "value": "", "help":"'.tr('Selezionare il giorno fisso di fatturazione.').'" ]}
|
||||
</div>
|
||||
<input type="hidden" name="data_inizio" value="'.$contratto->data_accettazione.'">
|
||||
</div>
|
||||
@ -127,16 +127,25 @@ foreach ($righe as $riga) {
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-9">
|
||||
{[ "type": "textarea", "label": "'.tr('Descrizione').'", "name": "descrizione['.$riga->id.']", "value": "'.$descrizione.'" ]}
|
||||
{[ "type": "textarea", "label": "'.tr('Descrizione').'", "name": "descrizione['.$riga->id.']", "value": "'.$descrizione.'", "extra": "rows=6" ]}
|
||||
|
||||
{[ "type": "number", "label": "'.tr('Q.tà per fattura').'", "class":"qta_fattura", "name": "qta['.$riga->id.']", "required": 1, "value": "1", "decimals": "qta", "min-value": "1", "icon-after":"'.tr('Su _TOT_', [
|
||||
{[ "type": "number", "label": "'.tr('Q.tà per fattura').'", "class":"qta_fattura", "name": "qta['.$riga->id.']", "required": 1, "value": "1", "decimals": "qta", "min-value": "1", "icon-after":"'.tr('su _TOT_ totali', [
|
||||
'_TOT_' => Translator::numberToLocale(($riga->qta - $riga->qta_evasa)),
|
||||
]).'", "options":"'.str_replace('"', '\"', $options).'" ]}
|
||||
</div>
|
||||
<div class="col-md-3" id="totali_'.$riga->id.'">
|
||||
</div>
|
||||
</div>
|
||||
<hr>';
|
||||
</div>';
|
||||
|
||||
|
||||
|
||||
echo ' <div class="label label-warning alert_rate hide">
|
||||
<i class="fa fa-warning"></i> <span>'.tr('Attenzione, sono previste _RATE_ rate su _TOT_ quantità totali', [
|
||||
'_RATE_' => '<span class="num_rate"></span>',
|
||||
'_TOT_' => '<span class="qta_disponibili">'.Translator::numberToLocale(($riga->qta - $riga->qta_evasa)).'</span>',
|
||||
]).'</span>.
|
||||
</div><hr>';
|
||||
|
||||
}
|
||||
|
||||
echo '
|
||||
@ -148,7 +157,7 @@ echo '
|
||||
echo '
|
||||
<div class="row">
|
||||
<div class="col-md-12 text-right">
|
||||
<button type="submit" class="btn btn-primary"><i class="fa fa-chevron-right"></i> '.tr('Procedi').'</button>
|
||||
<button type="submit" class="btn btn-primary" id="btn_procedi" ><i class="fa fa-chevron-right"></i> '.tr('Procedi').'</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -167,6 +176,7 @@ echo '
|
||||
get_prezzi();
|
||||
});
|
||||
|
||||
|
||||
$("#scadenza").change(function(){
|
||||
caricaCadenza();
|
||||
});
|
||||
@ -181,6 +191,20 @@ echo '
|
||||
});
|
||||
}
|
||||
|
||||
function controlloProcedi(){
|
||||
var len = 0;
|
||||
$(this).change(function() {
|
||||
|
||||
len = $("input[type=checkbox]:checked.check_periodo").length;
|
||||
|
||||
if (len>0){
|
||||
$("#btn_procedi").removeClass("disabled");
|
||||
}else{
|
||||
$("#btn_procedi").addClass("disabled");
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
function selezionaTutto(){
|
||||
var check = 0;
|
||||
@ -192,6 +216,17 @@ echo '
|
||||
});
|
||||
|
||||
$("#total_check").html("Rate: " + check).trigger("change");
|
||||
$(".num_rate").html(check).trigger("change");
|
||||
|
||||
var qta_disponibili = 0;
|
||||
$(".alert_rate").each(function (){
|
||||
qta_disponibili = parseFloat($(this).find(".qta_disponibili").text());
|
||||
if (check > qta_disponibili ){
|
||||
$(this).removeClass("hide");
|
||||
}else{
|
||||
$(this).addClass("hide");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function deselezionaTutto(){
|
||||
@ -204,6 +239,18 @@ echo '
|
||||
});
|
||||
|
||||
$("#total_check").html("Rate: " + check).trigger("change");
|
||||
$(".num_rate").html(check).trigger("change");
|
||||
|
||||
var qta_disponibili = 0;
|
||||
$(".alert_rate").each(function (){
|
||||
qta_disponibili = parseFloat($(this).find(".qta_disponibili").text());
|
||||
if (check > qta_disponibili ){
|
||||
$(this).removeClass("hide");
|
||||
}else{
|
||||
$(this).addClass("hide");
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
$(".qta_fattura").change(function(){
|
||||
@ -232,12 +279,14 @@ echo '
|
||||
});
|
||||
}
|
||||
|
||||
$("#cadenza_fatturazione").change(function(){
|
||||
$("#cadenza_fatturazione").change(function(event){
|
||||
event.preventDefault();
|
||||
if( $(this).val()=="Giorno" ){
|
||||
$("#div_giorno_fisso").show();
|
||||
$("#giorno_fisso").prop("required", true);
|
||||
input("giorno_fisso").enable();
|
||||
}else{
|
||||
$("#giorno_fisso").selectReset();
|
||||
$("#div_giorno_fisso").hide();
|
||||
$("#giorno_fisso").prop("required", false);
|
||||
input("giorno_fisso").disable();
|
||||
}
|
||||
})
|
||||
|
||||
|
@ -67,7 +67,7 @@ echo '
|
||||
echo '
|
||||
<div class="col-md-3">
|
||||
<label for="m_'.$count.'">
|
||||
<input type="checkbox" class="unblockable" id="m_'.$count.'" name="selezione_periodo['.$count.']" '.$checked.' />
|
||||
<input type="checkbox" onchange="controlloProcedi();" class="unblockable check_periodo" id="m_'.$count.'" name="selezione_periodo['.$count.']" '.$checked.' />
|
||||
'.ucfirst($data_corrente->formatLocalized('%B %Y')).'
|
||||
</label>
|
||||
<input type="hidden" name="periodo['.$count.']" value="'.$data.'">
|
||||
@ -89,6 +89,18 @@ echo '
|
||||
}
|
||||
});
|
||||
$("#total_check").html("Rate: " + check).trigger("change");
|
||||
$(".num_rate").html(check).trigger("change");
|
||||
|
||||
var qta_disponibili = 0;
|
||||
$(".alert_rate").each(function (){
|
||||
qta_disponibili = parseFloat($(this).find(".qta_disponibili").text());
|
||||
if (check > qta_disponibili ){
|
||||
$(this).removeClass("hide");
|
||||
}else{
|
||||
$(this).addClass("hide");
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
$("#periodi input").change(function(){
|
||||
@ -99,5 +111,17 @@ echo '
|
||||
}
|
||||
});
|
||||
$("#total_check").html("Rate: " + check).trigger("change");
|
||||
$(".num_rate").html(check).trigger("change");
|
||||
|
||||
var qta_disponibili = 0;
|
||||
$(".alert_rate").each(function (){
|
||||
qta_disponibili = parseFloat($(this).find(".qta_disponibili").text());
|
||||
if (check > qta_disponibili ){
|
||||
$(this).removeClass("hide");
|
||||
}else{
|
||||
$(this).addClass("hide");
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
</script>';
|
||||
|
@ -117,7 +117,7 @@ if (!$pianificazioni->isEmpty()) {
|
||||
} else {
|
||||
echo '
|
||||
<div class="alert alert-info">
|
||||
<i class="fa fa-info-circle"></i> '.tr('Pianificazione della fatturazione non impostata per questo contratto').'.
|
||||
<i class="fa fa-info-circle"></i> '.tr('Nessuna pianificazione della fatturazione impostata per questo contratto').'.
|
||||
</div>
|
||||
|
||||
<button type="button" '.(!empty($is_pianificabile) ? '' : 'disabled').' title="'.tr('Aggiungi una nuova pianificazione').'" data-toggle="tooltip" class="btn btn-primary pull-right tip" id="pianifica">
|
||||
|
@ -115,7 +115,7 @@ if (!empty($impianti)) {
|
||||
echo '
|
||||
<tr>
|
||||
<td colspan="2" class="text-left" >'.tr('Matricola').': <b>'.$impianti[$i]['matricola'].'</b></td>
|
||||
<td colspan="2" class="text-left" >'.tr('Data').': <b>'.Translator::dataToLocale($impianti[$i]['data']).'</b></td>
|
||||
<td colspan="2" class="text-left" >'.tr('Data').': <b>'.Translator::dateToLocale($impianti[$i]['data']).'</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4" class="text-left" >'.tr('Nome').': <b>'.$impianti[$i]['nome'].'</b></td>
|
||||
|
@ -17,7 +17,7 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
if ($options['hide_header']) {
|
||||
if ($options['hide-header']) {
|
||||
echo '
|
||||
<!-- Intestazione vuota fornitore -->
|
||||
<div class="row" style="height:111px;">
|
||||
|
@ -22,7 +22,7 @@ include_once __DIR__.'/../../core.php';
|
||||
if ($record['titolo'] != $prev_titolo && get('lev') == 1) {
|
||||
echo '
|
||||
<tr>
|
||||
<th colspan="4">'.$record['titolo'].'</th>
|
||||
<th colspan="5">'.$record['titolo'].'</th>
|
||||
</tr>';
|
||||
}
|
||||
|
||||
|
@ -22,10 +22,13 @@ UPDATE `zz_modules` SET `options` = 'SELECT |select| FROM `do_documenti`\nINNER
|
||||
|
||||
-- Task per l'eliminazione automatica della coda d'invio
|
||||
INSERT INTO `zz_tasks` (`id`, `name`, `class`, `expression`, `next_execution_at`, `last_executed_at`) VALUES
|
||||
(NULL, 'Eliminazione automatica coda d\'invio', 'Modules\\StatoEmail\\EliminaMailTask', '0 */4 * * *', NULL, NULL);
|
||||
(NULL, "Eliminazione automatica coda d'invio", 'Modules\\StatoEmail\\EliminaMailTask', '0 */4 * * *', NULL, NULL);
|
||||
|
||||
INSERT INTO `zz_settings` (`id`, `nome`, `valore`, `tipo`, `editable`, `sezione`, `order`, `help`) VALUES
|
||||
(NULL, 'Numero di giorni mantenimento coda di invio', '0', 'integer', 1, 'Mail', 1, NULL);
|
||||
|
||||
-- Plugin contratti del cliente
|
||||
INSERT INTO `zz_plugins` (`id`, `name`, `title`, `idmodule_from`, `idmodule_to`, `position`, `script`, `enabled`, `default`, `order`, `compatibility`, `version`, `options2`, `options`, `directory`, `help`) VALUES (NULL, 'Contratti del cliente', 'Contratti del cliente', '2', '2', 'tab', 'contratti_cliente.php', '1', '0', '0', '', '', NULL, NULL, '', '');
|
||||
INSERT INTO `zz_plugins` (`id`, `name`, `title`, `idmodule_from`, `idmodule_to`, `position`, `script`, `enabled`, `default`, `order`, `compatibility`, `version`, `options2`, `options`, `directory`, `help`) VALUES (NULL, 'Contratti del cliente', 'Contratti del cliente', '2', '2', 'tab', 'contratti_cliente.php', '1', '0', '0', '', '', NULL, NULL, '', '');
|
||||
|
||||
-- Aggiunto campo descrizione (facoltativo) in gestione documentale
|
||||
ALTER TABLE `do_documenti` ADD `descrizione` TEXT NULL AFTER `nome`;
|
Loading…
x
Reference in New Issue
Block a user