Compare commits
9 Commits
f85d1c188f
...
31c892db78
Author | SHA1 | Date |
---|---|---|
valentina | 31c892db78 | |
valentina | 63baa02db8 | |
valentina | 2e25ac40ad | |
valentina | 9310fae29a | |
valentina | 6a5f93df2e | |
valentina | fb9111be94 | |
valentina | ea4aa2c356 | |
valentina | 519e9ac4ec | |
valentina | 47509e4b1b |
|
@ -54,7 +54,7 @@ foreach ($modules as $name => $values) {
|
|||
|
||||
$status = isset($available_modules) ? in_array($name, $available_modules) : $_SERVER[$values['server']] == 'On';
|
||||
|
||||
if ($name == 'mod_mime' && $php_interface != 'apache' && $dbo->isConnected() ) {
|
||||
if ($name == 'mod_mime' && $php_interface != 'apache' && $dbo->isConnected()) {
|
||||
$headers = get_headers((!empty($config['redirectHTTPS']) && !isHTTPS(true)) ? 'https://' : 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'], true);
|
||||
if (isset($headers['Content-Type'])) {
|
||||
$status = 1;
|
||||
|
|
|
@ -84,7 +84,7 @@ switch (post('op')) {
|
|||
if (!empty(post('qta'))) {
|
||||
$data_movimento = new Carbon();
|
||||
$sede = post('sede');
|
||||
$articolo->movimenta(post('qta'), tr('Carico manuale'), $data_movimento->format('Y-m-d'), true, $sede);
|
||||
$articolo->movimenta(post('qta'), tr('Carico manuale'), $data_movimento->format('Y-m-d'), true, ['idsede' => $sede]);
|
||||
}
|
||||
|
||||
$id_record = $articolo->id;
|
||||
|
@ -171,20 +171,6 @@ switch (post('op')) {
|
|||
// Aggiornamento delle varianti per i campi comuni
|
||||
Combinazione::sincronizzaVarianti($articolo);
|
||||
|
||||
// Leggo la quantità attuale per capire se l'ho modificata
|
||||
// TODO: gestire la movimentazione manuale per sede
|
||||
$id_sede = 0;
|
||||
$old_qta = $articolo->getGiacenze(post('data_movimento'));
|
||||
$movimento = $qta - $old_qta[$id_sede][0];
|
||||
|
||||
$qta_manuale = post('qta_manuale');
|
||||
if (!empty($qta_manuale)) {
|
||||
$descrizione_movimento = post('descrizione_movimento');
|
||||
$data_movimento = post('data_movimento');
|
||||
|
||||
$articolo->movimenta($movimento, $descrizione_movimento, $data_movimento, true);
|
||||
}
|
||||
|
||||
// Salvataggio info componente (campo `contenuto`)
|
||||
if (!empty($componente)) {
|
||||
$contenuto_precedente_esistente = !empty($articolo->contenuto);
|
||||
|
|
|
@ -27,9 +27,14 @@ use Modules\Iva\Aliquota;
|
|||
<input type="hidden" name="op" value="update">
|
||||
|
||||
<!-- DATI ANAGRAFICI -->
|
||||
<div class="card card-primary">
|
||||
<div class="card card-primary collapsable collapsed-card">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title"><?php echo tr('Articolo'); ?></h3>
|
||||
<div class="card-tools pull-right">
|
||||
<button type="button" class="btn btn-tool" data-card-widget="collapse">
|
||||
<i class="fa fa-plus"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
|
@ -40,13 +45,20 @@ use Modules\Iva\Aliquota;
|
|||
|
||||
<div class="col-md-9">
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="col-md-3">
|
||||
{[ "type": "text", "label": "<?php echo tr('Codice'); ?>", "name": "codice", "required": 1, "value": "$codice$", "validation": "codice" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
<div class="col-md-3">
|
||||
{[ "type": "text", "label": "<?php echo tr('Barcode'); ?>", "name": "barcode", "value": "$barcode$" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-3">
|
||||
{[ "type": "checkbox", "label": "<?php echo tr('Questo articolo è un servizio'); ?>", "name": "servizio", "value": "$servizio$", "help": "<?php echo tr('Le quantità non saranno considerate.'); ?>", "placeholder": "<?php echo tr('Servizio'); ?>" ]}
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
{[ "type": "checkbox", "label": "<?php echo tr('Attivo'); ?>", "name": "attivo", "help": "<?php echo tr('Seleziona per rendere attivo l\'articolo'); ?>", "value": "$attivo$", "placeholder": "<?php echo tr('Articolo attivo'); ?>" ]}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
|
@ -61,116 +73,99 @@ use Modules\Iva\Aliquota;
|
|||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
<?php echo ( !empty($record['id_marchio']) ? Modules::link('Marchi', $record['id_marchio'], null, null, 'class="pull-right"') : '' ) ?>
|
||||
{[ "type": "select", "label": "<?php echo tr('Marchio'); ?>", "name": "id_marchio", "value":"$id_marchio$", "values": "query=SELECT id, nome AS descrizione FROM mg_marchi ORDER BY descrizione ASC" ]}
|
||||
<?php echo !empty($record['id_marchio']) ? Modules::link('Marchi', $record['id_marchio'], null, null, 'class="pull-right"') : ''; ?>
|
||||
{[ "type": "select", "label": "<?php echo tr('Marchio'); ?>", "name": "id_marchio", "value":"$id_marchio$", "values": "query=SELECT id, name AS descrizione FROM mg_marchi ORDER BY descrizione ASC" ]}
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<?php
|
||||
echo input([
|
||||
'type' => 'textarea',
|
||||
'label' => tr('Descrizione'),
|
||||
'name' => 'descrizione',
|
||||
'required' => 1,
|
||||
'value' => $articolo->getTranslation('title'),
|
||||
'charcounter' => 1,
|
||||
]);
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
{[ "type": "checkbox", "label": "<?php echo tr('Abilita serial number'); ?>", "name": "abilita_serial", "value": "$abilita_serial$", "help": "<?php echo tr('Abilita serial number in fase di aggiunta articolo in fattura o ddt'); ?>", "placeholder": "<?php echo tr('Serial number'); ?>", "extra": "<?php echo ($record['serial'] > 0) ? 'readonly' : ''; ?>" ]}
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
{[ "type": "text", "label": "<?php echo tr('Ubicazione'); ?>", "name": "ubicazione", "value": "$ubicazione$" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
{[ "type": "select", "label": "<?php echo tr('Unità di misura'); ?>", "name": "um", "value": "$um$", "ajax-source": "misure", "icon-after": "add|<?php echo Module::where('name', 'Unità di misura')->first()->id; ?>" ]}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
{[ "type": "number", "label": "<?php echo tr('Garanzia'); ?>", "name": "gg_garanzia", "decimals": 0, "value": "$gg_garanzia$", "icon-after": "GG" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
{[ "type": "number", "label": "<?php echo tr('Peso lordo'); ?>", "name": "peso_lordo", "value": "$peso_lordo$", "icon-after": "KG" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
{[ "type": "number", "label": "<?php echo tr('Volume'); ?>", "name": "volume", "value": "$volume$", "icon-after": "M<sup>3</sup>" ]}
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
{[ "type": "select", "label": "<?php echo tr('U.m. secondaria'); ?>", "name": "um_secondaria", "value": "$um_secondaria$", "ajax-source": "misure", "help": "<?php echo tr("Unità di misura da utilizzare nelle stampe di Ordini fornitori in relazione all'articolo"); ?>" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
{[ "type": "number", "label": "<?php echo tr('Fattore moltiplicativo'); ?>", "name": "fattore_um_secondaria", "value": "$fattore_um_secondaria$", "decimals": "10", "help": "<?php echo tr("Fattore moltiplicativo per l'unità di misura da utilizzare nelle stampe di Ordini fornitori"); ?>" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
{[ "type": "number", "label": "<?php echo tr('Q.tà multipla'); ?>", "name": "qta_multipla", "value": "$qta_multipla$", "decimals": "qta", "help": "<?php echo tr('Quantità multipla di scorta da tenere a magazzino.'); ?>" ]}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<?php
|
||||
echo input([
|
||||
'type' => 'textarea',
|
||||
'label' => tr('Descrizione'),
|
||||
'name' => 'descrizione',
|
||||
'required' => 1,
|
||||
'value' => $articolo->getTranslation('title'),
|
||||
'charcounter' => 1,
|
||||
]);
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
{[ "type": "checkbox", "label": "<?php echo tr('Abilita serial number'); ?>", "name": "abilita_serial", "value": "$abilita_serial$", "help": "<?php echo tr('Abilita serial number in fase di aggiunta articolo in fattura o ddt'); ?>", "placeholder": "<?php echo tr('Serial number'); ?>", "extra": "<?php echo ($record['serial'] > 0) ? 'readonly' : ''; ?>" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
{[ "type": "checkbox", "label": "<?php echo tr('Attivo'); ?>", "name": "attivo", "help": "<?php echo tr('Seleziona per rendere attivo l\'articolo'); ?>", "value": "$attivo$", "placeholder": "<?php echo tr('Articolo attivo'); ?>" ]}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-8">
|
||||
{[ "type": "text", "label": "<?php echo tr('Ubicazione'); ?>", "name": "ubicazione", "value": "$ubicazione$" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
{[ "type": "select", "label": "<?php echo tr('Unità di misura'); ?>", "name": "um", "value": "$um$", "ajax-source": "misure", "icon-after": "add|<?php echo Module::where('name', 'Unità di misura')->first()->id; ?>" ]}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
{[ "type": "textarea", "label": "<?php echo tr('Note'); ?>", "name": "note", "value": "$note$" ]}
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-12">
|
||||
{[ "type": "textarea", "label": "<?php echo tr('Note'); ?>", "name": "note", "value": "$note$" ]}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card card-primary">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title">
|
||||
<?php echo tr('Giacenza totale'); ?>
|
||||
</h3>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
$('#servizio').click(function() {
|
||||
$("#qta_manuale").attr("disabled", $('#servizio').is(":checked"));
|
||||
});
|
||||
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
{[ "type": "number", "label": "<?php echo tr('Quantità'); ?>", "name": "qta", "required": 1, "value": "$qta$", "readonly": 1, "decimals": "qta", "min-value": "undefined", "icon-after": "<?php echo !empty($record['um']) ? $record['um'] : ''; ?>" ]}
|
||||
<input type="hidden" id="old_qta" value="<?php echo $record['qta']; ?>">
|
||||
</div>
|
||||
$('#qta_manuale').click(function() {
|
||||
$("#qta").attr("readonly", !$('#qta_manuale').is(":checked"));
|
||||
if($('#qta_manuale').is(":checked")){
|
||||
$("#div_modifica_manuale").show();
|
||||
$("#div_modifica_manuale").show();
|
||||
$("#descrizione_movimento").attr('required', true);
|
||||
$("#data_movimento").attr('required', true);
|
||||
}else{
|
||||
$("#div_modifica_manuale").hide();
|
||||
$('#qta').val($('#old_qta').val());
|
||||
$("#descrizione_movimento").attr('required', false);
|
||||
$("#data_movimento").attr('required', false);
|
||||
}
|
||||
});
|
||||
|
||||
<div class="col-md-6">
|
||||
{[ "type": "checkbox", "label": "<?php echo tr('Modifica quantità'); ?>", "name": "qta_manuale", "value": 0, "help": "<?php echo tr('Seleziona per modificare manualmente la quantità'); ?>", "placeholder": "<?php echo tr('Quantità manuale'); ?>", "extra": "<?php echo ($record['servizio']) ? 'disabled' : ''; ?>" ]}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class='row' id="div_modifica_manuale" style="display:none;">
|
||||
<div class='col-md-8'>
|
||||
{[ "type": "text", "label": "<?php echo tr('Descrizione movimento'); ?>", "name": "descrizione_movimento" ]}
|
||||
</div>
|
||||
<div class='col-md-4'>
|
||||
{[ "type": "date", "label": "<?php echo tr('Data movimento'); ?>", "name": "data_movimento", "value": "-now-" ]}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="alert alert-info">
|
||||
<p><?php echo tr('Le modifiche alle quantità in questa schermata prevedono la generazione di un movimento relativo alla sede legale'); ?>. <?php echo tr('Se si desidera effettuare movimenti per altre sedi, utilizzare il modulo _MODULO_ ', [
|
||||
'_MODULO_' => Modules::link('Movimenti', null, tr('Movimenti')),
|
||||
]); ?>.</p>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
$('#servizio').click(function() {
|
||||
$("#qta_manuale").attr("disabled", $('#servizio').is(":checked"));
|
||||
});
|
||||
|
||||
$('#qta_manuale').click(function() {
|
||||
$("#qta").attr("readonly", !$('#qta_manuale').is(":checked"));
|
||||
if($('#qta_manuale').is(":checked")){
|
||||
$("#div_modifica_manuale").show();
|
||||
$("#div_modifica_manuale").show();
|
||||
$("#descrizione_movimento").attr('required', true);
|
||||
$("#data_movimento").attr('required', true);
|
||||
}else{
|
||||
$("#div_modifica_manuale").hide();
|
||||
$('#qta').val($('#old_qta').val());
|
||||
$("#descrizione_movimento").attr('required', false);
|
||||
$("#data_movimento").attr('required', false);
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
});
|
||||
</script>
|
||||
|
||||
<!-- informazioni Acquisto/Vendita -->
|
||||
<div class="row">
|
||||
|
@ -182,15 +177,11 @@ use Modules\Iva\Aliquota;
|
|||
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
<div class="col-md-6">
|
||||
{[ "type": "number", "label": "<?php echo tr('Prezzo di acquisto'); ?>", "name": "prezzo_acquisto", "value": "$prezzo_acquisto$", "icon-after": "<?php echo currency(); ?>", "help": "<?php echo tr('Prezzo di acquisto previsto per i fornitori i cui dati non sono stati inseriti nel plugin Fornitori'); ?>." ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
{[ "type": "number", "label": "<?php echo tr('Coefficiente di vendita'); ?>", "name": "coefficiente", "value": "$coefficiente$", "help": "<?php echo tr('Imposta un coefficiente per calcolare automaticamente il prezzo di vendita quando cambia il prezzo di acquisto'); ?>." ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
<div class="col-md-6">
|
||||
{[ "type": "number", "label": "<?php echo tr('Soglia minima quantità'); ?>", "name": "threshold_qta", "value": "$threshold_qta$", "decimals": "qta", "min-value": "undefined" ]}
|
||||
</div>
|
||||
</div>
|
||||
|
@ -208,20 +199,6 @@ use Modules\Iva\Aliquota;
|
|||
{[ "type": "select", "label": "<?php echo tr('Conto predefinito di acquisto'); ?>", "name": "idconto_acquisto", "value": "$idconto_acquisto$", "ajax-source": "conti-acquisti" ]}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
{[ "type": "select", "label": "<?php echo tr('U.m. secondaria'); ?>", "name": "um_secondaria", "value": "$um_secondaria$", "ajax-source": "misure", "help": "<?php echo tr("Unità di misura da utilizzare nelle stampe di Ordini fornitori in relazione all'articolo"); ?>" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
{[ "type": "number", "label": "<?php echo tr('Fattore moltiplicativo'); ?>", "name": "fattore_um_secondaria", "value": "$fattore_um_secondaria$", "decimals": "10", "help": "<?php echo tr("Fattore moltiplicativo per l'unità di misura da utilizzare nelle stampe di Ordini fornitori"); ?>" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
{[ "type": "number", "label": "<?php echo tr('Q.tà multipla'); ?>", "name": "qta_multipla", "value": "$qta_multipla$", "decimals": "qta", "help": "<?php echo tr('Quantità multipla di scorta da tenere a magazzino.'); ?>" ]}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -238,6 +215,10 @@ use Modules\Iva\Aliquota;
|
|||
<div class="clearfix"></div>
|
||||
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-6">
|
||||
{[ "type": "number", "label": "<?php echo tr('Coefficiente di vendita'); ?>", "name": "coefficiente", "value": "$coefficiente$", "help": "<?php echo tr('Imposta un coefficiente per calcolare automaticamente il prezzo di vendita quando cambia il prezzo di acquisto'); ?>." ]}
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<?php
|
||||
$prezzi_ivati = setting('Utilizza prezzi di vendita comprensivi di IVA');
|
||||
|
@ -255,7 +236,10 @@ echo '
|
|||
</div>';
|
||||
|
||||
?>
|
||||
|
||||
<div class="col-md-6">
|
||||
{[ "type": "number", "label": "<?php echo tr('Minimo di vendita'); ?>", "name": "minimo_vendita", "value": "<?php echo $prezzi_ivati ? $articolo->minimo_vendita_ivato : $articolo->minimo_vendita; ?>", "icon-after": "<?php echo currency(); ?>", "help": "<?php echo $prezzi_ivati ? tr('Importo IVA inclusa') : ''; ?>" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
{[ "type": "select", "label": "<?php echo tr('Iva di vendita'); ?>", "name": "idiva_vendita", "ajax-source": "iva", "value": "$idiva_vendita$", "help": "<?php echo tr('Se non specificata, verrà utilizzata l\'iva di default delle impostazioni'); ?>" ]}
|
||||
<input type="hidden" name="prezzi_ivati" value="<?php echo $prezzi_ivati; ?>">
|
||||
|
@ -264,33 +248,9 @@ echo '
|
|||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
{[ "type": "number", "label": "<?php echo tr('Garanzia'); ?>", "name": "gg_garanzia", "decimals": 0, "value": "$gg_garanzia$", "icon-after": "GG" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
{[ "type": "checkbox", "label": "<?php echo tr('Questo articolo è un servizio'); ?>", "name": "servizio", "value": "$servizio$", "help": "<?php echo tr('Le quantità non saranno considerate.'); ?>", "placeholder": "<?php echo tr('Servizio'); ?>" ]}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
{[ "type": "number", "label": "<?php echo tr('Peso lordo'); ?>", "name": "peso_lordo", "value": "$peso_lordo$", "icon-after": "KG" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
{[ "type": "number", "label": "<?php echo tr('Volume'); ?>", "name": "volume", "value": "$volume$", "icon-after": "M<sup>3</sup>" ]}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="col-md-12">
|
||||
{[ "type": "select", "label": "<?php echo tr('Conto predefinito di vendita'); ?>", "name": "idconto_vendita", "value": "$idconto_vendita$", "ajax-source": "conti-vendite" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
{[ "type": "number", "label": "<?php echo tr('Minimo di vendita'); ?>", "name": "minimo_vendita", "value": "<?php echo $prezzi_ivati ? $articolo->minimo_vendita_ivato : $articolo->minimo_vendita; ?>", "icon-after": "<?php echo currency(); ?>", "help": "<?php echo $prezzi_ivati ? tr('Importo IVA inclusa') : ''; ?>" ]}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -0,0 +1,108 @@
|
|||
<?php
|
||||
/*
|
||||
* OpenSTAManager: il software gestionale open source per l'assistenza tecnica e la fatturazione
|
||||
* Copyright (C) DevCode s.r.l.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
include_once __DIR__.'/../../core.php';
|
||||
|
||||
use Modules\Articoli\Categoria;
|
||||
|
||||
$immagine_articolo = $articolo->immagine ? base_path().'/files/articoli/'.$articolo->immagine : App::getPaths()['img'].'/logo_header.png';
|
||||
|
||||
echo '
|
||||
<hr>
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
<div class="card card-info card-outline shadow">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title"><i class="fa fa-vcard"></i> '.tr('Articolo').'</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col-md-2">
|
||||
<img src="'.$immagine_articolo.'" " class="img-fluid">
|
||||
</div>
|
||||
|
||||
<div class="col-md-10">';
|
||||
|
||||
// Articolo
|
||||
echo '
|
||||
<h4><b>'.$articolo->getTranslation('title').'</b></h4>
|
||||
<p><small>'.tr('Codice').':</small> '.$articolo->codice.' '.($articolo->barcode ? ' - <i class="fa fa-barcode"></i> '.$articolo->barcode.'</p>' : '').'</p>
|
||||
'.($articolo->id_categoria ? '<p><small>'.tr('Categoria').':</small> '.Categoria::where('id', $articolo->id_categoria)->first()->getTranslation('title') : '').($articolo->id_sottocategoria ? ' - <small>'.('Sottocategoria').':</small> '.Categoria::where('id', $articolo->id_sottocategoria)->first()->getTranslation('title') : '').'</p>
|
||||
'.($articolo->id_marchio ? '<p><small>'.tr('Marchio').':</Small> '.$dbo->fetchOne('select name from mg_marchi where id = '.$articolo->id_marchio)['name'] : '').'</p>
|
||||
'.($articolo->note ? '<p><i class="fa fa-pencil-square-o"></i> '.$articolo->note.'</p>' : '').'
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>';
|
||||
|
||||
// Panoramica
|
||||
echo '
|
||||
<div class="col-md-4">
|
||||
<div class="card card-info card-outline shadow">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title"><i class="fa fa-info-circle"></i> '.tr('Informazioni').'</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
|
||||
<p>'.($articolo->um ? '<small>'.tr('Unità di misura').':</Small> '.$articolo->um : '').'</p>
|
||||
<p>'.($articolo->gg_garanzia ? '<small>'.tr('Garanzia').':</Small> '.$articolo->gg_garanzia.' giorni' : '').'</p>
|
||||
<p>'.($articolo->um_secondaria ? '<small>'.tr('Unità di misura secondaria').':</Small> '.$articolo->um_secondaria : '').'</p>
|
||||
<p>'.($articolo->fattore_um_secondaria ? '<small>'.tr('Fattore').':</Small> '.numberFormat($articolo->fattore_um_secondaria, $decimals) : '').'</p>
|
||||
<p>'.($articolo->qta_multipla ? '<small>'.tr('Quantità multipla').':</Small> '.numberFormat($articolo->qta_multipla, $decimals) : '').'</p>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
<p><small> '.tr('Serial number').':</small> '.($articolo->abilita_serial ? '<i class="fa fa-check text-success"></i>' : '<i class="fa fa-times text-danger"></i> ').'</p>
|
||||
<p><small> '.tr('Attivo').':</small> '.($articolo->attivo ? '<i class="fa fa-check text-success"></i>' : '<i class="fa fa-times text-danger"></i> ').'</p>
|
||||
<p>'.($articolo->ubicazione ? '<small>'.tr('Ubicazione').':</Small> '.$articolo->ubicazione : '').'</p>
|
||||
<p>'.($articolo->peso_lordo ? '<small>'.tr('Peso lordo').':</Small> '.numberFormat($articolo->peso_lordo, $decimals).' '.tr('kg') : '').'</p>
|
||||
<p>'.($articolo->volume ? '<small>'.tr('Volume').':</Small> '.numberFormat($articolo->volume, $decimals).' '.tr('m3') : '').'</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>';
|
||||
|
||||
if ($user->is_admin) {
|
||||
$sedi = $dbo->fetchArray('(SELECT "0" AS id, "Sede legale" AS nomesede) UNION (SELECT id, nomesede FROM an_sedi)');
|
||||
} else {
|
||||
$sedi = $dbo->fetchArray('SELECT nomesede FROM zz_user_sedi INNER JOIN ((SELECT "0" AS id, "Sede legale" AS nomesede) UNION (SELECT id, nomesede FROM an_sedi)) sedi ON zz_user_sedi.idsede=sedi.id WHERE id_user='.prepare($user['id']).' GROUP BY id_user, nomesede');
|
||||
}
|
||||
|
||||
$giacenze = $articolo->getGiacenze();
|
||||
|
||||
// Giacenze
|
||||
echo '
|
||||
<div class="col-md-4">
|
||||
<div class="card card-info card-outline shadow">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title"><i class="fa fa-archive"></i> '.tr('Giacenze').'</h3>
|
||||
</div>
|
||||
<div class="card-body">';
|
||||
foreach ($sedi as $sede) {
|
||||
echo '<p><small>'.$sede['nomesede'].':</small> '.numberFormat($giacenze[$sede['id']][0], 'qta').' '.$articolo->um.'</p>';
|
||||
}
|
||||
echo '
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>';
|
|
@ -71,10 +71,10 @@ class Articolo extends Model
|
|||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function movimenta($qta, $descrizone = null, $data = null, $manuale = false, $id_sede = null, $array = [], )
|
||||
public function movimenta($qta, $descrizone = null, $data = null, $manuale = false, $array = [])
|
||||
{
|
||||
$data = ($data ?: date('Y-m-d H:i:s'));
|
||||
$id = $this->registra($qta, $descrizone, $data, $manuale, $array, $id_sede);
|
||||
$id = $this->registra($qta, $descrizone, $data, $manuale, $array, $array['idsede']);
|
||||
|
||||
if (empty($this->servizio)) {
|
||||
$this->qta += $qta;
|
||||
|
@ -112,7 +112,6 @@ class Articolo extends Model
|
|||
'movimento' => $descrizone,
|
||||
'data' => $data,
|
||||
'manuale' => $manuale,
|
||||
'idsede' => $id_sede ?: 0,
|
||||
'idutente' => $user->id,
|
||||
]));
|
||||
}
|
||||
|
|
|
@ -50,7 +50,7 @@ if (isset($id_original)) {
|
|||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
{[ "type": "textarea", "label": "<?php echo tr('Nota'); ?>", "name": "nota", "value": "<?php echo $categoria?$categoria->getTranslation('note'): ''; ?>" ]}
|
||||
{[ "type": "textarea", "label": "<?php echo tr('Nota'); ?>", "name": "nota", "value": "<?php echo $categoria ? $categoria->getTranslation('note') : ''; ?>" ]}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
|
@ -163,8 +163,8 @@ if (!empty($interventi)) {
|
|||
</tr>';
|
||||
|
||||
// Raggruppamento per articolo con lo stesso prezzo
|
||||
$ricavo = (string)(($articolo->imponibile - $articolo->sconto) / ($articolo->qta > 0 ? $articolo->qta : 1));
|
||||
$costo = (string)($articolo->spesa / ($articolo->qta > 0 ? $articolo->qta : 1));
|
||||
$ricavo = (string) (($articolo->imponibile - $articolo->sconto) / ($articolo->qta > 0 ? $articolo->qta : 1));
|
||||
$costo = (string) ($articolo->spesa / ($articolo->qta > 0 ? $articolo->qta : 1));
|
||||
$descrizione = $articolo->articolo->codice.' - '.$articolo->descrizione;
|
||||
|
||||
$materiali_art[$descrizione][$ricavo][$costo]['id'] = $articolo->id;
|
||||
|
|
|
@ -199,7 +199,7 @@ $id_plugin_sedi = Plugin::where('name', 'Sedi')->first()->id;
|
|||
if ($dir == 'entrata') {
|
||||
echo '
|
||||
<div class="col-md-4">
|
||||
{[ "type": "select", "label": "'.tr('Partenza merce').'", "name": "idsede_partenza", "ajax-source": "sedi_azienda", "value": "$idsede_partenza$", "help": "'.tr("Sedi di partenza dell'azienda").'" ]}
|
||||
{[ "type": "select", "label": "'.tr('Partenza merce').'", "name": "idsede_partenza", "ajax-source": "sedi_azienda", "value": "$idsede_partenza$", "select-options": '.json_encode(['idsede_partenza' => $record['idsede_partenza']]).', "help": "'.tr("Sedi di partenza dell'azienda").'" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
|
|
|
@ -339,7 +339,7 @@ switch ($op) {
|
|||
|
||||
$fatture = Fattura::vendita()
|
||||
->select('*', 'co_documenti.id AS id', 'co_documenti.data AS data')
|
||||
->where('co_documenti.idanagrafica', "=", $id_anagrafica)
|
||||
->where('co_documenti.idanagrafica', '=', $id_anagrafica)
|
||||
->whereIn('idstatodocumento', [$stato1->id, $stato2->id])
|
||||
->join('co_scadenziario', 'co_documenti.id', '=', 'co_scadenziario.iddocumento')
|
||||
->join('co_tipidocumento', 'co_tipidocumento.id', '=', 'co_documenti.idtipodocumento')
|
||||
|
|
|
@ -55,7 +55,6 @@ if ($module->getTranslation('title') == 'Fatture di vendita' && $services_enable
|
|||
if ($documento->codice_stato_fe == 'NS' && ($documento->stato != Stato::where('name', 'Bozza')->first()->id) && ($documento->stato != Stato::where('name', 'Non valida')->first()->id)) {
|
||||
$ricevuta_principale = $documento->getRicevutaPrincipale();
|
||||
|
||||
|
||||
if (!empty($ricevuta_principale)) {
|
||||
$contenuto_ricevuta = XML::readFile(base_dir().'/files/fatture/'.$ricevuta_principale->filename);
|
||||
$lista_errori = $contenuto_ricevuta['ListaErrori'];
|
||||
|
|
|
@ -1192,6 +1192,8 @@ if ($dir == 'entrata') {
|
|||
}
|
||||
}
|
||||
$(document).ready(function() {
|
||||
$("#idsede_partenza").trigger("change");
|
||||
|
||||
if(!$("#volume_manuale").is(":checked")){
|
||||
input("volume").set($("#volume_calcolato").val());
|
||||
}
|
||||
|
@ -1292,4 +1294,12 @@ function risolviStato() {
|
|||
}
|
||||
});
|
||||
}
|
||||
|
||||
// Impostazione della sede di partenza
|
||||
var sede_partenza = input("idsede_partenza");
|
||||
|
||||
sede_partenza.change(function() {
|
||||
updateSelectOption("idsede_partenza", $(this).val());
|
||||
session_set("superselect,idsede_partenza", $(this).val(), 0);
|
||||
})
|
||||
</script>';
|
||||
|
|
|
@ -96,7 +96,7 @@ echo '
|
|||
<div class="row">
|
||||
<div class="col-md-3">';
|
||||
if ($record['idagente'] != 0) {
|
||||
echo Modules::link('Anagrafiche', $record['idagente'], null, null, 'class="pull-right"');
|
||||
echo Modules::link('Anagrafiche', $record['idagente'], null, null, 'class="pull-right"');
|
||||
}
|
||||
echo '
|
||||
|
||||
|
@ -472,100 +472,102 @@ echo '
|
|||
{( "name": "log_email", "id_module": "$id_module$", "id_record": "$id_record$" )}
|
||||
|
||||
<script>
|
||||
async function saveForm() {
|
||||
// Salvataggio via AJAX
|
||||
await salvaForm("#edit-form");
|
||||
}
|
||||
async function saveForm() {
|
||||
// Salvataggio via AJAX
|
||||
await salvaForm("#edit-form");
|
||||
}
|
||||
|
||||
function gestioneSconto(button) {
|
||||
gestioneRiga(button, "is_sconto=1");
|
||||
}
|
||||
function gestioneSconto(button) {
|
||||
gestioneRiga(button, "is_sconto=1");
|
||||
}
|
||||
|
||||
function gestioneDescrizione(button) {
|
||||
gestioneRiga(button, "is_descrizione=1");
|
||||
}
|
||||
function gestioneDescrizione(button) {
|
||||
gestioneRiga(button, "is_descrizione=1");
|
||||
}
|
||||
|
||||
async function gestioneRiga(button, options) {
|
||||
// Salvataggio via AJAX
|
||||
await salvaForm("#edit-form", {}, button);
|
||||
async function gestioneRiga(button, options) {
|
||||
// Salvataggio via AJAX
|
||||
await salvaForm("#edit-form", {}, button);
|
||||
|
||||
// Lettura titolo e chiusura tooltip
|
||||
let title = $(button).attr("data-title");
|
||||
// Lettura titolo e chiusura tooltip
|
||||
let title = $(button).attr("data-title");
|
||||
|
||||
// Apertura modal
|
||||
options = options ? options : "is_riga=1";
|
||||
openModal(title, "'.$structure->fileurl('row-add.php').'?id_module='.$id_module.'&id_record='.$id_record.'&" + options);
|
||||
}
|
||||
// Apertura modal
|
||||
options = options ? options : "is_riga=1";
|
||||
openModal(title, "'.$structure->fileurl('row-add.php').'?id_module='.$id_module.'&id_record='.$id_record.'&" + options);
|
||||
}
|
||||
|
||||
/**
|
||||
* Funzione dedicata al caricamento dinamico via AJAX delle righe del documento.
|
||||
*/
|
||||
function caricaRighe(id_riga) {
|
||||
let container = $("#righe");
|
||||
/**
|
||||
* Funzione dedicata al caricamento dinamico via AJAX delle righe del documento.
|
||||
*/
|
||||
function caricaRighe(id_riga) {
|
||||
let container = $("#righe");
|
||||
|
||||
localLoading(container, true);
|
||||
return $.get("'.$structure->fileurl('row-list.php').'?id_module='.$id_module.'&id_record='.$id_record.'", function(data) {
|
||||
container.html(data);
|
||||
localLoading(container, false);
|
||||
if (id_riga != null) {
|
||||
$("tr[data-id="+ id_riga +"]").effect("highlight",1000);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Funzione dedicata al caricamento dinamico via AJAX delle sessioni dei tecnici per l\'Attività.
|
||||
*/
|
||||
function caricaTecnici() {
|
||||
let container = $("#tecnici");
|
||||
|
||||
localLoading(container, true);
|
||||
return $.get("'.$structure->fileurl('ajax_tecnici.php').'?id_module='.$id_module.'&id_record='.$id_record.'", function(data) {
|
||||
caricaRighe(null);
|
||||
container.html(data);
|
||||
localLoading(container, false);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Funzione dedicata al caricamento dinamico via AJAX delle sessioni dei tecnici per l\'Attività.
|
||||
*/
|
||||
function caricaCosti() {
|
||||
let container = $("#costi");
|
||||
|
||||
localLoading(container, true);
|
||||
return $.get("'.$structure->fileurl('ajax_costi.php').'?id_module='.$id_module.'&id_record='.$id_record.'", function(data) {
|
||||
container.html(data);
|
||||
localLoading(container, false);
|
||||
});
|
||||
}
|
||||
|
||||
$(document).ready(function() {
|
||||
caricaRighe(null);
|
||||
caricaTecnici();
|
||||
caricaCosti();
|
||||
|
||||
$("#id_articolo").on("change", function(e) {
|
||||
if ($(this).val()) {
|
||||
var data = $(this).selectData();
|
||||
|
||||
if (data.barcode) {
|
||||
$("#barcode").val(data.barcode);
|
||||
} else {
|
||||
$("#barcode").val("");
|
||||
localLoading(container, true);
|
||||
return $.get("'.$structure->fileurl('row-list.php').'?id_module='.$id_module.'&id_record='.$id_record.'", function(data) {
|
||||
container.html(data);
|
||||
localLoading(container, false);
|
||||
if (id_riga != null) {
|
||||
$("tr[data-id="+ id_riga +"]").effect("highlight",1000);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
e.preventDefault();
|
||||
/**
|
||||
* Funzione dedicata al caricamento dinamico via AJAX delle sessioni dei tecnici per l\'Attività.
|
||||
*/
|
||||
function caricaTecnici() {
|
||||
let container = $("#tecnici");
|
||||
|
||||
setTimeout(function(){
|
||||
$("#barcode").focus();
|
||||
}, 100);
|
||||
localLoading(container, true);
|
||||
return $.get("'.$structure->fileurl('ajax_tecnici.php').'?id_module='.$id_module.'&id_record='.$id_record.'", function(data) {
|
||||
caricaRighe(null);
|
||||
container.html(data);
|
||||
localLoading(container, false);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Funzione dedicata al caricamento dinamico via AJAX delle sessioni dei tecnici per l\'Attività.
|
||||
*/
|
||||
function caricaCosti() {
|
||||
let container = $("#costi");
|
||||
|
||||
localLoading(container, true);
|
||||
return $.get("'.$structure->fileurl('ajax_costi.php').'?id_module='.$id_module.'&id_record='.$id_record.'", function(data) {
|
||||
container.html(data);
|
||||
localLoading(container, false);
|
||||
});
|
||||
}
|
||||
|
||||
$(document).ready(function() {
|
||||
caricaRighe(null);
|
||||
caricaTecnici();
|
||||
caricaCosti();
|
||||
|
||||
$("#idsede_partenza").trigger("change");
|
||||
|
||||
$("#id_articolo").on("change", function(e) {
|
||||
if ($(this).val()) {
|
||||
var data = $(this).selectData();
|
||||
|
||||
if (data.barcode) {
|
||||
$("#barcode").val(data.barcode);
|
||||
} else {
|
||||
$("#barcode").val("");
|
||||
}
|
||||
}
|
||||
|
||||
e.preventDefault();
|
||||
|
||||
setTimeout(function(){
|
||||
$("#barcode").focus();
|
||||
}, 100);
|
||||
});
|
||||
|
||||
$("#barcode").focus();
|
||||
});
|
||||
|
||||
$("#barcode").focus();
|
||||
});
|
||||
|
||||
var anagrafica = input("idanagrafica");
|
||||
var sede = input("idsede_destinazione");
|
||||
var contratto = input("idcontratto");
|
||||
|
@ -573,6 +575,7 @@ $(document).ready(function() {
|
|||
var ordine = input("idordine");
|
||||
var cliente_finale = input("idclientefinale");
|
||||
var referente = input("idreferente");
|
||||
var sede_partenza = input("idsede_partenza");
|
||||
|
||||
// Gestione della modifica dell\'anagrafica
|
||||
anagrafica.change(function() {
|
||||
|
@ -677,6 +680,12 @@ $(document).ready(function() {
|
|||
.getElement().selectReset();
|
||||
});
|
||||
|
||||
// Impostazione della sede di partenza
|
||||
sede_partenza.change(function() {
|
||||
updateSelectOption("idsede_partenza", $(this).val());
|
||||
session_set("superselect,idsede_partenza", $(this).val(), 0);
|
||||
})
|
||||
|
||||
$("#codice_cig, #codice_cup").bind("keyup change", function (e) {
|
||||
if ($("#codice_cig").val() == "" && $("#codice_cup").val() == "") {
|
||||
$("#id_documento_fe").prop("required", false);
|
||||
|
|
|
@ -45,36 +45,4 @@ if (!empty($id_record)) {
|
|||
WHERE
|
||||
`in_interventi`.`id`='.prepare($id_record));
|
||||
|
||||
// Pulsante Precedente e Successivo all'interno della scheda attività
|
||||
// RISULTATI VISIBILI
|
||||
$structure = Module::find($id_module);
|
||||
$where = [];
|
||||
|
||||
// Ricavo la posizione per questo id_record
|
||||
$where['id'] = $id_record;
|
||||
$posizione_query = Util\Query::getQuery($structure, $where, $order);
|
||||
$database->FetchArray('SET @posizione = 0;');
|
||||
$posizione_attuale = $database->FetchOne($posizione_query)['posizione'];
|
||||
|
||||
unset($where['id']);
|
||||
|
||||
// Aggiungo eventuali filtri applicati alla vista
|
||||
if (count(getSearchValues($id_module)) > 0) {
|
||||
foreach (getSearchValues($id_module) as $key => $value) {
|
||||
$where[$key] = $value;
|
||||
}
|
||||
}
|
||||
|
||||
// Query del modulo
|
||||
$module_query = Util\Query::getQuery($structure, $where, $order);
|
||||
|
||||
// Precedente
|
||||
$prev_query = str_replace('2=2', '2=2 AND `posizione` ='.prepare($posizione_attuale - 1), $module_query);
|
||||
$database->query('SET @posizione = 0');
|
||||
$prev = $database->fetchOne($prev_query)['id'];
|
||||
|
||||
// Successivo
|
||||
$next_query = str_replace('2=2', '2=2 AND `posizione` ='.prepare($posizione_attuale + 1), $module_query);
|
||||
$database->query('SET @posizione = 0');
|
||||
$next = $database->fetchOne($next_query)['id'];
|
||||
}
|
||||
|
|
|
@ -22,20 +22,18 @@ include_once __DIR__.'/../../core.php';
|
|||
switch (post('op')) {
|
||||
// Aggiorno informazioni di base impianto
|
||||
case 'update':
|
||||
|
||||
$dbo->update('mg_marchi',[
|
||||
'nome' => post('nome'),
|
||||
],['id' => $id_record]);
|
||||
$dbo->update('mg_marchi', [
|
||||
'name' => post('name'),
|
||||
], ['id' => $id_record]);
|
||||
|
||||
flash()->info(tr('Informazioni salvate correttamente!'));
|
||||
|
||||
break;
|
||||
|
||||
// Aggiungo impianto
|
||||
// Aggiungo impianto
|
||||
case 'add':
|
||||
|
||||
$dbo->insert('mg_marchi',[
|
||||
'nome' => post('nome'),
|
||||
$dbo->insert('mg_marchi', [
|
||||
'name' => post('name'),
|
||||
]);
|
||||
$id_record = $dbo->lastInsertedID();
|
||||
|
||||
|
@ -43,8 +41,7 @@ switch (post('op')) {
|
|||
|
||||
break;
|
||||
|
||||
|
||||
// Rimuovo impianto e scollego tutti i suoi componenti
|
||||
// Rimuovo impianto e scollego tutti i suoi componenti
|
||||
case 'delete':
|
||||
$dbo->query('DELETE FROM mg_marchi WHERE id='.prepare($id_record));
|
||||
|
||||
|
|
|
@ -27,7 +27,7 @@ $id_anagrafica = filter('id_anagrafica');
|
|||
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
{[ "type": "text", "label": "<?php echo tr('Nome'); ?>", "name": "nome", "required": 1, "validation": "nome" ]}
|
||||
{[ "type": "text", "label": "<?php echo tr('name'); ?>", "name": "name", "required": 1, "validation": "name" ]}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
|
@ -19,7 +19,6 @@
|
|||
|
||||
include_once __DIR__.'/../../core.php';
|
||||
|
||||
|
||||
?><form action="" method="post" id="edit-form" enctype="multipart/form-data">
|
||||
<input type="hidden" name="backto" value="record-edit">
|
||||
<input type="hidden" name="op" value="update">
|
||||
|
@ -34,7 +33,7 @@ include_once __DIR__.'/../../core.php';
|
|||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
{[ "type": "text", "label": "<?php echo tr('Nome'); ?>", "name": "nome", "value":"$nome$", "required": 1, "validation": "nome" ]}
|
||||
{[ "type": "text", "label": "<?php echo tr('name'); ?>", "name": "name", "value":"$name$", "required": 1, "validation": "name" ]}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -51,8 +50,8 @@ if (!empty($elementi)) {
|
|||
<div class="card card-warning collapsable collapsed-card">
|
||||
<div class="card-header with-border">
|
||||
<h3 class="card-title"><i class="fa fa-warning"></i> '.tr('Articoli collegati: _NUM_', [
|
||||
'_NUM_' => count($elementi),
|
||||
]).'</h3>
|
||||
'_NUM_' => count($elementi),
|
||||
]).'</h3>
|
||||
<div class="card-tools pull-right">
|
||||
<button type="button" class="btn btn-tool" data-card-widget="collapse"><i class="fa fa-plus"></i></button>
|
||||
</div>
|
||||
|
@ -75,4 +74,4 @@ if (!empty($elementi)) {
|
|||
echo '
|
||||
<a class="btn btn-danger ask '.$class.'" data-backto="record-list">
|
||||
<i class="fa fa-trash"></i> '.tr('Elimina').'
|
||||
</a>';
|
||||
</a>';
|
||||
|
|
|
@ -23,13 +23,13 @@ $name = filter('name');
|
|||
$value = filter('value');
|
||||
|
||||
switch ($name) {
|
||||
case 'nome':
|
||||
case 'name':
|
||||
$disponibile = $dbo->table('mg_marchi')->where([
|
||||
['nome', $value],
|
||||
['name', $value],
|
||||
['id', '<>', $id_record],
|
||||
])->count() == 0;
|
||||
|
||||
$message = $disponibile ? tr('Il nome è disponbile') : tr('Il nome è già utilizzato in un altro marchio');
|
||||
$message = $disponibile ? tr('Il name è disponbile') : tr('Il name è già utilizzato in un altro marchio');
|
||||
|
||||
$response = [
|
||||
'result' => $disponibile,
|
||||
|
|
|
@ -160,8 +160,8 @@ if (!empty($interventi)) {
|
|||
</tr>';
|
||||
|
||||
// Raggruppamento per articolo con lo stesso prezzo
|
||||
$ricavo = (string)(($articolo->imponibile - $articolo->sconto) / ($articolo->qta > 0 ? $articolo->qta : 1));
|
||||
$costo = (string)($articolo->spesa / ($articolo->qta > 0 ? $articolo->qta : 1));
|
||||
$ricavo = (string) (($articolo->imponibile - $articolo->sconto) / ($articolo->qta > 0 ? $articolo->qta : 1));
|
||||
$costo = (string) ($articolo->spesa / ($articolo->qta > 0 ? $articolo->qta : 1));
|
||||
$descrizione = $articolo->articolo->codice.' - '.$articolo->descrizione;
|
||||
|
||||
$materiali_art[$descrizione][$ricavo][$costo]['id'] = $articolo->articolo->id;
|
||||
|
|
|
@ -160,8 +160,8 @@ if (!empty($interventi)) {
|
|||
</tr>';
|
||||
|
||||
// Raggruppamento per articolo con lo stesso prezzo
|
||||
$ricavo = (string)(($articolo->imponibile - $articolo->sconto) / ($articolo->qta > 0 ? $articolo->qta : 1));
|
||||
$costo = (string)($articolo->spesa / ($articolo->qta > 0 ? $articolo->qta : 1));
|
||||
$ricavo = (string) (($articolo->imponibile - $articolo->sconto) / ($articolo->qta > 0 ? $articolo->qta : 1));
|
||||
$costo = (string) ($articolo->spesa / ($articolo->qta > 0 ? $articolo->qta : 1));
|
||||
$descrizione = $articolo->articolo->codice.' - '.$articolo->descrizione;
|
||||
|
||||
$materiali_art[$descrizione][$ricavo][$costo]['id'] = $articolo->id;
|
||||
|
|
|
@ -116,15 +116,15 @@ if (Services::isEnabled()) {
|
|||
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(),
|
||||
'_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, alcune risorse sono in scadenza o stanno per esaurire i crediti:', [
|
||||
'_NUM_' => $risorse_in_scadenza->count(),
|
||||
]).'</div>';
|
||||
'_NUM_' => $risorse_in_scadenza->count(),
|
||||
]).'</div>';
|
||||
}
|
||||
} else {
|
||||
/*echo '
|
||||
|
@ -145,17 +145,17 @@ if (Services::isEnabled()) {
|
|||
|
||||
<tbody>';
|
||||
|
||||
foreach ($risorse_attive as $servizio) {
|
||||
$scadenza = Carbon::parse($servizio['expiration_at']);
|
||||
echo '
|
||||
foreach ($risorse_attive as $servizio) {
|
||||
$scadenza = Carbon::parse($servizio['expiration_at']);
|
||||
echo '
|
||||
<tr class="'.($scadenza->lessThan(Carbon::now()) ? 'danger' : ($scadenza->lessThan($limite_scadenze) ? 'warning' : '')).'">
|
||||
<td>'.$servizio['name'].'</td>
|
||||
<td>'.(($servizio['credits'] < 100 && $servizio['credits'] !== null) ? '<b><i class="fa fa-warning text-warning" ></i> ' : '').($servizio['credits'] ?? '-').(($servizio['credits'] < 100 && $servizio['credits'] !== null) ? '</b>' : '').'</td>
|
||||
<td>'.((Carbon::now()->diffInDays($scadenza, false) < $days && $scadenza) ? '<b><i class="fa fa-warning text-warning" ></i> ' : '').dateFormat($scadenza).' ('.$scadenza->diffForHumans().')'.((Carbon::now()->diffInDays($scadenza, false) < $days && $scadenza) ? '</b>' : '').'</td>
|
||||
</tr>';
|
||||
}
|
||||
}
|
||||
|
||||
echo '
|
||||
echo '
|
||||
</tbody>
|
||||
</table>
|
||||
</div>';
|
||||
|
@ -171,19 +171,19 @@ if (Services::isEnabled()) {
|
|||
<div class="card-body">
|
||||
<div class="alert hidden" role="alert" id="spazio-fe">
|
||||
<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("Contattare l'assistenza per risolvere il problema").'</span>.
|
||||
'_TEXT_' => '<span id="spazio-fe-text"></span>',
|
||||
'_NUM_' => '<span id="spazio-fe-occupato"></span>',
|
||||
'_TOT_' => '<span id="spazio-fe-totale"></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('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("Contattare l'assistenza per risolvere il problema").'</span>.
|
||||
'_TEXT_' => '<span id="numero-fe-text"></span>',
|
||||
'_NUM_' => '<span id="numero-fe-occupato"></span>',
|
||||
'_TOT_' => '<span id="numero-fe-totale"></span>',
|
||||
]).'.<br>'.tr("Contattare l'assistenza per risolvere il problema").'</span>.
|
||||
</div>
|
||||
|
||||
|
||||
|
@ -234,7 +234,7 @@ if (Services::isEnabled()) {
|
|||
echo '
|
||||
</div>
|
||||
</div>';
|
||||
}
|
||||
}
|
||||
|
||||
echo '
|
||||
</div>
|
||||
|
|
|
@ -108,7 +108,7 @@ switch (filter('op')) {
|
|||
$utente->save();
|
||||
|
||||
$dbo->query('DELETE FROM zz_user_sedi WHERE id_user = '.prepare($id_utente));
|
||||
$sedi= post('idsede');
|
||||
$sedi = post('idsede');
|
||||
|
||||
if (empty($sedi)) {
|
||||
$sedi = $dbo->fetchArray('SELECT id FROM an_sedi WHERE idanagrafica = '.prepare($id_azienda));
|
||||
|
|
|
@ -701,12 +701,12 @@ class FatturaElettronica implements \Stringable
|
|||
// Codice fiscale
|
||||
// TODO: Nella fattura elettronica, emessa nei confronti di soggetti titolari di partita IVA (nodo CessionarioCommittente), non va indicato il codice fiscale se è già presente la partita iva.
|
||||
if (!empty($anagrafica['codice_fiscale'])) {
|
||||
$result['CodiceFiscale'] = preg_replace('/\s+/', '', $anagrafica['codice_fiscale']);
|
||||
$result['CodiceFiscale'] = preg_replace('/\s+/', '', (string) $anagrafica['codice_fiscale']);
|
||||
|
||||
// $result['CodiceFiscale'] = str_replace($anagrafica->nazione->iso2, '', $result['CodiceFiscale']);
|
||||
|
||||
// Rimuovo eventuali idicazioni relative all'iso2 della nazione, solo se la stringa inizia con quest'ultima.
|
||||
$result['CodiceFiscale'] = preg_replace('/^'.preg_quote($anagrafica->nazione->iso2, '/').'/', '', $anagrafica['codice_fiscale']);
|
||||
$result['CodiceFiscale'] = preg_replace('/^'.preg_quote($anagrafica->nazione->iso2, '/').'/', '', (string) $anagrafica['codice_fiscale']);
|
||||
}
|
||||
|
||||
// Partita IVA: se privato estero non va considerato il codice fiscale ma la partita iva con 9 zeri
|
||||
|
@ -1666,7 +1666,7 @@ class FatturaElettronica implements \Stringable
|
|||
$co_scadenziario = $database->fetchArray('SELECT * FROM `co_scadenziario` WHERE `iddocumento` = '.prepare($documento['id']));
|
||||
foreach ($co_scadenziario as $scadenza) {
|
||||
$co_pagamenti = Pagamento::find($scadenza['id_pagamento']);
|
||||
$banca = ($co_pagamenti && $co_pagamenti->isRiBa()) ? Banca::find($scadenza['id_banca_controparte']): ($scadenza['id_banca_azienda'] ?? Banca::where('id_anagrafica', $scadenza['idanagrafica'])->where('predefined', 1)->first());
|
||||
$banca = ($co_pagamenti && $co_pagamenti->isRiBa()) ? Banca::find($scadenza['id_banca_controparte']) : ($scadenza['id_banca_azienda'] ?? Banca::where('id_anagrafica', $scadenza['idanagrafica'])->where('predefined', 1)->first());
|
||||
$pagamento = [
|
||||
'ModalitaPagamento' => $co_pagamenti['codice_modalita_pagamento_fe'],
|
||||
'DataScadenzaPagamento' => $scadenza['scadenza'],
|
||||
|
|
|
@ -482,7 +482,7 @@ class FatturaOrdinaria extends FatturaElettronica
|
|||
|
||||
$totale_documento = $this->getBody()['DatiGenerali']['DatiGeneraliDocumento']['ImportoTotaleDocumento'];
|
||||
if (empty($totale_documento)) {
|
||||
//se ImportoTotaleDocumento non è valorizzato recupero l'importo dal nodo ImportoPagamento
|
||||
// se ImportoTotaleDocumento non è valorizzato recupero l'importo dal nodo ImportoPagamento
|
||||
$totale_documento = $this->getBody()['DatiPagamento']['DettaglioPagamento']['ImportoPagamento'];
|
||||
}
|
||||
$differenza_iva = round(abs($fattura->iva) - abs($imposta_riepilogo), 2);
|
||||
|
|
|
@ -38,15 +38,15 @@ switch ($operazione) {
|
|||
|
||||
if (post('scadenza') == 'Mensile') {
|
||||
$timeing = '+1 month';
|
||||
} else if (post('scadenza') == 'Bimestrale') {
|
||||
} elseif (post('scadenza') == 'Bimestrale') {
|
||||
$timeing = '+2 month';
|
||||
} else if (post('scadenza') == 'Trimestrale') {
|
||||
} elseif (post('scadenza') == 'Trimestrale') {
|
||||
$timeing = '+3 month';
|
||||
} else if (post('scadenza') == 'Quadrimestrale') {
|
||||
} elseif (post('scadenza') == 'Quadrimestrale') {
|
||||
$timeing = '+4 month';
|
||||
} else if (post('scadenza') == 'Semestrale') {
|
||||
} elseif (post('scadenza') == 'Semestrale') {
|
||||
$timeing = '+6 month';
|
||||
} else if (post('scadenza') == 'Annuale') {
|
||||
} elseif (post('scadenza') == 'Annuale') {
|
||||
$timeing = '+12 month';
|
||||
}
|
||||
|
||||
|
|
|
@ -123,16 +123,24 @@ class Pianificazione extends Document
|
|||
return $this->contratto->descrizioni();
|
||||
}
|
||||
|
||||
public function getReferenceName() {}
|
||||
public function getReferenceName()
|
||||
{
|
||||
}
|
||||
|
||||
public function getReferenceNumber() {}
|
||||
public function getReferenceNumber()
|
||||
{
|
||||
}
|
||||
|
||||
public function getReferenceDate() {}
|
||||
public function getReferenceDate()
|
||||
{
|
||||
}
|
||||
|
||||
public function getReferenceRagioneSociale()
|
||||
{
|
||||
return $this->anagrafica->ragione_sociale;
|
||||
}
|
||||
|
||||
public function getReference() {}
|
||||
public function getReference()
|
||||
{
|
||||
}
|
||||
}
|
||||
|
|
|
@ -152,20 +152,28 @@ class Promemoria extends Document
|
|||
return $this->hasMany(Components\Descrizione::class, 'id_promemoria');
|
||||
}
|
||||
|
||||
public function getModuleAttribute() {}
|
||||
public function getModuleAttribute()
|
||||
{
|
||||
}
|
||||
|
||||
public function getReferenceName() {}
|
||||
public function getReferenceName()
|
||||
{
|
||||
}
|
||||
|
||||
public function getReferenceNumber()
|
||||
{
|
||||
}
|
||||
|
||||
public function getReferenceDate() {}
|
||||
public function getReferenceDate()
|
||||
{
|
||||
}
|
||||
|
||||
public function getReferenceRagioneSociale()
|
||||
{
|
||||
return $this->anagrafica->ragione_sociale;
|
||||
}
|
||||
|
||||
public function getReference() {}
|
||||
public function getReference()
|
||||
{
|
||||
}
|
||||
}
|
||||
|
|
|
@ -35,14 +35,14 @@ echo '
|
|||
<input type="hidden" name="backto" value="record-edit">
|
||||
<input type="hidden" name="op" value="updatesede">';
|
||||
|
||||
if (!$utenti) {
|
||||
echo'
|
||||
if (!$utenti) {
|
||||
echo '
|
||||
<div class="alert alert-warning">
|
||||
<i class="fa fa-warning"></i> '.tr('Nessun utente ha i permessi per questa sede, impostali da').' <a href='.base_path().'/editor.php?id_module='.Module::where('name', 'Utenti e permessi')->first()->id.' target="_blank">'.tr('Utenti e Permessi.').'</a>
|
||||
</div>';
|
||||
}
|
||||
}
|
||||
|
||||
echo'
|
||||
echo '
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
{[ "type": "text", "label": "'.tr('Nome sede').'", "name": "nomesede", "required": 1, "value": "$nomesede$" ]}
|
||||
|
|
|
@ -120,7 +120,7 @@ class Generator
|
|||
|
||||
$values = array_column($replaces, 'regex');
|
||||
|
||||
$pattern = preg_replace('/#{1,}/', '#', $pattern);
|
||||
$pattern = preg_replace('/#{1,}/', '#', (string) $pattern);
|
||||
$pattern = str_replace('\\#', '#', preg_quote($pattern, '/'));
|
||||
$pattern = str_replace(array_keys($replaces), array_values($values), $pattern);
|
||||
|
||||
|
|
|
@ -157,7 +157,7 @@ class XML
|
|||
protected static function removeBOM($text)
|
||||
{
|
||||
$bom = pack('H*', 'EFBBBF');
|
||||
$text = preg_replace("/^$bom/", '', $text);
|
||||
$text = preg_replace("/^$bom/", '', (string) $text);
|
||||
|
||||
return $text;
|
||||
}
|
||||
|
|
|
@ -114,7 +114,7 @@ foreach ($righe as $riga) {
|
|||
'.nl2br($text);
|
||||
}
|
||||
}
|
||||
$r['descrizione'] = preg_replace("/Rif\.(.*)/s", '', $r['descrizione']);
|
||||
$r['descrizione'] = preg_replace("/Rif\.(.*)/s", '', (string) $r['descrizione']);
|
||||
$autofill->count($r['descrizione']);
|
||||
}
|
||||
|
||||
|
|
|
@ -120,7 +120,7 @@ foreach ($righe as $riga) {
|
|||
'.nl2br($text);
|
||||
}
|
||||
}
|
||||
$r['descrizione'] = preg_replace("/Rif\.(.*)/s", ' ', $r['descrizione']);
|
||||
$r['descrizione'] = preg_replace("/Rif\.(.*)/s", ' ', (string) $r['descrizione']);
|
||||
$autofill->count($r['descrizione']);
|
||||
}
|
||||
|
||||
|
|
|
@ -21,7 +21,6 @@ if (!$is_last_page) {
|
|||
return;
|
||||
}
|
||||
|
||||
|
||||
$imponibile = 0;
|
||||
foreach ($v_totale as $key => $v) {
|
||||
$totale_scontato += $v;
|
||||
|
@ -32,7 +31,7 @@ foreach ($righe as $riga) {
|
|||
$sconto += floatval($riga->sconto);
|
||||
}
|
||||
|
||||
$imponibile = $totale_scontato+$sconto;
|
||||
$imponibile = $totale_scontato + $sconto;
|
||||
|
||||
$rivalsa = 0;
|
||||
foreach ($righe as $riga) {
|
||||
|
@ -44,7 +43,7 @@ $totale_imponibile = $totale_scontato + $rivalsa;
|
|||
$totale_iva = 0;
|
||||
foreach ($righe as $riga) {
|
||||
$aliquota = $database->fetchOne('SELECT percentuale FROM co_iva WHERE id = '.prepare($riga->idiva))['percentuale'];
|
||||
$totale_iva += $riga['iva'] + $riga['rivalsainps'] * $aliquota / 100;;
|
||||
$totale_iva += $riga['iva'] + $riga['rivalsainps'] * $aliquota / 100;
|
||||
}
|
||||
|
||||
$totale = $totale_iva + $totale_imponibile;
|
||||
|
@ -209,11 +208,11 @@ echo '
|
|||
* Altrimenti: Imponibile | Totale IVA | Totale
|
||||
*/
|
||||
if ($has_ritenuta || $show_sconto || $has_rivalsa) {
|
||||
echo "
|
||||
echo "
|
||||
<tr>
|
||||
<th class='text-center small' style='width:".$width."'>
|
||||
".tr('Imponibile', [], ['upper' => true])."
|
||||
</th>";
|
||||
".tr('Imponibile', [], ['upper' => true]).'
|
||||
</th>';
|
||||
} else {
|
||||
echo "
|
||||
<tr>
|
||||
|
@ -231,10 +230,10 @@ if ($show_sconto) {
|
|||
</th>';
|
||||
}
|
||||
if ($has_rivalsa) {
|
||||
echo "
|
||||
echo "
|
||||
<th class='text-center small' style='width:".$width."'>
|
||||
".tr('Cassa Previdenziale', [], ['upper' => true])."
|
||||
</th>";
|
||||
".tr('Cassa Previdenziale', [], ['upper' => true]).'
|
||||
</th>';
|
||||
} else {
|
||||
echo "
|
||||
<th class='text-center small' style='width:".$width."'>
|
||||
|
@ -242,9 +241,9 @@ echo "
|
|||
}
|
||||
echo "
|
||||
<th class='text-center small' style='width:".$width."'>
|
||||
".(($show_sconto) ? $etichette['totale_parziale'] : $etichette['totale'])."
|
||||
".(($show_sconto) ? $etichette['totale_parziale'] : $etichette['totale']).'
|
||||
</th>
|
||||
</tr>";
|
||||
</tr>';
|
||||
|
||||
if ($has_ritenuta || $show_sconto || $has_rivalsa) {
|
||||
echo "
|
||||
|
@ -267,7 +266,7 @@ if ($show_sconto) {
|
|||
<td class='cell-padded text-center'>
|
||||
".moneyFormat($totale_scontato, $d_totali).'
|
||||
</td>';
|
||||
} else if (!$has_rivalsa) {
|
||||
} elseif (!$has_rivalsa) {
|
||||
echo "
|
||||
<td class='cell-padded text-center'>
|
||||
</td>";
|
||||
|
@ -283,7 +282,7 @@ if ($has_rivalsa) {
|
|||
foreach ($rs2 as $rs) {
|
||||
$descrizione .= '<p class="text-muted small-bold">'.$rs['descrizione'].'</p>';
|
||||
}
|
||||
|
||||
|
||||
echo '
|
||||
<td class="cell-padded text-center">
|
||||
'.moneyFormat($rivalsa, 2).'
|
||||
|
@ -293,8 +292,7 @@ if ($has_rivalsa) {
|
|||
'.moneyFormat($totale_imponibile, $d_totali).'
|
||||
</td>
|
||||
</tr>';
|
||||
|
||||
} else if ($show_sconto) {
|
||||
} elseif ($show_sconto) {
|
||||
echo '
|
||||
<td class="cell-padded text-center">
|
||||
</td>
|
||||
|
@ -332,19 +330,18 @@ echo '
|
|||
<td class="cell-padded text-center" colspan="'.$first_colspan.'">
|
||||
'.moneyFormat($totale_iva, $d_totali).'
|
||||
</td>';
|
||||
if ($has_ritenuta || $show_sconto || $has_rivalsa || $has_split_payment || $has_sconto_finale) {
|
||||
echo'<td class="cell-padded text-center" colspan="'.$second_colspan.'">
|
||||
if ($has_ritenuta || $show_sconto || $has_rivalsa || $has_split_payment || $has_sconto_finale) {
|
||||
echo '<td class="cell-padded text-center" colspan="'.$second_colspan.'">
|
||||
'.moneyFormat($totale, $d_total);
|
||||
} else {
|
||||
echo'
|
||||
} else {
|
||||
echo '
|
||||
<td class="cell-padded text-center" colspan="'.$second_colspan.'" style="background-color:#77dd77;">
|
||||
<b>'.moneyFormat($totale, $d_total).'</b>';
|
||||
}
|
||||
echo'
|
||||
}
|
||||
echo '
|
||||
</td>
|
||||
</tr>';
|
||||
|
||||
|
||||
/*
|
||||
* Riga di riepilogo di Ritenuta d'acconto e Ritenuta contributi.
|
||||
* Ritenuta | Totale (+ Rivalsa INPS - Ritenuta)
|
||||
|
|
|
@ -40,7 +40,7 @@ $query = Query::getQuery($structure, $where, 0, []);
|
|||
$query = Modules::replaceAdditionals($structure->id, $query);
|
||||
|
||||
// Modifiche alla query principale
|
||||
$query = preg_replace('/FROM[\s\t\n]+`mg_articoli`/s', 'FROM `mg_articoli` LEFT JOIN (SELECT `idarticolo`, SUM(`qta`) AS qta_totale FROM `mg_movimenti` WHERE `data` <='.prepare($period_end).' GROUP BY `idarticolo`) movimenti ON `movimenti`.`idarticolo`=`mg_articoli`.`id` ', $query);
|
||||
$query = preg_replace('/FROM[\s\t\n]+`mg_articoli`/s', 'FROM `mg_articoli` LEFT JOIN (SELECT `idarticolo`, SUM(`qta`) AS qta_totale FROM `mg_movimenti` WHERE `data` <='.prepare($period_end).' GROUP BY `idarticolo`) movimenti ON `movimenti`.`idarticolo`=`mg_articoli`.`id` ', (string) $query);
|
||||
$query = preg_replace('/^SELECT/', 'SELECT `movimenti`.`qta_totale`, ', $query);
|
||||
|
||||
if (post('acquisto') == 'standard') {
|
||||
|
|
|
@ -151,7 +151,7 @@ foreach ($righe as $riga) {
|
|||
'.nl2br($text);
|
||||
}
|
||||
}
|
||||
$r['descrizione'] = preg_replace("/Rif\.(.*)/s", '', $r['descrizione']);
|
||||
$r['descrizione'] = preg_replace("/Rif\.(.*)/s", '', (string) $r['descrizione']);
|
||||
$autofill->count($r['descrizione']);
|
||||
}
|
||||
|
||||
|
|
|
@ -3,17 +3,17 @@ ALTER TABLE `mg_articoli` ADD `id_marchio` INT NULL DEFAULT NULL;
|
|||
|
||||
CREATE TABLE `mg_marchi` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`nome` varchar(255) NOT NULL,
|
||||
`name` varchar(255) NOT NULL,
|
||||
`deleted_at` timestamp NULL DEFAULT NULL,
|
||||
PRIMARY KEY (`id`)) ENGINE = InnoDB;
|
||||
|
||||
INSERT INTO `zz_modules` (`name`, `directory`, `options`, `options2`, `icon`, `version`, `compatibility`, `order`, `parent`, `default`, `enabled`, `use_notes`, `use_checklists`) VALUES ('Marchi', 'marchi', 'SELECT |select| FROM `mg_marchi` WHERE 1=1 HAVING 2=2 ORDER BY `mg_marchi`.`nome`', '', 'fa fa-angle-right', '2.5.6', '2.5.6', '7', (SELECT `id` FROM `zz_modules` AS `t` WHERE `name` = 'Articoli'), '1', '1', '1', '1');
|
||||
INSERT INTO `zz_modules` (`name`, `directory`, `options`, `options2`, `icon`, `version`, `compatibility`, `order`, `parent`, `default`, `enabled`, `use_notes`, `use_checklists`) VALUES ('Marchi', 'marchi', 'SELECT |select| FROM `mg_marchi` WHERE 1=1 HAVING 2=2 ORDER BY `mg_marchi`.`name`', '', 'fa fa-angle-right', '2.5.6', '2.5.6', '7', (SELECT `id` FROM `zz_modules` AS `t` WHERE `name` = 'Tabelle'), '1', '1', '1', '1');
|
||||
|
||||
INSERT INTO `zz_modules_lang` (`id_lang`, `id_record`, `title`) VALUES ('1', (SELECT `id` FROM `zz_modules` WHERE `name` = 'Marchi'), 'Marchi');
|
||||
|
||||
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` = 'Marchi'), 'id', 'mg_marchi.id', '0', '0', '0', '0', '0', '', '', '0', '0', '0'),
|
||||
((SELECT `id` FROM `zz_modules` WHERE `name` = 'Marchi'), 'Nome', 'mg_marchi.nome', '1', '0', '0', '0', '0', '', '', '1', '0', '0');
|
||||
((SELECT `id` FROM `zz_modules` WHERE `name` = 'Marchi'), 'Nome', 'mg_marchi.name', '1', '0', '0', '0', '0', '', '', '1', '0', '0');
|
||||
|
||||
INSERT INTO `zz_views_lang` (`id_lang`, `id_record`, `title`) VALUES
|
||||
(1, (SELECT `id` FROM `zz_views` WHERE `name` = 'id' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Marchi')), 'id'),
|
||||
|
|
Loading…
Reference in New Issue