Compare commits
4 Commits
4d24356153
...
4ba48bbf82
Author | SHA1 | Date |
---|---|---|
MatteoPistorello | 4ba48bbf82 | |
MatteoPistorello | 292a52d76f | |
MatteoPistorello | 8a883f1127 | |
Beppe | 4cb23e256b |
|
@ -45,6 +45,7 @@ Il formato utilizzato è basato sulle linee guida di [Keep a Changelog](http://k
|
|||
- Aggiunta colonna Scaduto nel modulo Scadenzario
|
||||
- Aggiunto campi confermato, data e ora evasione nel modulo **Preventivi**
|
||||
- Aggiunta possibilità di creare un nuovi conti di secondo livello dal modulo **Piano dei conti**
|
||||
- Aggiunta impostazione per la rimozione del blocco sulle quantità massime importabili fra documenti
|
||||
|
||||
### Fixed
|
||||
-
|
||||
|
|
|
@ -22,15 +22,6 @@ if ($module['name'] != 'Fatture di acquisto' && $module['name'] != 'Fatture di v
|
|||
return;
|
||||
}
|
||||
|
||||
if ($options['dir'] == 'entrata') {
|
||||
$show_rivalsa = ((setting('Percentuale rivalsa') != '') or (!empty($result['idrivalsainps'])));
|
||||
$show_ritenuta_acconto = ((setting("Percentuale ritenuta d'acconto") != '') or (!empty($result['idritenutaacconto'])));
|
||||
$show_ritenuta_acconto |= !empty($options['id_ritenuta_acconto_predefined']);
|
||||
} else {
|
||||
$show_rivalsa = 1;
|
||||
$show_ritenuta_acconto = 1;
|
||||
}
|
||||
|
||||
// Percentuale rivalsa e Percentuale ritenuta d'acconto
|
||||
if ($options['action'] == 'edit') {
|
||||
$id_rivalsa_inps = $result['idrivalsainps'];
|
||||
|
@ -54,37 +45,30 @@ if ($options['action'] == 'edit') {
|
|||
|
||||
$calcolo_ritenuta_acconto = $calcolo_ritenuta_acconto ?: setting("Metodologia calcolo ritenuta d'acconto predefinito");
|
||||
|
||||
if ($show_rivalsa == 1 || $show_ritenuta_acconto == 1) {
|
||||
echo '
|
||||
echo '
|
||||
<div class="row">';
|
||||
|
||||
// Rivalsa INPS
|
||||
if ($show_rivalsa == 1) {
|
||||
echo '
|
||||
echo '
|
||||
<div class="col-md-4">
|
||||
{[ "type": "select", "label": "'.tr('Rivalsa').'", "name": "id_rivalsa_inps", "value": "'.$id_rivalsa_inps.'", "values": "query=SELECT * FROM co_rivalse", "help": "'.(($options['dir'] == 'entrata') ? setting('Tipo Cassa Previdenziale') : null).'" ]}
|
||||
</div>';
|
||||
}
|
||||
|
||||
// Ritenuta d'acconto
|
||||
if ($show_ritenuta_acconto == 1) {
|
||||
echo '
|
||||
echo '
|
||||
<div class="col-md-4">
|
||||
{[ "type": "select", "label": "'.tr("Ritenuta d'acconto").'", "name": "id_ritenuta_acconto", "value": "'.$id_ritenuta_acconto.'", "values": "query=SELECT * FROM co_ritenutaacconto" ]}
|
||||
</div>';
|
||||
}
|
||||
|
||||
// Calcola ritenuta d'acconto su
|
||||
if ($show_ritenuta_acconto == 1) {
|
||||
echo '
|
||||
echo '
|
||||
<div class="col-md-4">
|
||||
{[ "type": "select", "label": "'.tr("Calcola ritenuta d'acconto su").'", "name": "calcolo_ritenuta_acconto", "value": "'.$calcolo_ritenuta_acconto.'", "values": "list=\"IMP\":\"Imponibile\", \"IMP+RIV\":\"Imponibile + rivalsa\"", "required": "1" ]}
|
||||
{[ "type": "select", "label": "'.tr("Calcola ritenuta d'acconto su").'", "name": "calcolo_ritenuta_acconto", "value": "'.$calcolo_ritenuta_acconto.'", "values": "list=\"IMP\":\"Imponibile\", \"IMP+RIV\":\"Imponibile + rivalsa\""]}
|
||||
</div>';
|
||||
}
|
||||
|
||||
echo '
|
||||
</div>';
|
||||
}
|
||||
|
||||
|
||||
if (!empty($options['show-ritenuta-contributi']) || empty($options['hide_conto'])) {
|
||||
$width = !empty($options['show-ritenuta-contributi']) && empty($options['hide_conto']) ? 6 : 12;
|
||||
|
@ -111,3 +95,25 @@ if (!empty($options['show-ritenuta-contributi']) || empty($options['hide_conto']
|
|||
echo '
|
||||
</div>';
|
||||
}
|
||||
|
||||
echo '
|
||||
<script>
|
||||
$(document).ready(function(){
|
||||
if(input("id_ritenuta_acconto").get()){
|
||||
$("#calcolo_ritenuta_acconto").prop("required", true);
|
||||
} else{
|
||||
$("#calcolo_ritenuta_acconto").prop("required", false);
|
||||
input("calcolo_ritenuta_acconto").set("");
|
||||
}
|
||||
|
||||
$("#id_ritenuta_acconto").on("change", function(){
|
||||
if(input("id_ritenuta_acconto").get()){
|
||||
$("#calcolo_ritenuta_acconto").prop("required", true);
|
||||
|
||||
} else{
|
||||
$("#calcolo_ritenuta_acconto").prop("required", false);
|
||||
input("calcolo_ritenuta_acconto").set("");
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>';
|
|
@ -171,8 +171,6 @@ if (in_array($final_module['name'], ['Fatture di vendita', 'Fatture di acquisto'
|
|||
}
|
||||
$calcolo_ritenuta_acconto = setting("Metodologia calcolo ritenuta d'acconto predefinito");
|
||||
|
||||
$show_rivalsa = !empty($id_rivalsa_inps);
|
||||
$show_ritenuta_acconto = setting("Percentuale ritenuta d'acconto") != '' || !empty($id_ritenuta_acconto);
|
||||
$show_ritenuta_contributi = !empty($documento_finale['id_ritenuta_contributi']);
|
||||
|
||||
$id_conto = $documento_finale['idconto'];
|
||||
|
@ -187,20 +185,17 @@ if (in_array($final_module['name'], ['Fatture di vendita', 'Fatture di acquisto'
|
|||
</div>
|
||||
<div class="box-body">';
|
||||
|
||||
if ($show_rivalsa || $show_ritenuta_acconto) {
|
||||
echo '
|
||||
<div class="row">';
|
||||
|
||||
// Rivalsa INPS
|
||||
if ($show_rivalsa) {
|
||||
echo '
|
||||
<div class="col-md-4">
|
||||
{[ "type": "select", "label": "'.tr('Rivalsa').'", "name": "id_rivalsa_inps", "value": "'.$id_rivalsa_inps.'", "values": "query=SELECT * FROM co_rivalse", "help": "'.($options['dir'] == 'entrata' ? setting('Tipo Cassa Previdenziale') : null).'" ]}
|
||||
</div>';
|
||||
}
|
||||
|
||||
|
||||
// Ritenuta d'acconto
|
||||
if ($show_ritenuta_acconto) {
|
||||
echo '
|
||||
<div class="col-md-4">
|
||||
{[ "type": "select", "label": "'.tr("Ritenuta d'acconto").'", "name": "id_ritenuta_acconto", "value": "'.$id_ritenuta_acconto.'", "values": "query=SELECT * FROM co_ritenutaacconto" ]}
|
||||
|
@ -211,11 +206,9 @@ if (in_array($final_module['name'], ['Fatture di vendita', 'Fatture di acquisto'
|
|||
<div class="col-md-4">
|
||||
{[ "type": "select", "label": "'.tr("Calcola ritenuta d'acconto su").'", "name": "calcolo_ritenuta_acconto", "value": "'.$calcolo_ritenuta_acconto.'", "values": "list=\"IMP\":\"Imponibile\", \"IMP+RIV\":\"Imponibile + rivalsa\"", "required": "1" ]}
|
||||
</div>';
|
||||
}
|
||||
|
||||
echo '
|
||||
</div>';
|
||||
}
|
||||
|
||||
$width = $show_ritenuta_contributi ? 6 : 12;
|
||||
|
||||
|
@ -288,7 +281,7 @@ foreach ($righe as $i => $riga) {
|
|||
<input type="hidden" class="righe" name="righe" value="'.$i.'"/>
|
||||
<input type="hidden" id="prezzo_unitario_'.$i.'" name="subtot['.$riga['id'].']" value="'.$riga['prezzo_unitario'].'" />
|
||||
<input type="hidden" id="sconto_unitario_'.$i.'" name="sconto['.$riga['id'].']" value="'.$riga['sconto_unitario'].'" />
|
||||
<input type="hidden" id="max_qta_'.$i.'" value="'.$qta_rimanente.'" />';
|
||||
<input type="hidden" id="max_qta_'.$i.'" value="'.($options['superamento_soglia_qta'] ? '' : $riga['qta_rimanente']).'" />';
|
||||
|
||||
// Checkbox - da evadere?
|
||||
echo '
|
||||
|
@ -471,7 +464,7 @@ function ricalcolaTotaleRiga(r) {
|
|||
let sconto = $("#sconto_unitario_" + r).val();
|
||||
|
||||
let max_qta_input = $("#max_qta_" + r);
|
||||
let qta_max = max_qta_input.val() ? max_qta_input.val() : 0;
|
||||
let qta_max = max_qta_input.val();
|
||||
|
||||
prezzo_unitario = parseFloat(prezzo_unitario);
|
||||
sconto = parseFloat(sconto);
|
||||
|
@ -550,4 +543,23 @@ echo '
|
|||
}
|
||||
|
||||
ricalcolaTotale();
|
||||
|
||||
$(document).ready(function(){
|
||||
if(input("id_ritenuta_acconto").get()){
|
||||
$("#calcolo_ritenuta_acconto").prop("required", true);
|
||||
} else{
|
||||
$("#calcolo_ritenuta_acconto").prop("required", false);
|
||||
input("calcolo_ritenuta_acconto").set("");
|
||||
}
|
||||
|
||||
$("#id_ritenuta_acconto").on("change", function(){
|
||||
if(input("id_ritenuta_acconto").get()){
|
||||
$("#calcolo_ritenuta_acconto").prop("required", true);
|
||||
|
||||
} else{
|
||||
$("#calcolo_ritenuta_acconto").prop("required", false);
|
||||
input("calcolo_ritenuta_acconto").set("");
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>';
|
||||
|
|
|
@ -35,6 +35,7 @@ if (!empty($id_documento)) {
|
|||
'documento' => $documento,
|
||||
'documento_finale' => $documento_finale,
|
||||
'tipo_documento_finale' => Contratto::class,
|
||||
'superamento_soglia_qta' => setting('Permetti il superamento della soglia quantità dei documenti di origine'),
|
||||
];
|
||||
|
||||
echo App::load('importa.php', [], $options, true);
|
||||
|
|
|
@ -35,6 +35,7 @@ if (!empty($id_documento)) {
|
|||
'documento' => $documento,
|
||||
'documento_finale' => $documento_finale,
|
||||
'tipo_documento_finale' => DDT::class,
|
||||
'superamento_soglia_qta' => setting('Permetti il superamento della soglia quantità dei documenti di origine'),
|
||||
];
|
||||
|
||||
echo App::load('importa.php', [], $options, true);
|
||||
|
|
|
@ -36,6 +36,7 @@ if (!empty($id_documento)) {
|
|||
'documento' => $documento,
|
||||
'documento_finale' => $documento_finale,
|
||||
'tipo_documento_finale' => DDT::class,
|
||||
'superamento_soglia_qta' => setting('Permetti il superamento della soglia quantità dei documenti di origine'),
|
||||
];
|
||||
|
||||
echo App::load('importa.php', [], $options, true);
|
||||
|
|
|
@ -36,6 +36,7 @@ if (!empty($id_documento)) {
|
|||
'documento' => $documento,
|
||||
'documento_finale' => $documento_finale,
|
||||
'tipo_documento_finale' => Fattura::class,
|
||||
'superamento_soglia_qta' => setting('Permetti il superamento della soglia quantità dei documenti di origine'),
|
||||
];
|
||||
|
||||
echo App::load('importa.php', [], $options, true);
|
||||
|
|
|
@ -37,6 +37,7 @@ if (!empty($id_documento)) {
|
|||
'documento' => $documento,
|
||||
'documento_finale' => $documento_finale,
|
||||
'tipo_documento_finale' => Fattura::class,
|
||||
'superamento_soglia_qta' => setting('Permetti il superamento della soglia quantità dei documenti di origine'),
|
||||
];
|
||||
|
||||
echo App::load('importa.php', [], $options, true);
|
||||
|
|
|
@ -98,6 +98,7 @@ $options = [
|
|||
'action' => 'add',
|
||||
'hide_conto' => true,
|
||||
'dir' => $dir,
|
||||
'superamento_soglia_qta' => setting('Permetti il superamento della soglia quantità dei documenti di origine'),
|
||||
];
|
||||
|
||||
// Leggo la ritenuta d'acconto predefinita per l'anagrafica e se non c'è leggo quella predefinita generica
|
||||
|
|
|
@ -37,6 +37,7 @@ if (!empty($id_documento)) {
|
|||
'documento' => $documento,
|
||||
'documento_finale' => $documento_finale,
|
||||
'tipo_documento_finale' => Fattura::class,
|
||||
'superamento_soglia_qta' => setting('Permetti il superamento della soglia quantità dei documenti di origine'),
|
||||
];
|
||||
|
||||
echo App::load('importa.php', [], $options, true);
|
||||
|
|
|
@ -36,6 +36,7 @@ if (!empty($id_documento)) {
|
|||
'documento' => $documento,
|
||||
'documento_finale' => $documento_finale,
|
||||
'tipo_documento_finale' => Fattura::class,
|
||||
'superamento_soglia_qta' => setting('Permetti il superamento della soglia quantità dei documenti di origine'),
|
||||
];
|
||||
|
||||
echo App::load('importa.php', [], $options, true);
|
||||
|
|
|
@ -37,6 +37,7 @@ if (!empty($id_documento)) {
|
|||
'documento' => $documento,
|
||||
'documento_finale' => $documento_finale,
|
||||
'tipo_documento_finale' => Intervento::class,
|
||||
'superamento_soglia_qta' => setting('Permetti il superamento della soglia quantità dei documenti di origine'),
|
||||
];
|
||||
|
||||
echo App::load('importa.php', [], $options, true);
|
||||
|
|
|
@ -36,6 +36,7 @@ if (!empty($id_documento)) {
|
|||
'documento' => $documento,
|
||||
'documento_finale' => $documento_finale,
|
||||
'tipo_documento_finale' => Ordine::class,
|
||||
'superamento_soglia_qta' => setting('Permetti il superamento della soglia quantità dei documenti di origine'),
|
||||
];
|
||||
|
||||
echo App::load('importa.php', [], $options, true);
|
||||
|
|
|
@ -367,7 +367,7 @@ abstract class Component extends Model
|
|||
$original = $this->getOriginalComponent();
|
||||
|
||||
// Controllo per evitare di superare la quantità totale del componente di origine
|
||||
if ($original->qta_rimanente < $diff) {
|
||||
if ($original->qta_rimanente < $diff && empty(setting('Permetti il superamento della soglia quantità dei documenti di origine'))) {
|
||||
$diff = $original->qta_rimanente;
|
||||
$value = $previous + $diff;
|
||||
}
|
||||
|
|
|
@ -37,7 +37,7 @@ if ($documento->direzione == 'entrata') {
|
|||
}
|
||||
|
||||
if ($documento->direzione == 'uscita') {
|
||||
++$columns;
|
||||
$columns += 2;
|
||||
$char_number = $options['pricing'] ? 26 : 63;
|
||||
} else {
|
||||
$char_number = $options['pricing'] ? 45 : 82;
|
||||
|
@ -53,11 +53,12 @@ echo "
|
|||
<table class='table table-striped table-bordered' id='contents'>
|
||||
<thead>
|
||||
<tr>
|
||||
<th class='text-center' style='width:5%'>".tr('#', [], ['upper' => true]).'</th>';
|
||||
<th class='text-center' style='width:4%'>".tr('#', [], ['upper' => true]).'</th>';
|
||||
|
||||
if ($documento->direzione == 'uscita') {
|
||||
echo "
|
||||
<th class='text-center' style='width:10%'>".tr('Codice', [], ['upper' => true]).'</th>';
|
||||
<th class='text-center' style='width:11%'>".tr('Codice', [], ['upper' => true])."</th>
|
||||
<th class='text-center' style='width:11%'>".tr('Codice fornitore', [], ['upper' => true])."</th>";
|
||||
}
|
||||
|
||||
if ($has_image) {
|
||||
|
@ -67,13 +68,13 @@ echo "
|
|||
|
||||
echo "
|
||||
<th class='text-center'>".tr('Descrizione', [], ['upper' => true])."</th>
|
||||
<th class='text-center' style='width:10%'>".tr('Q.tà', [], ['upper' => true]).'</th>';
|
||||
<th class='text-center' style='width:9%'>".tr('Q.tà', [], ['upper' => true]).'</th>';
|
||||
|
||||
if ($options['pricing']) {
|
||||
echo "
|
||||
<th class='text-center' style='width:15%'>".tr('Prezzo unitario', [], ['upper' => true])."</th>
|
||||
<th class='text-center' style='width:15%'>".tr('Imponibile', [], ['upper' => true])."</th>
|
||||
<th class='text-center' style='width:10%'>".tr('IVA', [], ['upper' => true]).' (%)</th>';
|
||||
<th class='text-center' style='width:11%'>".tr('Prezzo unitario', [], ['upper' => true])."</th>
|
||||
<th class='text-center' style='width:11%'>".tr('Imponibile', [], ['upper' => true])."</th>
|
||||
<th class='text-center' style='width:5%'>".tr('IVA', [], ['upper' => true]).' (%)</th>';
|
||||
}
|
||||
|
||||
echo "
|
||||
|
@ -96,13 +97,6 @@ foreach ($righe as $riga) {
|
|||
'.$num.'
|
||||
</td>';
|
||||
|
||||
if ($documento->direzione == 'uscita') {
|
||||
echo '
|
||||
<td class="text-center" style="vertical-align: middle">
|
||||
'.$riga->articolo->codice.'
|
||||
</td>';
|
||||
}
|
||||
|
||||
if ($has_image) {
|
||||
if ($riga->isArticolo() && !empty($riga->articolo->image)) {
|
||||
echo '
|
||||
|
@ -117,6 +111,16 @@ foreach ($righe as $riga) {
|
|||
}
|
||||
}
|
||||
|
||||
if ($documento->direzione == 'uscita') {
|
||||
echo '
|
||||
<td class="text-center" style="vertical-align: middle">
|
||||
'.$riga->articolo->codice.'
|
||||
</td>
|
||||
<td class="text-center" style="vertical-align: middle">
|
||||
'.($riga->articolo ? $riga->articolo->dettaglioFornitore($documento->idanagrafica)->codice_fornitore : '').'
|
||||
</td>';
|
||||
}
|
||||
|
||||
echo '
|
||||
<td>
|
||||
'.nl2br($r['descrizione']);
|
||||
|
@ -165,7 +169,7 @@ foreach ($righe as $riga) {
|
|||
// Prezzo unitario
|
||||
echo '
|
||||
<td class="text-right">
|
||||
'.moneyFormat($riga->prezzo_unitario);
|
||||
'.moneyFormat($riga->prezzo_unitario);
|
||||
|
||||
if ($riga->sconto > 0) {
|
||||
$text = discountInfo($riga, false);
|
||||
|
@ -194,7 +198,7 @@ foreach ($righe as $riga) {
|
|||
|
||||
echo '
|
||||
<td class="text-center">
|
||||
<small>'.Translator::dateToLocale($riga->data_evasione).($riga->ora_evasione ? '<br>'.Translator::timeToLocale($riga->ora_evasione).'' : '').'</small>
|
||||
'.Translator::dateToLocale($riga->data_evasione).($riga->ora_evasione ? '<br>'.Translator::timeToLocale($riga->ora_evasione).'' : '').'
|
||||
</td>';
|
||||
} else {
|
||||
echo '
|
||||
|
@ -230,7 +234,7 @@ $netto_a_pagare = $documento->netto;
|
|||
$show_sconto = $sconto > 0;
|
||||
|
||||
$colspan = 5;
|
||||
($documento->direzione == 'uscita' ? $colspan++ : $colspan);
|
||||
($documento->direzione == 'uscita' ? $colspan+=2 : $colspan);
|
||||
($has_image ? $colspan++ : $colspan);
|
||||
|
||||
// TOTALE COSTI FINALI
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
*/
|
||||
|
||||
$settings = [
|
||||
'font-size' => 9,
|
||||
'font-size' => 8,
|
||||
];
|
||||
|
||||
return $settings;
|
||||
|
|
|
@ -64,3 +64,6 @@ INSERT INTO `zz_settings` (`id`, `nome`, `valore`, `tipo`, `editable`, `sezione`
|
|||
-- Aggiunta vista "Esigibilità" per il modulo "IVA"
|
||||
INSERT INTO `zz_views` (`id`, `id_module`, `name`, `query`, `order`, `search`, `slow`, `format`, `search_inside`, `order_by`, `visible`, `summable`, `default`) VALUES
|
||||
(NULL, (SELECT `zz_modules`.`id` FROM `zz_modules` WHERE `zz_modules`.`name`='IVA'), 'Esigibilità', 'IF(esigibilita=\'I\', \'IVA ad esigibilità immediata\', IF(esigibilita=\'D\', \'IVA ad esigibilità differita\', \'Scissione dei pagamenti\'))', 5, 1, 0, 0, '', '', 1, 0, 0);
|
||||
|
||||
-- Gestione righe da documenti esterni
|
||||
INSERT INTO `zz_settings` (`nome`, `valore`, `tipo`, `editable`, `sezione`, `order`, `help`) VALUES ('Permetti il superamento della soglia quantità dei documenti di origine', '0', 'boolean', '1', 'Generali', '20', NULL);
|
Loading…
Reference in New Issue