Correzione conflitti merge
Correzioni per le rimozioni effettuate dal commit 3ec3928026
This commit is contained in:
parent
a30ffd23cd
commit
5fd3197da2
|
@ -46,6 +46,8 @@ Il formato utilizzato è basato sulle linee guida di [Keep a Changelog](http://k
|
||||||
- Aggiunta stampa del bilancio
|
- Aggiunta stampa del bilancio
|
||||||
- Aggiunta possibilità di notificare al cliente/tecnico in modo automatico quando viene cambiato lo stato dell'intervento
|
- Aggiunta possibilità di notificare al cliente/tecnico in modo automatico quando viene cambiato lo stato dell'intervento
|
||||||
- Aggiunta flag per escludere la generazione scadenza di una ritenuta d'acconto se viene versata dal fornitore
|
- Aggiunta flag per escludere la generazione scadenza di una ritenuta d'acconto se viene versata dal fornitore
|
||||||
|
- Aggiunta stampa fattura elettronica nelle fatture di vendita e di acquisto
|
||||||
|
- Aggiunta azione massiva per esportare le stampe delle fatture elettroniche
|
||||||
|
|
||||||
### Modificato (Changed)
|
### Modificato (Changed)
|
||||||
- Impostazione CAP automatico a 99999 nella FE per clienti esteri
|
- Impostazione CAP automatico a 99999 nella FE per clienti esteri
|
||||||
|
|
5
add.php
5
add.php
|
@ -81,16 +81,17 @@ if (isAjaxRequest()) {
|
||||||
<script>
|
<script>
|
||||||
$(document).ready(function(){
|
$(document).ready(function(){
|
||||||
$("#form_'.$id_module.'-'.$id_plugin.'").find("form").submit(function () {
|
$("#form_'.$id_module.'-'.$id_plugin.'").find("form").submit(function () {
|
||||||
$form = $(this);
|
let $form = $(this);
|
||||||
$form.variables = new Object();
|
$form.variables = new Object();
|
||||||
$form.variables.id_module = \''.$id_module.'\';
|
$form.variables.id_module = \''.$id_module.'\';
|
||||||
$form.variables.id_plugin = \''.$id_plugin.'\';
|
$form.variables.id_plugin = \''.$id_plugin.'\';
|
||||||
|
|
||||||
submitAjax(this, $form.variables, function(response) {
|
submitAjax(this, $form.variables, function(response) {
|
||||||
// Selezione automatica nuovo valore per il select
|
// Selezione automatica nuovo valore per il select
|
||||||
select = "#'.get('select').'";
|
let select = "#'.get('select').'";
|
||||||
if ($(select).val() !== undefined) {
|
if ($(select).val() !== undefined) {
|
||||||
$(select).selectSetNew(response.id, response.text, response.data);
|
$(select).selectSetNew(response.id, response.text, response.data);
|
||||||
|
$(select).change();
|
||||||
}
|
}
|
||||||
|
|
||||||
$form.closest("div[id^=bs-popup").modal("hide");
|
$form.closest("div[id^=bs-popup").modal("hide");
|
||||||
|
|
|
@ -449,7 +449,9 @@ if ($is_cliente or $is_fornitore or $is_tecnico) {
|
||||||
</div>';
|
</div>';
|
||||||
} else {
|
} else {
|
||||||
echo '
|
echo '
|
||||||
<p>'.tr("Nessuna banca disponibile per l'Anagrafica").'</p>';
|
<div class="alert alert-info">
|
||||||
|
'.tr('Non sono presenti banche per l\'anagrafica').'... '.Modules::link('Banche', null, tr('Creane una')).'
|
||||||
|
</div>';
|
||||||
}
|
}
|
||||||
|
|
||||||
echo '
|
echo '
|
||||||
|
@ -676,7 +678,7 @@ if ($is_cliente or $is_fornitore or $is_tecnico) {
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-12">
|
<div class="col-md-12">
|
||||||
{[ "type": "checkbox", "label": "<?php echo tr('Opt-out newsletter'); ?>", "name": "disable_newsletter", "value": "<?php echo empty($record['enable_newsletter']); ?>" ]}
|
{[ "type": "checkbox", "label": "<?php echo tr('Opt-out per newsletter'); ?>", "name": "disable_newsletter", "value": "<?php echo empty($record['enable_newsletter']); ?>" ]}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -101,7 +101,7 @@ include_once __DIR__.'/../../core.php';
|
||||||
<script>
|
<script>
|
||||||
$(document).ready(function () {
|
$(document).ready(function () {
|
||||||
var sub = $('#add-form').find('#subcategoria_add');
|
var sub = $('#add-form').find('#subcategoria_add');
|
||||||
var original = sub.parent().find(".input-group-addon button").data("href");
|
var original = sub.parent().find(".input-group-addon button").attr("onclick");
|
||||||
|
|
||||||
$('#add-form').find('#categoria').change(function() {
|
$('#add-form').find('#categoria').change(function() {
|
||||||
updateSelectOption("id_categoria", $(this).val());
|
updateSelectOption("id_categoria", $(this).val());
|
||||||
|
@ -111,7 +111,7 @@ $(document).ready(function () {
|
||||||
|
|
||||||
if($(this).val()){
|
if($(this).val()){
|
||||||
sub.parent().find(".input-group-addon button").removeClass("hide");
|
sub.parent().find(".input-group-addon button").removeClass("hide");
|
||||||
sub.parent().find(".input-group-addon button").data("href", original + "&id_original="+$(this).val());
|
sub.parent().find(".input-group-addon button").attr("onclick", original.replace('&ajax=yes', "&ajax=yes&id_original=" + $(this).val()));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
sub.parent().find(".input-group-addon button").addClass("hide");
|
sub.parent().find(".input-group-addon button").addClass("hide");
|
||||||
|
|
|
@ -104,7 +104,7 @@ foreach ($righe as $riga) {
|
||||||
// Iva
|
// Iva
|
||||||
echo '
|
echo '
|
||||||
<td class="text-right">
|
<td class="text-right">
|
||||||
'.moneyFormat($riga->iva_unitaria).'
|
'.moneyFormat($riga->iva_unitaria_scontata).'
|
||||||
<br><small class="'.(($riga->aliquota->deleted_at) ? 'text-red' : '').' text-muted">'.$riga->aliquota->descrizione.(($riga->aliquota->esente) ? ' ('.$riga->aliquota->codice_natura_fe.')' : null).'</small>
|
<br><small class="'.(($riga->aliquota->deleted_at) ? 'text-red' : '').' text-muted">'.$riga->aliquota->descrizione.(($riga->aliquota->esente) ? ' ('.$riga->aliquota->codice_natura_fe.')' : null).'</small>
|
||||||
</td>';
|
</td>';
|
||||||
|
|
||||||
|
|
|
@ -188,7 +188,7 @@ if ($module['name'] == 'Ddt di vendita') {
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-md-3">
|
<div class="col-md-3">
|
||||||
{[ "type": "timestamp", "label": "<?php echo tr('Data ora trasporto'); ?>", "name": "data_ora_trasporto", "required": 0, "value": "$data_ora_trasporto$" ]}
|
{[ "type": "timestamp", "label": "<?php echo tr('Data ora trasporto'); ?>", "name": "data_ora_trasporto", "value": "$data_ora_trasporto$", "help": "<?php echo tr('Data e ora inizio del trasporto'); ?>" ]}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
|
|
@ -143,7 +143,7 @@ foreach ($righe as $riga) {
|
||||||
// Iva
|
// Iva
|
||||||
echo '
|
echo '
|
||||||
<td class="text-right">
|
<td class="text-right">
|
||||||
'.moneyFormat($riga->iva_unitaria).'
|
'.moneyFormat($riga->iva_unitaria_scontata).'
|
||||||
<br><small class="'.(($riga->aliquota->deleted_at) ? 'text-red' : '').' text-muted">'.$riga->aliquota->descrizione.(($riga->aliquota->esente) ? ' ('.$riga->aliquota->codice_natura_fe.')' : null).'</small>
|
<br><small class="'.(($riga->aliquota->deleted_at) ? 'text-red' : '').' text-muted">'.$riga->aliquota->descrizione.(($riga->aliquota->esente) ? ' ('.$riga->aliquota->codice_natura_fe.')' : null).'</small>
|
||||||
</td>';
|
</td>';
|
||||||
|
|
||||||
|
|
|
@ -65,6 +65,48 @@ switch (post('op')) {
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'exportFE-bulk':
|
||||||
|
$dir = base_dir().'/files/export_fatture/';
|
||||||
|
directory($dir.'tmp/');
|
||||||
|
|
||||||
|
$dir = slashes($dir);
|
||||||
|
$zip = slashes($dir.'fattureFE_'.time().'.zip');
|
||||||
|
|
||||||
|
// Rimozione dei contenuti precedenti
|
||||||
|
$files = glob($dir.'/*.zip');
|
||||||
|
foreach ($files as $file) {
|
||||||
|
delete($file);
|
||||||
|
}
|
||||||
|
|
||||||
|
$module = Modules::get($id_module);
|
||||||
|
|
||||||
|
if ($module['name'] == 'Fatture di vendita') {
|
||||||
|
$print_name = 'Fattura elettronica di vendita';
|
||||||
|
} else {
|
||||||
|
$print_name = 'Fattura elettronica di acquisto';
|
||||||
|
}
|
||||||
|
$print = $dbo->SelectOne('zz_prints', 'id', ['name' => $print_name]);
|
||||||
|
|
||||||
|
if (!empty($id_records)) {
|
||||||
|
foreach ($id_records as $id_record) {
|
||||||
|
|
||||||
|
Prints::render($print['id'], $id_record, $dir.'tmp/');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Creazione zip
|
||||||
|
if (extension_loaded('zip')) {
|
||||||
|
Zip::create($dir.'tmp/', $zip);
|
||||||
|
|
||||||
|
// Invio al browser dello zip
|
||||||
|
download($zip);
|
||||||
|
|
||||||
|
// Rimozione dei contenuti
|
||||||
|
delete($dir.'tmp/');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
case 'genera-xml':
|
case 'genera-xml':
|
||||||
$failed = [];
|
$failed = [];
|
||||||
$added = [];
|
$added = [];
|
||||||
|
@ -517,6 +559,17 @@ if ($module->name == 'Fatture di vendita') {
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
|
|
||||||
|
$operations['exportFE-bulk'] = [
|
||||||
|
'text' => '<span class="'.((!extension_loaded('zip')) ? 'text-muted disabled' : '').'"><i class="fa fa-file-archive-o"></i> '.tr('Esporta stampe FE').'</span>',
|
||||||
|
'data' => [
|
||||||
|
'title' => '',
|
||||||
|
'msg' => tr('Vuoi davvero esportare i PDF delle fatture elettroniche selezionate in un archivio ZIP?'),
|
||||||
|
'button' => tr('Procedi'),
|
||||||
|
'class' => 'btn btn-lg btn-warning',
|
||||||
|
'blank' => true,
|
||||||
|
],
|
||||||
|
];
|
||||||
|
|
||||||
$operations['check-bulk'] = [
|
$operations['check-bulk'] = [
|
||||||
'text' => '<span><i class="fa fa-list-alt"></i> '.tr('Controlla fatture elettroniche').'</span>',
|
'text' => '<span><i class="fa fa-list-alt"></i> '.tr('Controlla fatture elettroniche').'</span>',
|
||||||
'data' => [
|
'data' => [
|
||||||
|
|
|
@ -33,37 +33,51 @@ if ($dir == 'entrata') {
|
||||||
$conto = 'acquisti';
|
$conto = 'acquisti';
|
||||||
}
|
}
|
||||||
|
|
||||||
// Informazioni sulla dichiarazione d'intento
|
// Informazioni sulla dichiarazione d'intento, visibili solo finchè la fattura è in bozza
|
||||||
if ($dir == 'entrata' && !empty($fattura->dichiarazione) && $fattura->stato->descrizione == 'Bozza') {
|
if ($dir == 'entrata' && !empty($fattura->dichiarazione) && $fattura->stato->descrizione == 'Bozza') {
|
||||||
$diff = $fattura->dichiarazione->massimale - $fattura->dichiarazione->totale;
|
$diff = $fattura->dichiarazione->massimale - $fattura->dichiarazione->totale;
|
||||||
|
|
||||||
$id_iva = setting("Iva per lettere d'intento");
|
$id_iva = setting("Iva per lettere d'intento");
|
||||||
$iva = Aliquota::find($id_iva);
|
$iva = Aliquota::find($id_iva);
|
||||||
|
|
||||||
if ($diff > 0) {
|
if (!empty($iva)){
|
||||||
|
|
||||||
|
if ($diff > 0) {
|
||||||
|
echo '
|
||||||
|
<div class="alert alert-info">
|
||||||
|
<i class="fa fa-warning"></i> '.tr("La fattura è collegata a una dichiarazione d'intento con diponibilità di _MONEY_: per collegare una riga alla dichiarazione è sufficiente inserire come IVA _IVA_", [
|
||||||
|
'_MONEY_' => moneyFormat(abs($diff)),
|
||||||
|
'_IVA_' => '"'.$iva->descrizione.'"',
|
||||||
|
]).'.</b>
|
||||||
|
</div>';
|
||||||
|
} elseif ($diff == 0) {
|
||||||
|
echo '
|
||||||
|
<div class="alert alert-warning">
|
||||||
|
<i class="fa fa-warning"></i> '.tr("La dichiarazione d'intento ha raggiunto il massimale previsto di _MONEY_: le nuove righe della fattura devono presentare IVA diversa da _IVA_", [
|
||||||
|
'_MONEY_' => moneyFormat(abs($fattura->dichiarazione->massimale)),
|
||||||
|
'_IVA_' => '"'.$iva->descrizione.'"',
|
||||||
|
]).'.</b>
|
||||||
|
</div>';
|
||||||
|
} else {
|
||||||
|
echo '
|
||||||
|
<div class="alert alert-danger">
|
||||||
|
<i class="fa fa-warning"></i> '.tr("La dichiarazione d'intento ha superato il massimale previsto di _MONEY_: per rimuovere righe della fattura dalla dichiarazione è sufficiente modificare l'IVA in qualcosa di diverso da _IVA_", [
|
||||||
|
'_MONEY_' => moneyFormat(abs($diff)),
|
||||||
|
'_IVA_' => '"'.$iva->descrizione.'"',
|
||||||
|
]).'.</b>
|
||||||
|
</div>';
|
||||||
|
}
|
||||||
|
|
||||||
|
}else{
|
||||||
|
|
||||||
|
//TODO link ad impostazioni con nuova ricerca rapida
|
||||||
echo '
|
echo '
|
||||||
<div class="alert alert-info">
|
<div class="alert alert-warning">
|
||||||
<i class="fa fa-warning"></i> '.tr("La fattura è collegata a una dichiarazione d'intento con diponibilità di _MONEY_: per collegare una riga alla dichiarazione è sufficiente inserire come IVA _IVA_", [
|
<i class="fa fa-warning"></i> '.tr("Attenzione nessuna aliq. IVA definita per la dichiarazione d'intento. _SETTING_", [
|
||||||
'_MONEY_' => moneyFormat(abs($diff)),
|
'_SETTING_' => Modules::link("Impostazioni", $dbo->fetchOne("SELECT `id` FROM `zz_settings` WHERE nome=\"Iva per lettere d'intento\"")['id'], tr('Selezionala dalle impostazioni')),
|
||||||
'_IVA_' => '"'.$iva->descrizione.'"',
|
]).'
|
||||||
]).'.</b>
|
</div>';
|
||||||
</div>';
|
|
||||||
} elseif ($diff == 0) {
|
|
||||||
echo '
|
|
||||||
<div class="alert alert-warning">
|
|
||||||
<i class="fa fa-warning"></i> '.tr("La dichiarazione d'intento ha raggiunto il massimale previsto di _MONEY_: le nuove righe della fattura devono presentare IVA diversa da _IVA_", [
|
|
||||||
'_MONEY_' => moneyFormat(abs($fattura->dichiarazione->massimale)),
|
|
||||||
'_IVA_' => '"'.$iva->descrizione.'"',
|
|
||||||
]).'.</b>
|
|
||||||
</div>';
|
|
||||||
} else {
|
|
||||||
echo '
|
|
||||||
<div class="alert alert-danger">
|
|
||||||
<i class="fa fa-warning"></i> '.tr("La dichiarazione d'intento ha superato il massimale previsto di _MONEY_: per rimuovere righe della fattura dalla dichiarazione è sufficiente modificare l'IVA in qualcosa di diverso da _IVA_", [
|
|
||||||
'_MONEY_' => moneyFormat(abs($diff)),
|
|
||||||
'_IVA_' => '"'.$iva->descrizione.'"',
|
|
||||||
]).'.</b>
|
|
||||||
</div>';
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -175,7 +175,7 @@ foreach ($righe as $riga) {
|
||||||
// Iva
|
// Iva
|
||||||
echo '
|
echo '
|
||||||
<td class="text-right">
|
<td class="text-right">
|
||||||
'.moneyFormat($riga->iva_unitaria).'
|
'.moneyFormat($riga->iva_unitaria_scontata).'
|
||||||
<br><small class="'.(($riga->aliquota->deleted_at) ? 'text-red' : '').' text-muted">'.$riga->aliquota->descrizione.(($riga->aliquota->esente) ? ' ('.$riga->aliquota->codice_natura_fe.')' : null).'</small>
|
<br><small class="'.(($riga->aliquota->deleted_at) ? 'text-red' : '').' text-muted">'.$riga->aliquota->descrizione.(($riga->aliquota->esente) ? ' ('.$riga->aliquota->codice_natura_fe.')' : null).'</small>
|
||||||
</td>';
|
</td>';
|
||||||
|
|
||||||
|
|
|
@ -125,7 +125,7 @@ if (!$righe->isEmpty()) {
|
||||||
|
|
||||||
echo '
|
echo '
|
||||||
<td class="text-right">
|
<td class="text-right">
|
||||||
'.moneyFormat($riga->iva_unitaria).'
|
'.moneyFormat($riga->iva_unitaria_scontata).'
|
||||||
<br><small class="'.(($riga->aliquota->deleted_at) ? 'text-red' : '').' text-muted">'.$riga->aliquota->descrizione.(($riga->aliquota->esente) ? ' ('.$riga->aliquota->codice_natura_fe.')' : null).'</small>
|
<br><small class="'.(($riga->aliquota->deleted_at) ? 'text-red' : '').' text-muted">'.$riga->aliquota->descrizione.(($riga->aliquota->esente) ? ' ('.$riga->aliquota->codice_natura_fe.')' : null).'</small>
|
||||||
</td>';
|
</td>';
|
||||||
|
|
||||||
|
|
|
@ -176,7 +176,7 @@ foreach ($righe as $riga) {
|
||||||
// Iva
|
// Iva
|
||||||
echo '
|
echo '
|
||||||
<td class="text-right">
|
<td class="text-right">
|
||||||
'.moneyFormat($riga->iva_unitaria).'
|
'.moneyFormat($riga->iva_unitaria_scontata).'
|
||||||
<br><small class="'.(($riga->aliquota->deleted_at) ? 'text-red' : '').' text-muted">'.$riga->aliquota->descrizione.(($riga->aliquota->esente) ? ' ('.$riga->aliquota->codice_natura_fe.')' : null).'</small>
|
<br><small class="'.(($riga->aliquota->deleted_at) ? 'text-red' : '').' text-muted">'.$riga->aliquota->descrizione.(($riga->aliquota->esente) ? ' ('.$riga->aliquota->codice_natura_fe.')' : null).'</small>
|
||||||
</td>';
|
</td>';
|
||||||
|
|
||||||
|
|
|
@ -102,7 +102,7 @@ foreach ($righe as $riga) {
|
||||||
// Iva
|
// Iva
|
||||||
echo '
|
echo '
|
||||||
<td class="text-right">
|
<td class="text-right">
|
||||||
'.moneyFormat($riga->iva_unitaria).'
|
'.moneyFormat($riga->iva_unitaria_scontata).'
|
||||||
<br><small class="'.(($riga->aliquota->deleted_at) ? 'text-red' : '').' text-muted">'.$riga->aliquota->descrizione.(($riga->aliquota->esente) ? ' ('.$riga->aliquota->codice_natura_fe.')' : null).'</small>
|
<br><small class="'.(($riga->aliquota->deleted_at) ? 'text-red' : '').' text-muted">'.$riga->aliquota->descrizione.(($riga->aliquota->esente) ? ' ('.$riga->aliquota->codice_natura_fe.')' : null).'</small>
|
||||||
</td>';
|
</td>';
|
||||||
|
|
||||||
|
|
|
@ -36,7 +36,7 @@ echo '
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<h3 class="panel-title">
|
<h3 class="panel-title">
|
||||||
'.tr('Dettagli scadenza').'
|
'.tr('Dettagli scadenza').'
|
||||||
<button type="button" class="btn btn-xs btn-info pull-right '.(empty($documento) ? 'disabled' : '').'" id="add-scadenza" '.(empty($documento) ? 'disabled' : '').'>
|
<button type="button" class="btn btn-xs btn-info pull-right tip '.(empty($documento) ? 'disabled' : '').'" id="add-scadenza" '.(empty($documento) ? 'disabled' : '').' title="'.tr('È possibile aggiungere scadenze solo se è presente il collegamento a un documento, in caso contrario è consigliato creare più scadenze con la stessa descrizione').'">
|
||||||
<i class="fa fa-plus"></i> '.tr('Aggiungi scadenza').'
|
<i class="fa fa-plus"></i> '.tr('Aggiungi scadenza').'
|
||||||
</button>
|
</button>
|
||||||
</h3>
|
</h3>
|
||||||
|
|
|
@ -58,11 +58,11 @@ echo '
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
{[ "type": "date", "label": "'.tr('Data protocollo').'", "name": "data_protocollo" ]}
|
{[ "type": "date", "label": "'.tr('Data protocollo').'", "name": "data_protocollo", "required": 1 ]}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
{[ "type": "date", "label": "'.tr('Data di emissione').'", "name": "data_emissione" ]}
|
{[ "type": "date", "label": "'.tr('Data di emissione').'", "name": "data_emissione", "required": 1 ]}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -57,11 +57,11 @@ echo '
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
{[ "type": "date", "label": "'.tr('Data protocollo').'", "name": "data_protocollo", "value": "'.$record['data_protocollo'].'" ]}
|
{[ "type": "date", "label": "'.tr('Data protocollo').'", "name": "data_protocollo", "value": "'.$record['data_protocollo'].'", "required": 1 ]}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
{[ "type": "date", "label": "'.tr('Data di emissione').'", "name": "data_emissione", "value": "'.$record['data_emissione'].'" ]}
|
{[ "type": "date", "label": "'.tr('Data di emissione').'", "name": "data_emissione", "value": "'.$record['data_emissione'].'", "required": 1 ]}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -420,10 +420,11 @@ if (!empty($righe)) {
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-3">
|
<div class="col-md-3">
|
||||||
{[ "type": "select", "name": "selezione_riferimento['.$key.']", "ajax-source": "riferimenti-fe", "select-options": '.json_encode(['id_anagrafica' => $anagrafica ? $anagrafica->id : '']).', "label": "'.tr('Riferimento acquisto').'", "icon-after": '.json_encode('<button type="button" onclick="rimuoviRiferimento(this)" class="btn btn-primary disabled" id="rimuovi_riferimento_'.$key.'"><i class="fa fa-close"></i></button>').' ]}
|
{[ "type": "select", "name": "selezione_riferimento['.$key.']", "ajax-source": "riferimenti-fe", "select-options": '.json_encode(['id_anagrafica' => $anagrafica ? $anagrafica->id : '']).', "label": "'.tr('Riferimento acquisto').'", "icon-after": '.json_encode('<button type="button" onclick="rimuoviRiferimento(this)" class="btn btn-primary disabled" id="rimuovi_riferimento_'.$key.'"><i class="fa fa-close"></i></button>').', "help": "'.tr('Articoli contenuti in Ordini o DDT del Fornitore').'" ]}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-md-3">
|
<div class="col-md-3">
|
||||||
{[ "type": "select", "name": "selezione_riferimento_vendita['.$key.']", "ajax-source": "riferimenti-vendita-fe", "select-options": '.json_encode(['id_articolo' => $id_articolo]).', "label": "'.tr('Riferimento vendita').'", "icon-after": '.json_encode('<button type="button" onclick="rimuoviRiferimentoVendita(this)" class="btn btn-primary disabled" id="rimuovi_riferimento_vendita_'.$key.'"><i class="fa fa-close"></i></button>').' ]}
|
{[ "type": "select", "name": "selezione_riferimento_vendita['.$key.']", "ajax-source": "riferimenti-vendita-fe", "select-options": '.json_encode(['id_articolo' => $id_articolo]).', "label": "'.tr('Riferimento vendita').'", "icon-after": '.json_encode('<button type="button" onclick="rimuoviRiferimentoVendita(this)" class="btn btn-primary disabled" id="rimuovi_riferimento_vendita_'.$key.'"><i class="fa fa-close"></i></button>').', "help": "'.tr('Articoli contenuti in Ordini Cliente').'" ]}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -114,7 +114,7 @@ if (!$righe->isEmpty()) {
|
||||||
|
|
||||||
echo '
|
echo '
|
||||||
<td class="text-right">
|
<td class="text-right">
|
||||||
'.moneyFormat($riga->iva_unitaria).'
|
'.moneyFormat($riga->iva_unitaria_scontata).'
|
||||||
<br><small class="'.(($riga->aliquota->deleted_at) ? 'text-red' : '').' text-muted">'.$riga->aliquota->descrizione.(($riga->aliquota->esente) ? ' ('.$riga->aliquota->codice_natura_fe.')' : null).'</small>
|
<br><small class="'.(($riga->aliquota->deleted_at) ? 'text-red' : '').' text-muted">'.$riga->aliquota->descrizione.(($riga->aliquota->esente) ? ' ('.$riga->aliquota->codice_natura_fe.')' : null).'</small>
|
||||||
</td>';
|
</td>';
|
||||||
|
|
||||||
|
|
|
@ -43,7 +43,10 @@ echo '
|
||||||
|
|
||||||
<div class="panel panel-primary">
|
<div class="panel panel-primary">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<h3 class="panel-title">'.tr('Prezzo medio acquisto').'</h3>
|
<h3 class="panel-title">
|
||||||
|
<span class="tip" title="'.tr("La statistica considera le fatture di acquisto nel periodo temporale definito").'"><i class="fa fa-question-circle"></i></span>
|
||||||
|
'.tr('Prezzo medio acquisto').'
|
||||||
|
</h3>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
|
@ -69,7 +72,10 @@ echo '
|
||||||
|
|
||||||
<div class="panel panel-primary">
|
<div class="panel panel-primary">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<h3 class="panel-title">'.tr('Prezzo medio vendita').'</h3>
|
<h3 class="panel-title">
|
||||||
|
<span class="tip" title="'.tr("La statistica considera le fatture di vendita nel periodo temporale definito").'"><i class="fa fa-question-circle"></i></span>
|
||||||
|
'.tr('Prezzo medio vendita').'
|
||||||
|
</h3>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
|
|
|
@ -148,7 +148,8 @@ class Interventi extends AppResource
|
||||||
IF(idsede_destinazione = 0, NULL, idsede_destinazione) AS id_sede,
|
IF(idsede_destinazione = 0, NULL, idsede_destinazione) AS id_sede,
|
||||||
firma_file,
|
firma_file,
|
||||||
IF(firma_data = '0000-00-00 00:00:00', '', firma_data) AS firma_data,
|
IF(firma_data = '0000-00-00 00:00:00', '', firma_data) AS firma_data,
|
||||||
firma_nome
|
firma_nome,
|
||||||
|
(SELECT GROUP_CONCAT(ragione_sociale SEPARATOR ',') FROM in_interventi_tecnici_assegnati INNER JOIN an_anagrafiche ON in_interventi_tecnici_assegnati.id_tecnico=an_anagrafiche.idanagrafica WHERE id_intervento=in_interventi.id) AS tecnici_assegnati
|
||||||
FROM in_interventi
|
FROM in_interventi
|
||||||
WHERE in_interventi.id = ".prepare($id);
|
WHERE in_interventi.id = ".prepare($id);
|
||||||
|
|
||||||
|
|
|
@ -217,7 +217,7 @@ class RigheInterventi extends AppResource
|
||||||
$record->um = $data['um'] ?: null;
|
$record->um = $data['um'] ?: null;
|
||||||
|
|
||||||
if (empty($data['id_iva'])) {
|
if (empty($data['id_iva'])) {
|
||||||
$data['id_iva'] = settings('Iva predefinita');
|
$data['id_iva'] = setting('Iva predefinita');
|
||||||
}
|
}
|
||||||
|
|
||||||
//$record->costo_unitario = $data['costo_unitario'] ?: 0;
|
//$record->costo_unitario = $data['costo_unitario'] ?: 0;
|
||||||
|
|
|
@ -34,7 +34,8 @@ use Modules\Iva\Aliquota;
|
||||||
* @property float sconto_unitario
|
* @property float sconto_unitario
|
||||||
* @property float sconto_iva_unitario = sconto_unitario * percentuale_iva
|
* @property float sconto_iva_unitario = sconto_unitario * percentuale_iva
|
||||||
* @property float sconto_unitario_ivato = sconto_unitario + sconto_iva_unitario
|
* @property float sconto_unitario_ivato = sconto_unitario + sconto_iva_unitario
|
||||||
*
|
* @property float iva_unitaria_scontata = iva_unitaria - sconto_iva_unitario
|
||||||
|
|
||||||
* Introduce i seguenti campi ausiliari:
|
* Introduce i seguenti campi ausiliari:
|
||||||
* @property float imponibile = prezzo_unitario * qta
|
* @property float imponibile = prezzo_unitario * qta
|
||||||
* @property float sconto = sconto_unitario * qta
|
* @property float sconto = sconto_unitario * qta
|
||||||
|
@ -56,6 +57,7 @@ abstract class Accounting extends Component
|
||||||
'prezzo_unitario' => 'float',
|
'prezzo_unitario' => 'float',
|
||||||
'prezzo_unitario_ivato' => 'float',
|
'prezzo_unitario_ivato' => 'float',
|
||||||
'iva_unitaria' => 'float',
|
'iva_unitaria' => 'float',
|
||||||
|
'iva_unitaria_scontata' => 'float',
|
||||||
'sconto_percentuale' => 'float',
|
'sconto_percentuale' => 'float',
|
||||||
'sconto_unitario' => 'float',
|
'sconto_unitario' => 'float',
|
||||||
'sconto_iva_unitario' => 'float',
|
'sconto_iva_unitario' => 'float',
|
||||||
|
@ -201,11 +203,26 @@ abstract class Accounting extends Component
|
||||||
return $this->costo_unitario * $this->qta;
|
return $this->costo_unitario * $this->qta;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Restituisce l'iva detraibile dell'elemento.
|
||||||
|
*
|
||||||
|
* @return float
|
||||||
|
*/
|
||||||
public function getIvaDetraibileAttribute()
|
public function getIvaDetraibileAttribute()
|
||||||
{
|
{
|
||||||
return $this->iva - $this->iva_indetraibile;
|
return $this->iva - $this->iva_indetraibile;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Restituisce l'iva unitaria con lo sconto applicato.
|
||||||
|
*
|
||||||
|
* @return float
|
||||||
|
*/
|
||||||
|
public function getIvaUnitariaScontataAttribute()
|
||||||
|
{
|
||||||
|
return $this->iva_unitaria - $this->sconto_iva_unitario;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Restituisce lo sconto unitario corrente (unitario oppure unitario ivato a seconda dell'impostazione 'Utilizza prezzi di vendita comprensivi di IVA') per la riga.
|
* Restituisce lo sconto unitario corrente (unitario oppure unitario ivato a seconda dell'impostazione 'Utilizza prezzi di vendita comprensivi di IVA') per la riga.
|
||||||
*
|
*
|
||||||
|
|
|
@ -135,7 +135,7 @@ class Plugins
|
||||||
if (!empty($plugin) && in_array($plugin->permission, ['r', 'rw'])) {
|
if (!empty($plugin) && in_array($plugin->permission, ['r', 'rw'])) {
|
||||||
$anchor = 'tab_'.$plugin->id;
|
$anchor = 'tab_'.$plugin->id;
|
||||||
|
|
||||||
return Modules::link($plugin->originalModule->id, $id_record, $testo, $alternativo, $extra, $blank, $anchor);
|
return Modules::link($plugin->module->id, $id_record, $testo, $alternativo, $extra, $blank, $anchor);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $alternativo;
|
return $alternativo;
|
||||||
|
|
|
@ -0,0 +1,110 @@
|
||||||
|
<?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/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
use Models\Upload;
|
||||||
|
use Plugins\ExportFE\FatturaElettronica;
|
||||||
|
|
||||||
|
include_once __DIR__.'/../../core.php';
|
||||||
|
|
||||||
|
try {
|
||||||
|
$fattura_pa = new FatturaElettronica($id_record);
|
||||||
|
} catch (UnexpectedValueException $e) {
|
||||||
|
echo '<div class="text-center">'.tr("Questo documento non è una fattura elettronica").'</div>';
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$file = Upload::where('filename', $fattura_pa->getFilename())
|
||||||
|
->where('id_record', $id_record)
|
||||||
|
->first();
|
||||||
|
|
||||||
|
$file = Models\Upload::find($file['id']);
|
||||||
|
|
||||||
|
if (empty($file)) {
|
||||||
|
echo '<div class="text-center">'.tr("Questo documento non è una fattura elettronica").'</div>';
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$link = base_path().'/'.$file->filepath;
|
||||||
|
|
||||||
|
if ($file->isFatturaElettronica()) {
|
||||||
|
$content = file_get_contents(base_dir().'/'.$file->filepath);
|
||||||
|
|
||||||
|
// Individuazione stylesheet
|
||||||
|
$default_stylesheet = 'asso-invoice';
|
||||||
|
|
||||||
|
$name = basename($file->original_name);
|
||||||
|
$filename = explode('.', $name)[0];
|
||||||
|
$pieces = explode('_', $filename);
|
||||||
|
$stylesheet = $pieces[2];
|
||||||
|
|
||||||
|
$stylesheet = base_dir().'/plugins/xml/'.$stylesheet.'.xsl';
|
||||||
|
$stylesheet = file_exists($stylesheet) ? $stylesheet : base_dir().'/plugins/xml/'.$default_stylesheet.'.xsl';
|
||||||
|
|
||||||
|
// XML
|
||||||
|
$xml = new DOMDocument();
|
||||||
|
$xml->loadXML($content);
|
||||||
|
|
||||||
|
// XSL
|
||||||
|
$xsl = new DOMDocument();
|
||||||
|
$xsl->load($stylesheet);
|
||||||
|
|
||||||
|
// XSLT
|
||||||
|
$xslt = new XSLTProcessor();
|
||||||
|
$xslt->importStylesheet($xsl);
|
||||||
|
echo $xslt->transformToXML($xml);
|
||||||
|
|
||||||
|
echo '
|
||||||
|
<style>
|
||||||
|
#notifica {
|
||||||
|
min-width: 860px !important;
|
||||||
|
}
|
||||||
|
table.tbFoglio td {
|
||||||
|
border-bottom: solid 1px #000000;
|
||||||
|
}
|
||||||
|
</style>';
|
||||||
|
|
||||||
|
|
||||||
|
} else {
|
||||||
|
echo '
|
||||||
|
<style>
|
||||||
|
body, iframe, img{
|
||||||
|
border: 0;
|
||||||
|
margin: 0;
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
iframe{
|
||||||
|
width:100%;
|
||||||
|
height:100%;
|
||||||
|
min-height: 500px;
|
||||||
|
}
|
||||||
|
</style>';
|
||||||
|
|
||||||
|
if ($file->isImage()) {
|
||||||
|
echo '
|
||||||
|
<img src="'.$link.'"></img>';
|
||||||
|
} else {
|
||||||
|
if ($file->isPDF()) {
|
||||||
|
$src = \Prints::getPDFLink($file->filepath);
|
||||||
|
}
|
||||||
|
|
||||||
|
echo '
|
||||||
|
<iframe src="'.($link ?: $src).'">
|
||||||
|
<a src="'.$link.'">'.tr('Il browser non supporta i contenuti iframe: clicca qui per raggiungere il file originale').'</a>
|
||||||
|
</iframe>';
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue