mirror of
https://github.com/devcode-it/openstamanager.git
synced 2025-02-27 16:57:38 +01:00
Merge branch 'master' of https://github.com/devcode-it/openstamanager
This commit is contained in:
commit
0f74416fc3
20
CHANGELOG.md
20
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.21 (2021-01-)](#2421-2021-01-14)
|
||||
- [2.4.20 (2020-12-31)](#2420-2020-12-31)
|
||||
- [2.4.19 (2020-11-10)](#2419-2020-11-10)
|
||||
- [2.4.18 (2020-10-30)](#2418-2020-10-30)
|
||||
@ -31,6 +32,25 @@ 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.21 (2021-01-14)
|
||||
|
||||
### Aggiunto (Added)
|
||||
- Aggiunto fallback selezione IVA per natura mancante in fase di import fattura di acquisto
|
||||
- Aggiunto filtro periodo anche per stampe mastrini di livello 1 e 2
|
||||
- Aggiunta gestione peso e volume automatici per DDT e Fatture
|
||||
|
||||
### Fixed
|
||||
- Fix falsi positivi su warning verifica numero fatture di vendita (#919)
|
||||
- Fix fornitore predefinito articoli (#928)
|
||||
- Correzioni in importazione FE
|
||||
- Fix per invio email (#923)
|
||||
- Correzione sconto unitario (#925)
|
||||
- Fix validazione codice fiscale
|
||||
- Fix dichiarazione intento su data fattura
|
||||
- Fix inclusione nel filtro periodo degli estremi temporali
|
||||
- Fix sul calcolo in base alla validità della data conclusione del contratto
|
||||
- Correzzione aggiunta **Codice destinatario** in fase di creazione **Anagrafica**
|
||||
- Correzzione selezione aliq. IVA in fase di import **Fatture di acquisto**
|
||||
|
||||
## 2.4.20 (2020-12-31)
|
||||
|
||||
|
@ -83,7 +83,7 @@ if (!empty($query)) {
|
||||
$value = trim($value);
|
||||
|
||||
// Allineamento a destra se il valore della prima riga risulta numerica
|
||||
if (formatter()->isStandardNumber($value)) {
|
||||
if (is_numeric($value) && formatter()->isStandardNumber($value)) {
|
||||
$align[$field] = 'text-right';
|
||||
}
|
||||
|
||||
|
@ -296,6 +296,12 @@ function aggiornaPrezzoArticolo() {
|
||||
let prezzo_previsto = getPrezzoPerQuantita(qta);
|
||||
|
||||
$("#prezzo_unitario").val(prezzo_previsto).trigger("change");
|
||||
|
||||
// Aggiornamento automatico di guadagno e margine
|
||||
if (direzione == "entrata") {
|
||||
aggiorna_guadagno();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@ -306,6 +312,12 @@ function aggiornaScontoArticolo() {
|
||||
let sconto_previsto = getScontoPerQuantita(qta);
|
||||
|
||||
$("#sconto").val(sconto_previsto).trigger("change");
|
||||
|
||||
// Aggiornamento automatico di guadagno e margine
|
||||
if (direzione == "entrata") {
|
||||
aggiorna_guadagno();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -63,7 +63,7 @@ if ($options['dir'] == 'entrata') {
|
||||
var costo_unitario = $("#costo_unitario").val().toEnglish();
|
||||
var prezzo = $("#prezzo_unitario").val().toEnglish();
|
||||
var sconto = $("#sconto").val().toEnglish();
|
||||
if ($("#tipo_sconto").val() === "PRC") {
|
||||
if ($("select[id^=\'tipo_sconto\']").val() === "PRC") {
|
||||
sconto = sconto / 100 * prezzo;
|
||||
}
|
||||
|
||||
@ -91,7 +91,7 @@ if ($options['dir'] == 'entrata') {
|
||||
$("#prezzo_unitario").keyup(aggiorna_guadagno);
|
||||
$("#costo_unitario").keyup(aggiorna_guadagno);
|
||||
$("#sconto").keyup(aggiorna_guadagno);
|
||||
$("#tipo_sconto").change(aggiorna_guadagno);
|
||||
$("select[id^=\'tipo_sconto\']").change(aggiorna_guadagno);
|
||||
</script>';
|
||||
}
|
||||
|
||||
|
@ -69,7 +69,7 @@ echo '
|
||||
|
||||
sconto_unitario.val(unitario.toLocale());
|
||||
|
||||
if (!descrizione.val() && sconto !== 0) {
|
||||
if (sconto !== 0) {
|
||||
descrizione.val(msg + " " + Math.abs(sconto).toLocale() + "%");
|
||||
}
|
||||
}
|
||||
@ -80,7 +80,7 @@ echo '
|
||||
|
||||
sconto_percentuale.val(0);
|
||||
|
||||
if (!descrizione.val() && sconto !== 0) {
|
||||
if (sconto !== 0) {
|
||||
descrizione.val(msg);
|
||||
}
|
||||
}
|
||||
|
Binary file not shown.
File diff suppressed because it is too large
Load Diff
9
mail.php
9
mail.php
@ -82,7 +82,7 @@ echo '
|
||||
<b>'.tr('Destinatari').' <span class="tip" title="'.tr('Email delle sedi, dei referenti o agente collegato all\'anagrafica.').'"><i class="fa fa-question-circle-o"></i></span></b>
|
||||
<div class="row" id="lista-destinatari">
|
||||
<div class="col-md-12">
|
||||
{[ "type": "email", "name": "destinatari[]", "value": "'.$email.'", "icon-before": "choice|email", "extra": "onkeyup=\'aggiungi_destinatario();\'", "class": "destinatari", "required": 1 ]}
|
||||
{[ "type": "email", "name": "destinatari[0]", "value": "'.$email.'", "icon-before": "choice|email", "extra": "onkeyup=\'aggiungi_destinatario();\'", "class": "destinatari", "required": 1 ]}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -142,9 +142,9 @@ echo '
|
||||
</form>';
|
||||
|
||||
echo '
|
||||
<div id="destinatari_input" class="hide">
|
||||
<div class="hidden" id="template-destinatario">
|
||||
<div class="col-md-12">
|
||||
{[ "type": "email", "name": "destinatari[]", "icon-before": "choice|email|cc", "extra": "onkeyup=\'aggiungi_destinatario();\'", "class": "destinatari" ]}
|
||||
{[ "type": "email", "name": "destinatari[-id-]", "icon-before": "choice|email", "extra": "onkeyup=\'aggiungi_destinatario();\'", "class": "destinatari" ]}
|
||||
</div>
|
||||
</div>';
|
||||
|
||||
@ -192,8 +192,7 @@ echo '
|
||||
if (last.val()) {
|
||||
cleanup_inputs();
|
||||
|
||||
aggiungiContenuto( "#lista-destinatari", "#lista-destinatari > div.col-md-12:last", { "id": $("#lista-destinatari > div").length, "value": "", "required": false } );
|
||||
$("#lista-destinatari > div.input-group:last").wrap( "<div class=\"col-md-12\"></div>" );
|
||||
aggiungiContenuto("#lista-destinatari", "#template-destinatario", {"-id-": $("#lista-destinatari > div").length});
|
||||
|
||||
$(".destinatari").each(function(){
|
||||
$(this).autocomplete({source: emails});
|
||||
|
@ -116,7 +116,7 @@ if (!empty($results)) {
|
||||
|
||||
if (!empty($errors)) {
|
||||
echo '
|
||||
<table class="table table-bordered table-striped">
|
||||
<table class="table table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>'.tr('Colonna').'</th>
|
||||
@ -127,8 +127,13 @@ if (!empty($results)) {
|
||||
<tbody>';
|
||||
|
||||
foreach ($errors as $name => $diff) {
|
||||
if(count($diff) == 1 && array_key_exists('type',$diff) && str_contains($diff['type']['expected'] , $diff['type']['current'])){
|
||||
$class="info";
|
||||
}else{
|
||||
$class="warning";
|
||||
}
|
||||
echo '
|
||||
<tr>
|
||||
<tr class="bg-'.$class.'" >
|
||||
<td>
|
||||
'.$name.'
|
||||
</td>
|
||||
@ -145,7 +150,7 @@ if (!empty($results)) {
|
||||
|
||||
if (!empty($foreign_keys)) {
|
||||
echo '
|
||||
<table class="table table-bordered table-striped">
|
||||
<table class="table table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>'.tr('Foreign keys').'</th>
|
||||
@ -156,8 +161,14 @@ if (!empty($results)) {
|
||||
<tbody>';
|
||||
|
||||
foreach ($foreign_keys as $name => $diff) {
|
||||
|
||||
if(count($diff) == 2 && array_key_exists('current',$diff) && $diff['current'] == null ){
|
||||
$class="info";
|
||||
}else{
|
||||
$class="warning";
|
||||
}
|
||||
echo '
|
||||
<tr>
|
||||
<tr class="bg-'.$class.'" >
|
||||
<td>
|
||||
'.$name.'
|
||||
</td>
|
||||
|
@ -176,7 +176,7 @@ switch (post('op')) {
|
||||
}
|
||||
|
||||
// Validazione del Codice Fiscale, solo per anagrafiche Private e Aziende, ignoro controllo se codice fiscale e settato uguale alla p.iva
|
||||
if ($anagrafica->tipo != 'Ente pubblico' && !empty($anagrafica->codice_fiscale) && !empty($anagrafica->partita_iva) && $anagrafica->codice_fiscale != $anagrafica->partita_iva) {
|
||||
if ($anagrafica->tipo != 'Ente pubblico' && !empty($anagrafica->codice_fiscale) && $anagrafica->codice_fiscale != $anagrafica->partita_iva) {
|
||||
$check_codice_fiscale = Validate::isValidTaxCode($codice_fiscale);
|
||||
if (empty($check_codice_fiscale)) {
|
||||
flash()->warning(tr('Attenzione: il codice fiscale _COD_ potrebbe non essere valido.', [
|
||||
|
@ -62,7 +62,7 @@ if ($is_fornitore && empty($record['idconto_fornitore'])){
|
||||
}
|
||||
|
||||
if (sizeof($problemi_anagrafica) > 0) {
|
||||
echo '<div class="alert alert-warning"><i class="fa fa-warning"></i> '.tr("Controllare: _CAMPI_" , [
|
||||
echo '<div class="alert alert-warning"><i class="fa fa-warning"></i> '.tr("Attenzione: _CAMPI_" , [
|
||||
'_CAMPI_' => implode(', ', $problemi_anagrafica)
|
||||
]).'</div>';
|
||||
}
|
||||
|
@ -46,7 +46,7 @@ switch ($name) {
|
||||
['idanagrafica', '<>', $id_record],
|
||||
])->count() == 0;
|
||||
|
||||
$message = $disponibile ? tr('Il codice fiscale non è già inserito in una anagrafica') : tr("Il codice fiscale è già utilizzato in un'altra anagrafica");
|
||||
$message = $disponibile ? tr('Questo codice fiscale non è ancora stato utilizzato') : tr("Il codice fiscale è già utilizzato in un'altra anagrafica");
|
||||
|
||||
// Validazione del Codice Fiscale, solo per anagrafiche Private e Aziende, ignoro controllo se codice fiscale e settato uguale alla p.iva
|
||||
if (empty($anagrafica) || ($anagrafica->tipo != 'Ente pubblico' && $value != $anagrafica->partita_iva)) {
|
||||
@ -55,6 +55,22 @@ switch ($name) {
|
||||
$message .= '. '.tr('Attenzione: il codice fiscale _COD_ potrebbe non essere valido', [
|
||||
'_COD_' => $value,
|
||||
]);
|
||||
$disponibile = false;
|
||||
}
|
||||
}
|
||||
|
||||
if($value == $anagrafica->partita_iva){
|
||||
$partita_iva = !empty($anagrafica) && is_numeric($value) ? $anagrafica->nazione->iso2.$value : $value;
|
||||
$result = $disponibile;
|
||||
$check = Validate::isValidVatNumber($partita_iva);
|
||||
if (empty($check['valid-format'])) {
|
||||
$disponibile = false;
|
||||
$errors[] = tr('La partita iva inserita non possiede un formato valido');
|
||||
}
|
||||
|
||||
if (isset($check['valid']) && empty($check['valid'])) {
|
||||
$disponibile = false;
|
||||
$errors[] = tr("Impossibile verificare l'origine della partita iva");
|
||||
}
|
||||
}
|
||||
|
||||
@ -72,7 +88,7 @@ switch ($name) {
|
||||
['idanagrafica', '<>', $id_record],
|
||||
])->count() == 0;
|
||||
|
||||
$message = $disponibile ? tr('La partita iva non è già inserita in una anagrafica') : tr("La partita iva è già utilizzata in un'altra anagrafica");
|
||||
$message = $disponibile ? tr('Questa partita iva non è ancora stata utilizzata') : tr("La partita iva è già utilizzata in un'altra anagrafica");
|
||||
|
||||
$partita_iva = !empty($anagrafica) && is_numeric($value) ? $anagrafica->nazione->iso2.$value : $value;
|
||||
|
||||
@ -113,7 +129,7 @@ switch ($name) {
|
||||
])->count() == 0;
|
||||
$result = $disponibile;
|
||||
|
||||
$message = $disponibile ? tr("L'email non è già inserita in una anagrafica") : tr("L'email è già utilizzata in un'altra anagrafica");
|
||||
$message = $disponibile ? tr("Questa email non è ancora stata utilizzata") : tr("L'email è già utilizzata in un'altra anagrafica");
|
||||
|
||||
$errors = [];
|
||||
$check = Validate::isValidEmail($value);
|
||||
|
@ -68,7 +68,7 @@ include_once __DIR__.'/../../core.php';
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
{[ "type": "text", "label": "<?php echo tr('Codice SIA azienda'); ?>", "name": "codice_sia", "class": "alphanumeric-mask", "maxlength": 5, "value": "$codice_sia$", "help":"<?php echo tr('Questo campo è necessario per la generazione delle Ri.Ba.'); ?>" ]}
|
||||
{[ "type": "text", "label": "<?php echo tr('Codice SIA azienda'); ?>", "name": "codice_sia", "class": "alphanumeric-mask", "maxlength": 5, "value": "$codice_sia$", "help":"<?php echo tr('Società Interbancaria per l\'Automazione. Questo campo è necessario per la generazione delle Ri.Ba.<br>E\' composto da 5 caratteri alfanumerici.'); ?>" ]}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -63,7 +63,7 @@ switch (post('op')) {
|
||||
$idpagamento = post('idpagamento');
|
||||
$numero_esterno = post('numero_esterno');
|
||||
$id_anagrafica = post('idanagrafica');
|
||||
|
||||
|
||||
if ($dir == 'uscita') {
|
||||
$idrivalsainps = post('id_rivalsa_inps');
|
||||
$idritenutaacconto = post('id_ritenuta_acconto');
|
||||
@ -73,7 +73,7 @@ switch (post('op')) {
|
||||
$idritenutaacconto = 0;
|
||||
$bollo = 0;
|
||||
}
|
||||
|
||||
|
||||
$tipo_sconto = post('tipo_sconto_generico');
|
||||
$sconto = post('sconto_generico');
|
||||
|
||||
@ -107,6 +107,8 @@ switch (post('op')) {
|
||||
'n_colli' => post('n_colli'),
|
||||
'peso' => post('peso'),
|
||||
'volume' => post('volume'),
|
||||
'peso_manuale' => post('peso_manuale'),
|
||||
'volume_manuale' => post('volume_manuale'),
|
||||
'bollo' => 0,
|
||||
'rivalsainps' => 0,
|
||||
'ritenutaacconto' => 0,
|
||||
|
@ -218,35 +218,21 @@ if ($dir == 'entrata') {
|
||||
echo '
|
||||
<div class="row">
|
||||
<div class="col-md-3">
|
||||
{[ "type": "number", "label": "'.tr('Peso').'", "name": "peso", "value": "$peso$", "readonly": "'.intval(empty($record['peso'])).'", "help": "'.tr('Il valore del campo Peso viene calcolato in automatico sulla base degli articoli inseriti nel documento, a meno dell\'impostazione di un valore manuale in questo punto').'" ]}
|
||||
{[ "type": "number", "label": "'.tr('Peso').'", "name": "peso", "value": "$peso$", "readonly": "'.intval(empty($record['peso_manuale'])).'", "help": "'.tr('Il valore del campo Peso viene calcolato in automatico sulla base degli articoli inseriti nel documento, a meno dell\'impostazione di un valore manuale in questo punto').'" ]}
|
||||
<input type="hidden" id="peso_calcolato" name="peso_calcolato" value="'.$ddt->peso_calcolato.'">
|
||||
</div>
|
||||
|
||||
<div class="col-md-3">
|
||||
{[ "type": "checkbox", "label": "'.tr('Modifica peso').'", "name": "peso_manuale", "value": '.intval(!empty($record['peso'])).', "help": "'.tr('Seleziona per modificare manualmente il campo Peso').'", "placeholder": "'.tr('Modifica peso').'" ]}
|
||||
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
$("#peso_manuale").click(function() {
|
||||
$("#peso").prop("readonly", !$("#peso_manuale").is(":checked"));
|
||||
});
|
||||
});
|
||||
</script>
|
||||
{[ "type": "checkbox", "label": "'.tr('Modifica peso').'", "name": "peso_manuale", "value":"$peso_manuale$", "help": "'.tr('Seleziona per modificare manualmente il campo Peso').'", "placeholder": "'.tr('Modifica peso').'" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-3">
|
||||
{[ "type": "number", "label": "'.tr('Volume').'", "name": "volume", "value": "$volume$", "readonly": "'.intval(empty($record['volume'])).'", "help": "'.tr('Il valore del campo Volume viene calcolato in automatico sulla base degli articoli inseriti nel documento, a meno dell\'impostazione di un valore manuale in questo punto').'" ]}
|
||||
{[ "type": "number", "label": "'.tr('Volume').'", "name": "volume", "value": "$volume$", "readonly": "'.intval(empty($record['volume_manuale'])).'", "help": "'.tr('Il valore del campo volume viene calcolato in automatico sulla base degli articoli inseriti nel documento, a meno dell\'impostazione di un valore manuale in questo punto').'" ]}
|
||||
<input type="hidden" id="volume_calcolato" name="volume_calcolato" value="'.$ddt->volume_calcolato.'">
|
||||
</div>
|
||||
|
||||
<div class="col-md-3">
|
||||
{[ "type": "checkbox", "label": "'.tr('Modifica volume').'", "name": "volume_manuale", "value": '.intval(!empty($record['volume'])).', "help": "'.tr('Seleziona per modificare manualmente il campo Volume').'", "placeholder": "'.tr('Modifica volume').'" ]}
|
||||
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
$("#volume_manuale").click(function() {
|
||||
$("#volume").prop("readonly", !$("#volume_manuale").is(":checked"));
|
||||
});
|
||||
});
|
||||
</script>
|
||||
{[ "type": "checkbox", "label": "'.tr('Modifica volume').'", "name": "volume_manuale", "value":"$volume_manuale$", "help": "'.tr('Seleziona per modificare manualmente il campo volume').'", "placeholder": "'.tr('Modifica volume').'" ]}
|
||||
</div>
|
||||
</div>';
|
||||
}
|
||||
@ -421,6 +407,26 @@ function caricaRighe() {
|
||||
}
|
||||
|
||||
$(document).ready(function() {
|
||||
if(!$("#peso_manuale").is(":checked")){
|
||||
input("peso").set($("#peso_calcolato").val());
|
||||
}
|
||||
$("#peso_manuale").click(function() {
|
||||
$("#peso").prop("readonly", !$("#peso_manuale").is(":checked"));
|
||||
if(!$("#peso_manuale").is(":checked")){
|
||||
input("peso").set($("#peso_calcolato").val());
|
||||
}
|
||||
});
|
||||
|
||||
if(!$("#volume_manuale").is(":checked")){
|
||||
input("volume").set($("#volume_calcolato").val());
|
||||
}
|
||||
$("#volume_manuale").click(function() {
|
||||
$("#volume").prop("readonly", !$("#volume_manuale").is(":checked"));
|
||||
if(!$("#volume_manuale").is(":checked")){
|
||||
input("volume").set($("#volume_calcolato").val());
|
||||
}
|
||||
});
|
||||
|
||||
caricaRighe();
|
||||
});
|
||||
|
||||
|
@ -106,6 +106,8 @@ switch (post('op')) {
|
||||
|
||||
$fattura->peso = post('peso');
|
||||
$fattura->volume = post('volume');
|
||||
$fattura->peso_manuale = post('peso_manuale');
|
||||
$fattura->volume_manuale = post('volume_manuale');
|
||||
|
||||
$fattura->rivalsainps = 0;
|
||||
$fattura->ritenutaacconto = 0;
|
||||
|
@ -518,35 +518,21 @@ if ($record['descrizione_tipo'] == 'Fattura accompagnatoria di vendita') {
|
||||
echo '
|
||||
<div class="row">
|
||||
<div class="col-md-3">
|
||||
{[ "type": "number", "label": "'.tr('Peso').'", "name": "peso", "value": "$peso$", "readonly": "'.intval(empty($record['peso'])).'", "help": "'.tr('Il valore del campo Peso viene calcolato in automatico sulla base degli articoli inseriti nel documento, a meno dell\'impostazione di un valore manuale in questo punto').'" ]}
|
||||
{[ "type": "number", "label": "'.tr('Peso').'", "name": "peso", "value": "$peso$", "readonly": "'.intval(empty($record['peso_manuale'])).'", "help": "'.tr('Il valore del campo Peso viene calcolato in automatico sulla base degli articoli inseriti nel documento, a meno dell\'impostazione di un valore manuale in questo punto').'" ]}
|
||||
<input type="hidden" id="peso_calcolato" name="peso_calcolato" value="'.$fattura->peso_calcolato.'">
|
||||
</div>
|
||||
|
||||
<div class="col-md-3">
|
||||
{[ "type": "checkbox", "label": "'.tr('Modifica peso').'", "name": "peso_manuale", "value": '.intval(!empty($record['peso'])).', "help": "'.tr('Seleziona per modificare manualmente il campo Peso').'", "placeholder": "'.tr('Modifica peso').'" ]}
|
||||
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
$("#peso_manuale").click(function() {
|
||||
$("#peso").prop("readonly", !$("#peso_manuale").is(":checked"));
|
||||
});
|
||||
});
|
||||
</script>
|
||||
{[ "type": "checkbox", "label": "'.tr('Modifica peso').'", "name": "peso_manuale", "value":"$peso_manuale$", "help": "'.tr('Seleziona per modificare manualmente il campo Peso').'", "placeholder": "'.tr('Modifica peso').'" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-3">
|
||||
{[ "type": "number", "label": "'.tr('Volume').'", "name": "volume", "value": "$volume$", "readonly": "'.intval(empty($record['volume'])).'", "help": "'.tr('Il valore del campo Volume viene calcolato in automatico sulla base degli articoli inseriti nel documento, a meno dell\'impostazione di un valore manuale in questo punto').'" ]}
|
||||
{[ "type": "number", "label": "'.tr('Volume').'", "name": "volume", "value": "$volume$", "readonly": "'.intval(empty($record['volume_manuale'])).'", "help": "'.tr('Il valore del campo Volume viene calcolato in automatico sulla base degli articoli inseriti nel documento, a meno dell\'impostazione di un valore manuale in questo punto').'" ]}
|
||||
<input type="hidden" id="volume_calcolato" name="volume_calcolato" value="'.$fattura->volume_calcolato.'">
|
||||
</div>
|
||||
|
||||
<div class="col-md-3">
|
||||
{[ "type": "checkbox", "label": "'.tr('Modifica volume').'", "name": "volume_manuale", "value": '.intval(!empty($record['volume'])).', "help": "'.tr('Seleziona per modificare manualmente il campo Volume').'", "placeholder": "'.tr('Modifica volume').'" ]}
|
||||
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
$("#volume_manuale").click(function() {
|
||||
$("#volume").prop("readonly", !$("#volume_manuale").is(":checked"));
|
||||
});
|
||||
});
|
||||
</script>
|
||||
{[ "type": "checkbox", "label": "'.tr('Modifica volume').'", "name": "volume_manuale", "value":"$volume_manuale$", "help": "'.tr('Seleziona per modificare manualmente il campo Volume').'", "placeholder": "'.tr('Modifica volume').'" ]}
|
||||
</div>
|
||||
</div>
|
||||
</div>';
|
||||
@ -906,6 +892,26 @@ if ($dir == 'entrata') {
|
||||
}
|
||||
}
|
||||
$(document).ready(function() {
|
||||
if(!$("#volume_manuale").is(":checked")){
|
||||
input("volume").set($("#volume_calcolato").val());
|
||||
}
|
||||
$("#volume_manuale").click(function() {
|
||||
$("#volume").prop("readonly", !$("#volume_manuale").is(":checked"));
|
||||
if(!$("#volume_manuale").is(":checked")){
|
||||
input("volume").set($("#volume_calcolato").val());
|
||||
}
|
||||
});
|
||||
|
||||
if(!$("#peso_manuale").is(":checked")){
|
||||
input("peso").set($("#peso_calcolato").val());
|
||||
}
|
||||
$("#peso_manuale").click(function() {
|
||||
$("#peso").prop("readonly", !$("#peso_manuale").is(":checked"));
|
||||
if(!$("#peso_manuale").is(":checked")){
|
||||
input("peso").set($("#peso_calcolato").val());
|
||||
}
|
||||
});
|
||||
|
||||
bolloAutomatico();
|
||||
});
|
||||
input("bollo_automatico").change(function () {
|
||||
|
@ -221,12 +221,12 @@ class Intervento extends Document
|
||||
if ((strpos($maschera, 'YYYY') !== false) or (strpos($maschera, 'yy') !== false)) {
|
||||
$ultimo = Generator::getPreviousFrom($maschera, 'in_interventi', 'codice', [
|
||||
'YEAR(data_richiesta) = '.prepare(date('Y', strtotime($data))),
|
||||
]);
|
||||
], $data);
|
||||
} else {
|
||||
$ultimo = Generator::getPreviousFrom($maschera, 'in_interventi', 'codice');
|
||||
}
|
||||
|
||||
$numero = Generator::generate($maschera, $ultimo);
|
||||
$numero = Generator::generate($maschera, $ultimo, $quantity = 1, $values = [], $data);
|
||||
|
||||
return $numero;
|
||||
}
|
||||
|
@ -34,15 +34,31 @@ echo '
|
||||
<a data-href="'.$structure->fileurl('crea_documento.php').'?id_module='.$id_module.'&id_record='.$id_record.'&documento=intervento" data-toggle="modal" data-title="'.tr('Crea attività').'">
|
||||
<i class="fa fa-wrench"></i> '.tr('Attività').'
|
||||
</a>
|
||||
</li>
|
||||
</li>';
|
||||
|
||||
|
||||
if ($dir == 'entrata'){
|
||||
|
||||
echo '
|
||||
<li>
|
||||
<a data-href="'.$structure->fileurl('crea_documento.php').'?id_module='.$id_module.'&id_record='.$id_record.'&documento=ordine_fornitore" data-toggle="modal" data-title="'.tr('Crea ordine fornitore').'">
|
||||
<i class="fa fa-file-o"></i> '.tr('Ordine fornitore').'
|
||||
</a>
|
||||
</li>
|
||||
</li>';
|
||||
|
||||
}else{
|
||||
|
||||
/*echo '
|
||||
<li>
|
||||
<a data-href="'.$structure->fileurl('crea_documento.php').'?id_module='.$id_module.'&id_record='.$id_record.'&documento=ordine_cliente" data-toggle="modal" data-title="'.tr('Crea ordine cliente').'">
|
||||
<i class="fa fa-file-o"></i> '.tr('Ordine cliente').'
|
||||
</a>
|
||||
</li>';*/
|
||||
|
||||
}
|
||||
|
||||
echo '
|
||||
<li>
|
||||
<a data-href="'.$structure->fileurl('crea_documento.php').'?id_module='.$id_module.'&id_record='.$id_record.'&documento=ddt" data-toggle="modal" data-title="'.tr('Crea ddt').'">
|
||||
<i class="fa fa-truck"></i> '.tr('Ddt').'
|
||||
</a>
|
||||
|
@ -33,7 +33,7 @@ WHERE co_movimenti.idconto='.prepare($id_conto).' AND
|
||||
co_movimenti.data >= '.prepare($_SESSION['period_start']).' AND
|
||||
co_movimenti.data <= '.prepare($_SESSION['period_end']).'
|
||||
GROUP BY co_movimenti.idmastrino
|
||||
ORDER BY co_movimenti.descrizione, co_movimenti.data ASC';
|
||||
ORDER BY co_movimenti.data ASC, co_movimenti.descrizione';
|
||||
$movimenti = $dbo->fetchArray($query);
|
||||
|
||||
if (!empty($movimenti)) {
|
||||
|
@ -385,6 +385,10 @@ if ($permetti_modelli) {
|
||||
$("#modals > div #desc").val(causale);
|
||||
}
|
||||
|
||||
if ($("#modals > div #desc").val() == "") {
|
||||
$("#modals > div #desc").val(causale);
|
||||
}
|
||||
|
||||
$.get(globals.rootdir + "/ajax_complete.php?op=get_conti&idmastrino=" + id_mastrino, function(data) {
|
||||
let conti = data.split(",");
|
||||
let table = $("table.scadenze").first();
|
||||
|
@ -52,7 +52,7 @@ if (!empty($righe)) {
|
||||
echo '
|
||||
<div class="alert alert-danger">
|
||||
'.tr('Ci sono _NUM_ anagrafiche collegate', [
|
||||
'_NUM_' => count($righe),
|
||||
'_NUM_' => $righe,
|
||||
]).'.
|
||||
</div>';
|
||||
} else {
|
||||
|
@ -82,11 +82,13 @@ class FatturaOrdinaria extends FatturaElettronica
|
||||
public function getRighe()
|
||||
{
|
||||
$result = $this->getBody()['DatiBeniServizi']['DettaglioLinee'];
|
||||
$result = $this->forceArray($result);
|
||||
|
||||
// Aggiunta degli arrotondamenti IVA come righe indipendenti
|
||||
$riepolighi = $this->getBody()['DatiBeniServizi']['DatiRiepilogo'];
|
||||
foreach ($riepolighi as $riepilogo) {
|
||||
$valore = floatval($riepilogo['Arrotondamento']);
|
||||
$riepiloghi = $this->getBody()['DatiBeniServizi']['DatiRiepilogo'];
|
||||
$riepiloghi = $this->forceArray($riepiloghi);
|
||||
foreach ($riepiloghi as $riepilogo) {
|
||||
$valore = isset($riepilogo['Arrotondamento']) ? floatval($riepilogo['Arrotondamento']) : 0;
|
||||
if (!empty($valore)) {
|
||||
$descrizione = tr('Arrotondamento IVA _VALUE_', [
|
||||
'_VALUE_' => empty($riepilogo['Natura']) ? numberFormat($riepilogo['AliquotaIVA']).'%' : $riepilogo['Natura'],
|
||||
|
@ -375,6 +375,7 @@ abstract class Article extends Accounting
|
||||
protected function customAfterDataCopiaIn($original)
|
||||
{
|
||||
$this->prezzo_unitario = $original->prezzo_unitario;
|
||||
$this->sconto_unitario = $original->sconto_unitario;
|
||||
|
||||
parent::customAfterDataCopiaIn($original);
|
||||
}
|
||||
|
@ -83,6 +83,7 @@ abstract class Row extends Accounting
|
||||
protected function customAfterDataCopiaIn($original)
|
||||
{
|
||||
$this->prezzo_unitario = $original->prezzo_unitario;
|
||||
$this->sconto_unitario = $original->sconto_unitario;
|
||||
|
||||
parent::customAfterDataCopiaIn($original);
|
||||
}
|
||||
|
@ -137,10 +137,7 @@ class Formatter
|
||||
public function formatNumber($value, $decimals = null)
|
||||
{
|
||||
$value = trim($value);
|
||||
|
||||
if (is_numeric($value)) {
|
||||
$value = floatval($value);
|
||||
}
|
||||
$value = floatval($value);
|
||||
|
||||
if (isset($decimals)) {
|
||||
$original = $this->getPrecision();
|
||||
|
@ -52,7 +52,6 @@ class Upload extends Model
|
||||
// Informazioni di base
|
||||
$original_name = isset($source['name']) ? $source['name'] : basename($source);
|
||||
$model->original_name = $original_name; // Fix per "original" di Eloquent
|
||||
$model->size = $source['size'];
|
||||
|
||||
$model->name = !empty($name) ? $name : $original_name;
|
||||
$model->category = $category;
|
||||
|
@ -50,7 +50,7 @@ $bic_banca = $banca->bic;
|
||||
$module_name = ($record['dir'] == 'entrata') ? 'Fatture di vendita' : 'Fatture di acquisto';
|
||||
|
||||
$id_cliente = $record['idanagrafica'];
|
||||
$id_sede = $record['idsede_partenza'];
|
||||
$id_sede = $record['idsede_destinazione'];
|
||||
|
||||
$tipo_doc = $record['tipo_doc'];
|
||||
$numero = !empty($record['numero_esterno']) ? $record['numero_esterno'] : $record['numero'];
|
||||
|
@ -29,11 +29,11 @@ if (get('lev') == '3') {
|
||||
// Movimenti
|
||||
$records = $dbo->fetchArray('SELECT * FROM co_movimenti WHERE idconto='.prepare($id_record).' AND co_movimenti.data>='.prepare($date_start).' AND co_movimenti.data<='.prepare($date_end));
|
||||
} elseif (get('lev') == '2') {
|
||||
$records = $dbo->fetchArray('SELECT CONCAT(co_pianodeiconti3.numero, " ",co_pianodeiconti3.descrizione) AS descrizione, SUM(totale) AS totale FROM `co_movimenti` INNER JOIN co_pianodeiconti3 ON co_movimenti.idconto=co_pianodeiconti3.id WHERE idconto IN(SELECT id FROM co_pianodeiconti3 WHERE idpianodeiconti2='.prepare($id_record).') GROUP BY idconto HAVING totale!=0');
|
||||
$records = $dbo->fetchArray('SELECT CONCAT(co_pianodeiconti3.numero, " ",co_pianodeiconti3.descrizione) AS descrizione, SUM(totale) AS totale FROM `co_movimenti` INNER JOIN co_pianodeiconti3 ON co_movimenti.idconto=co_pianodeiconti3.id WHERE idconto IN(SELECT id FROM co_pianodeiconti3 WHERE idpianodeiconti2='.prepare($id_record).') AND co_movimenti.data>='.prepare($date_start).' AND co_movimenti.data<='.prepare($date_end).' GROUP BY idconto HAVING totale!=0');
|
||||
$conto2 = $dbo->fetchOne('SELECT * FROM co_pianodeiconti2 WHERE id='.prepare($id_record));
|
||||
$conto1 = $dbo->fetchOne('SELECT * FROM co_pianodeiconti1 WHERE id='.prepare($conto2['idpianodeiconti1']));
|
||||
} elseif (get('lev') == '1') {
|
||||
$records = $dbo->fetchArray('SELECT CONCAT(co_pianodeiconti2.numero, " ", co_pianodeiconti2.descrizione) AS titolo, CONCAT(co_pianodeiconti3.numero, " ",co_pianodeiconti3.descrizione) AS descrizione, SUM(totale) AS totale FROM `co_movimenti` INNER JOIN co_pianodeiconti3 ON co_movimenti.idconto=co_pianodeiconti3.id INNER JOIN co_pianodeiconti2 ON co_pianodeiconti3.idpianodeiconti2=co_pianodeiconti2.id WHERE idconto IN(SELECT id FROM co_pianodeiconti3 WHERE idpianodeiconti2 IN(SELECT id FROM co_pianodeiconti2 WHERE idpianodeiconti1='.prepare($id_record).')) GROUP BY idconto HAVING totale!=0 ORDER BY co_pianodeiconti2.numero');
|
||||
$records = $dbo->fetchArray('SELECT CONCAT(co_pianodeiconti2.numero, " ", co_pianodeiconti2.descrizione) AS titolo, CONCAT(co_pianodeiconti3.numero, " ",co_pianodeiconti3.descrizione) AS descrizione, SUM(totale) AS totale FROM `co_movimenti` INNER JOIN co_pianodeiconti3 ON co_movimenti.idconto=co_pianodeiconti3.id INNER JOIN co_pianodeiconti2 ON co_pianodeiconti3.idpianodeiconti2=co_pianodeiconti2.id WHERE idconto IN(SELECT id FROM co_pianodeiconti3 WHERE idpianodeiconti2 IN(SELECT id FROM co_pianodeiconti2 WHERE idpianodeiconti1='.prepare($id_record).')) AND co_movimenti.data>='.prepare($date_start).' AND co_movimenti.data<='.prepare($date_end).' GROUP BY idconto HAVING totale!=0 ORDER BY co_pianodeiconti2.numero');
|
||||
$conto1 = $dbo->fetchOne('SELECT * FROM co_pianodeiconti1 WHERE id='.prepare($id_record));
|
||||
$risultato = $dbo->fetchOne('SELECT SUM(totale) AS totale FROM `co_movimenti` INNER JOIN co_pianodeiconti3 ON co_movimenti.idconto=co_pianodeiconti3.id INNER JOIN co_pianodeiconti2 ON co_pianodeiconti3.idpianodeiconti2=co_pianodeiconti2.id WHERE idconto IN(SELECT id FROM co_pianodeiconti3 WHERE idpianodeiconti2 IN(SELECT id FROM co_pianodeiconti2 WHERE idpianodeiconti1=(SELECT id FROM co_pianodeiconti1 WHERE descrizione="Economico")))');
|
||||
}
|
||||
|
@ -116,11 +116,11 @@ UPDATE `co_righe_documenti`
|
||||
INNER JOIN `or_righe_ordini` ON `co_righe_documenti`.`original_id` = `or_righe_ordini`.`id`
|
||||
INNER JOIN `or_ordini` ON `or_ordini`.`id` = `or_righe_ordini`.`idordine`
|
||||
INNER JOIN `or_tipiordine` ON `or_tipiordine`.`id` = `or_ordini`.`idtipoordine`
|
||||
SET `co_righe_documenti`.`descrizione` = CONCAT(`co_righe_documenti`.`descrizione`, '\nRif. ', LOWER(`or_tipiordine`.`descrizione`), ' num. ', `or_ordini`.`numero`, ' del ', DATE_FORMAT(`or_ordini`.`data`, '%d/%m/%Y'))
|
||||
SET `co_righe_documenti`.`descrizione` = CONCAT(`co_righe_documenti`.`descrizione`, '\nRif. ordine num. ', IF(`or_ordini`.`numero_esterno`!='', `or_ordini`.`numero_esterno`, `or_ordini`.`numero`), ' del ', DATE_FORMAT(`or_ordini`.`data`, '%d/%m/%Y'))
|
||||
WHERE `co_righe_documenti`.`original_type` LIKE '%Ordini%';
|
||||
UPDATE `co_righe_documenti`
|
||||
INNER JOIN `dt_righe_ddt` ON `co_righe_documenti`.`original_id` = `dt_righe_ddt`.`id`
|
||||
INNER JOIN `dt_ddt` ON `dt_ddt`.`id` = `dt_righe_ddt`.`idordine`
|
||||
INNER JOIN `dt_ddt` ON `dt_ddt`.`id` = `dt_righe_ddt`.`idddt`
|
||||
INNER JOIN `dt_tipiddt` ON `dt_tipiddt`.`id` = `dt_ddt`.`idtipoddt`
|
||||
SET `co_righe_documenti`.`descrizione` = CONCAT(`co_righe_documenti`.`descrizione`, '\nRif. ', LOWER(`dt_tipiddt`.`descrizione`), ' num. ', `dt_ddt`.`numero`, ' del ', DATE_FORMAT(`dt_ddt`.`data`, '%d/%m/%Y'))
|
||||
WHERE `co_righe_documenti`.`original_type` LIKE '%DDT%';
|
||||
@ -143,7 +143,7 @@ SET `or_righe_ordini`.`descrizione` = CONCAT(`or_righe_ordini`.`descrizione`, '\
|
||||
WHERE `or_righe_ordini`.`original_type` LIKE '%Preventivi%';
|
||||
UPDATE `or_righe_ordini`
|
||||
INNER JOIN `dt_righe_ddt` ON `or_righe_ordini`.`original_id` = `dt_righe_ddt`.`id`
|
||||
INNER JOIN `dt_ddt` ON `dt_ddt`.`id` = `dt_righe_ddt`.`idordine`
|
||||
INNER JOIN `dt_ddt` ON `dt_ddt`.`id` = `dt_righe_ddt`.`idddt`
|
||||
INNER JOIN `dt_tipiddt` ON `dt_tipiddt`.`id` = `dt_ddt`.`idtipoddt`
|
||||
SET `or_righe_ordini`.`descrizione` = CONCAT(`or_righe_ordini`.`descrizione`, '\nRif. ', LOWER(`dt_tipiddt`.`descrizione`), ' num. ', `dt_ddt`.`numero`, ' del ', DATE_FORMAT(`dt_ddt`.`data`, '%d/%m/%Y'))
|
||||
WHERE `or_righe_ordini`.`original_type` LIKE '%DDT%';
|
||||
@ -168,7 +168,7 @@ UPDATE `dt_righe_ddt`
|
||||
INNER JOIN `or_righe_ordini` ON `dt_righe_ddt`.`original_id` = `or_righe_ordini`.`id`
|
||||
INNER JOIN `or_ordini` ON `or_ordini`.`id` = `or_righe_ordini`.`idordine`
|
||||
INNER JOIN `or_tipiordine` ON `or_tipiordine`.`id` = `or_ordini`.`idtipoordine`
|
||||
SET `dt_righe_ddt`.`descrizione` = CONCAT(`dt_righe_ddt`.`descrizione`, '\nRif. ', LOWER(`or_tipiordine`.`descrizione`), ' num. ', `or_ordini`.`numero`, ' del ', DATE_FORMAT(`or_ordini`.`data`, '%d/%m/%Y'))
|
||||
SET `dt_righe_ddt`.`descrizione` = CONCAT(`dt_righe_ddt`.`descrizione`, '\nRif. ordine num. ', IF(`or_ordini`.`numero_esterno`!='', `or_ordini`.`numero_esterno`, `or_ordini`.`numero`), ' del ', DATE_FORMAT(`or_ordini`.`data`, '%d/%m/%Y'))
|
||||
WHERE `dt_righe_ddt`.`original_type` LIKE '%Ordini%';
|
||||
UPDATE `dt_righe_ddt`
|
||||
INNER JOIN `in_righe_interventi` ON `dt_righe_ddt`.`original_id` = `in_righe_interventi`.`id`
|
||||
|
@ -4,16 +4,14 @@ UPDATE
|
||||
SET
|
||||
`options` = 'SELECT |select|\r\nFROM `co_preventivi`\r\n LEFT JOIN `an_anagrafiche` ON `co_preventivi`.`idanagrafica` = `an_anagrafiche`.`idanagrafica`\r\n LEFT JOIN `co_statipreventivi` ON `co_preventivi`.`idstato` = `co_statipreventivi`.`id`\r\n LEFT JOIN (\r\n SELECT `idpreventivo`,\r\n SUM(`subtotale` - `sconto`) AS `totale_imponibile`,\r\n SUM(`subtotale` - `sconto` + `iva`) AS `totale`\r\n FROM `co_righe_preventivi`\r\n GROUP BY `idpreventivo`\r\n ) AS righe ON `co_preventivi`.`id` = `righe`.`idpreventivo`\r\n
|
||||
LEFT JOIN (SELECT co_righe_documenti.idpreventivo, CONCAT(\'Fatt. \', co_documenti.numero_esterno,\' del \', DATE_FORMAT(co_documenti.data, \'%d/%m/%Y\')) AS info FROM co_documenti INNER JOIN co_righe_documenti ON co_documenti.id = co_righe_documenti.iddocumento) AS fattura ON fattura.idpreventivo = co_preventivi.id
|
||||
WHERE 1=1 |date_period(custom,\'|period_start|\' >= `data_bozza` AND \'|period_start|\' <= `data_conclusione`,\'|period_end|\' >= `data_bozza` AND \'|period_end|\' <= `data_conclusione`,`data_bozza` >= \'|period_start|\' AND `data_bozza` <= \'|period_end|\',`data_conclusione` >= \'|period_start|\' AND `data_conclusione` <= \'|period_end|\',`data_bozza` >= \'|period_start|\' AND `data_conclusione` = \'0000-00-00\')| AND default_revision = 1\r\nHAVING 2=2\r\nORDER BY `co_preventivi`.`id` DESC '
|
||||
WHERE 1=1 |date_period(custom,\'|period_start|\' >= `data_bozza` AND \'|period_start|\' <= `data_conclusione`,\'|period_end|\' >= `data_bozza` AND \'|period_end|\' <= `data_conclusione`,`data_bozza` >= \'|period_start|\' AND `data_bozza` <= \'|period_end|\',`data_conclusione` >= \'|period_start|\' AND `data_conclusione` <= \'|period_end|\',`data_bozza` >= \'|period_start|\' AND `data_conclusione` = \'0000-00-00\')| AND default_revision = 1\r\nGROUP BY `co_preventivi`.`id`\r\nHAVING 2=2\r\nORDER BY `co_preventivi`.`id` DESC '
|
||||
WHERE
|
||||
`zz_modules`.`name` = 'Preventivi';
|
||||
|
||||
|
||||
-- Aggiunta colonna Rif. fattura per preventivi
|
||||
INSERT INTO `zz_views` (`id_module`, `name`, `query`, `order`, `search`, `format`, `default`, `visible`) VALUES
|
||||
((SELECT `id` FROM `zz_modules` WHERE `name` = 'Preventivi'), 'Rif. fattura', 'fattura.info', 9, 1, 0, 0, 1);
|
||||
|
||||
|
||||
-- Modifico impostazione "Lunghezza in pagine del buffer Datatables" per renderla modificabile dall'utente
|
||||
UPDATE `zz_settings` SET `editable` = '1', `tipo` = 'list[5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100]', `help` = 'Attenzione, a valori più elevati corrispondono performance peggiori' WHERE `zz_settings`.`nome` = 'Lunghezza in pagine del buffer Datatables';
|
||||
|
||||
@ -36,4 +34,60 @@ WHERE 1=1 AND `mg_articoli`.`deleted_at` IS NULL HAVING 2=2 AND `Q.tà` > 0 ORDE
|
||||
UPDATE `zz_views` SET `query`='movimenti.qta', `format`=1 WHERE `id_module`=(SELECT `id` FROM `zz_modules` WHERE `name`='Giacenze sedi') AND `name`='Q.tà';
|
||||
|
||||
-- Fix widget rate contrattuali
|
||||
UPDATE `zz_widgets` SET `query` = 'SELECT COUNT(id) AS dato FROM co_fatturazione_contratti WHERE idcontratto IN( SELECT id FROM co_contratti WHERE co_contratti.idstato IN (SELECT id FROM co_staticontratti WHERE is_fatturabile = 1)) AND co_fatturazione_contratti.iddocumento=0' WHERE `zz_widgets`.`id` = 11;
|
||||
UPDATE `zz_widgets` SET `query` = 'SELECT COUNT(id) AS dato FROM co_fatturazione_contratti WHERE idcontratto IN( SELECT id FROM co_contratti WHERE co_contratti.idstato IN (SELECT id FROM co_staticontratti WHERE is_fatturabile = 1)) AND co_fatturazione_contratti.iddocumento=0' WHERE `zz_widgets`.`name` = 'Rate contrattuali';
|
||||
|
||||
-- Divisione delle colonne modulo modelli prima nota
|
||||
UPDATE `zz_views` SET `query` = 'co_movimenti_modelli.nome' WHERE `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name`='Modelli prima nota') AND `name` LIKE 'Nome';
|
||||
INSERT INTO `zz_views` (`id`, `id_module`, `name`, `query`, `order`, `search`, `slow`, `format`, `search_inside`, `order_by`, `visible`, `summable`, `default`) VALUES (NULL, (SELECT `id` FROM `zz_modules` WHERE `name`='Modelli prima nota'), 'Causale', 'co_movimenti_modelli.descrizione', '2', '1', '0', '0', NULL, NULL, '1', '0', '1');
|
||||
|
||||
-- Aggiunto flag peso e volume manuale in fatture e ddt
|
||||
ALTER TABLE `dt_ddt` ADD `peso_manuale` TINYINT(1) NOT NULL AFTER `volume`;
|
||||
ALTER TABLE `dt_ddt` ADD `volume_manuale` TINYINT(1) NOT NULL AFTER `peso_manuale`;
|
||||
ALTER TABLE `co_documenti` ADD `peso_manuale` TINYINT(1) NOT NULL AFTER `volume`;
|
||||
ALTER TABLE `co_documenti` ADD `volume_manuale` TINYINT(1) NOT NULL AFTER `peso_manuale`;
|
||||
|
||||
-- Fix fornitore predefinito articoli
|
||||
INSERT INTO `mg_prezzi_articoli`(
|
||||
`id_articolo`,
|
||||
`id_anagrafica`,
|
||||
`prezzo_unitario`,
|
||||
`prezzo_unitario_ivato`,
|
||||
`dir`,
|
||||
`sconto_percentuale`
|
||||
)(
|
||||
SELECT
|
||||
`mg_articoli`.`id`,
|
||||
`mg_articoli`.`id_fornitore`,
|
||||
`mg_articoli`.`prezzo_acquisto`,
|
||||
`mg_articoli`.`prezzo_acquisto` + `mg_articoli`.`prezzo_acquisto` * IFNULL(
|
||||
`co_iva`.`percentuale`,
|
||||
`iva_default`.`percentuale`
|
||||
) / 100,
|
||||
'uscita',
|
||||
0
|
||||
FROM
|
||||
`mg_articoli`
|
||||
LEFT JOIN `co_iva` ON `mg_articoli`.`idiva_vendita` = `co_iva`.`id`
|
||||
LEFT JOIN(
|
||||
SELECT
|
||||
`valore` AS `idiva`
|
||||
FROM
|
||||
`zz_settings`
|
||||
WHERE
|
||||
`nome` = 'Iva predefinita'
|
||||
) AS `impostazioni`
|
||||
ON
|
||||
1 = 1
|
||||
LEFT JOIN `co_iva` AS `iva_default`
|
||||
ON
|
||||
`iva_default`.`id` = `impostazioni`.`idiva`
|
||||
WHERE
|
||||
`id_fornitore` NOT IN(
|
||||
SELECT
|
||||
`id_anagrafica`
|
||||
FROM
|
||||
`mg_prezzi_articoli` AS `prezzi_specifica`
|
||||
WHERE
|
||||
`id_articolo` = `mg_articoli`.`id`
|
||||
) AND `id_fornitore` IS NOT NULL
|
||||
);
|
Loading…
x
Reference in New Issue
Block a user