2017-08-04 16:28:16 +02:00
< ? php
include_once __DIR__ . '/../../core.php' ;
echo '
2020-03-09 13:57:13 +01:00
< div class = " table-responsive " >
2017-08-04 16:28:16 +02:00
< table class = " table table-striped table-hover table-condensed table-bordered " >
2018-01-14 17:46:00 +01:00
< thead >
< tr >
< th > '.tr(' Descrizione ').' </ th >
2020-02-28 11:38:24 +01:00
< th class = " text-center " width = " 150 " > '.tr(' Q . tà ').' </ th >
< th class = " text-center " width = " 150 " > '.tr(' Prezzo unitario ').' </ th >
< th class = " text-center " width = " 150 " > '.tr(' Iva unitaria ').' </ th >
< th class = " text-center " width = " 150 " > '.tr(' Importo ').' </ th >
2018-01-14 17:46:00 +01:00
< th width = " 60 " ></ th >
</ tr >
</ thead >
2017-08-04 16:28:16 +02:00
< tbody class = " sortable " > ' ;
2020-01-17 17:31:07 +01:00
// Righe documento
$righe = $fattura -> getRighe ();
foreach ( $righe as $riga ) {
2018-12-23 16:16:59 +01:00
$extra = '' ;
2020-03-09 13:57:13 +01:00
$mancanti = 0 ;
2019-10-01 18:32:06 +02:00
$delete = 'delete_riga' ;
2019-07-23 15:39:00 +02:00
2020-03-09 13:57:13 +01:00
// Operazione di rimozione specializzata per gli Interventi
if ( ! empty ( $documento_originale ) && $documento_originale instanceof \Modules\Interventi\Intervento ) {
2019-01-10 18:41:25 +01:00
$delete = 'unlink_intervento' ;
}
2018-11-30 16:10:15 +01:00
2018-12-23 16:16:59 +01:00
// Individuazione dei seriali
2020-03-09 13:57:13 +01:00
if ( $riga -> isArticolo () && ! empty ( $riga -> abilita_serial )) {
2020-01-17 17:31:07 +01:00
$serials = $riga -> serials ;
2020-03-09 13:57:13 +01:00
$mancanti = abs ( $riga -> qta ) - count ( $serials );
2018-11-30 16:10:15 +01:00
2018-12-23 16:16:59 +01:00
if ( $mancanti > 0 ) {
$extra = 'class="warning"' ;
} else {
$mancanti = 0 ;
2018-10-30 10:27:44 +01:00
}
2018-12-23 16:16:59 +01:00
}
2019-01-09 17:09:43 +01:00
2019-01-10 18:41:25 +01:00
$extra_riga = '' ;
2020-03-09 13:57:13 +01:00
if ( ! $riga -> isDescrizione ()) {
// Informazioni su CIG, CUP, ...
if ( $riga -> hasOriginal ()) {
$documento_originale = $riga -> getOriginal () -> parent ;
$num_item = $documento_originale [ 'num_item' ];
$codice_cig = $documento_originale [ 'codice_cig' ];
$codice_cup = $documento_originale [ 'codice_cup' ];
$id_documento_fe = $documento_originale [ 'id_documento_fe' ];
}
$descrizione_conto = $dbo -> fetchOne ( 'SELECT descrizione FROM co_pianodeiconti3 WHERE id = ' . prepare ( $riga -> id_conto ))[ 'descrizione' ];
//dump($documento_originale);exit();
2020-02-05 18:50:47 +01:00
$extra_riga = tr ( '_DESCRIZIONE_CONTO__ID_DOCUMENTO__NUMERO_RIGA__CODICE_CIG__CODICE_CUP__RITENUTA_ACCONTO__RITENUTA_CONTRIBUTI__RIVALSA_' , [
2020-03-09 13:57:13 +01:00
'_RIVALSA_' => $riga -> rivalsa_inps ? '<br>Rivalsa: ' . moneyFormat ( abs ( $riga -> rivalsa_inps )) : null ,
'_RITENUTA_ACCONTO_' => $riga -> ritenuta_acconto ? '<br>Ritenuta acconto: ' . moneyFormat ( abs ( $riga -> ritenuta_acconto )) : null ,
'_RITENUTA_CONTRIBUTI_' => $riga -> ritenuta_contributi ? '<br>Ritenuta contributi: ' . moneyFormat ( abs ( $riga -> ritenuta_contributi )) : null ,
'_DESCRIZIONE_CONTO_' => $descrizione_conto ? : null ,
'_ID_DOCUMENTO_' => $id_documento_fe ? ' - DOC: ' . $id_documento_fe : null ,
'_NUMERO_RIGA_' => $num_item ? ', NRI: ' . $num_item : null ,
'_CODICE_CIG_' => $codice_cig ? ', CIG: ' . $codice_cig : null ,
'_CODICE_CUP_' => $codice_cup ? ', CUP: ' . $codice_cup : null ,
2019-01-25 11:02:36 +01:00
]);
}
2019-01-10 18:41:25 +01:00
2018-12-23 16:16:59 +01:00
echo '
2020-03-09 13:57:13 +01:00
< tr data - id = " '. $riga->id .' " '.$extra.' >
< td > ' ;
if ( $riga -> isArticolo ()) {
echo '
'.Modules::link(' Articoli ', $riga->idarticolo, $riga->articolo->codice.' - ' . $riga -> descrizione );
} else {
echo nl2br ( $riga -> descrizione );
}
echo '
2020-02-05 00:31:41 +01:00
< small class = " pull-right text-right text-muted " > '.$extra_riga.' </ small > ' ;
2017-08-04 16:28:16 +02:00
2020-03-09 13:57:13 +01:00
if ( $riga -> isArticolo () && ! empty ( $riga -> abilita_serial )) {
2018-12-23 16:16:59 +01:00
if ( ! empty ( $mancanti )) {
echo '
2017-09-10 14:35:41 +02:00
< br >< b >< small class = " text-danger " > '.tr(' _NUM_ serial mancanti ' , [
'_NUM_' => $mancanti ,
]) . '</small></b>' ;
2018-12-23 16:16:59 +01:00
}
if ( ! empty ( $serials )) {
echo '
2017-09-04 12:02:29 +02:00
< br > '.tr(' SN ').' : '.implode(' , ' , $serials );
2017-08-04 16:28:16 +02:00
}
2018-12-23 16:16:59 +01:00
}
2017-08-04 16:28:16 +02:00
2020-03-03 10:33:32 +01:00
// Aggiunta dei riferimenti ai documenti
if ( $riga -> hasOriginal ()) {
2018-12-23 16:16:59 +01:00
echo '
2020-03-03 10:33:32 +01:00
< br > ' . reference ( $riga -> getOriginal () -> parent );
2018-12-23 16:16:59 +01:00
}
2017-08-04 16:28:16 +02:00
2018-12-23 16:16:59 +01:00
echo '
2017-08-04 16:28:16 +02:00
</ td > ' ;
2020-02-28 11:38:24 +01:00
if ( $riga -> isDescrizione ()) {
2018-02-15 16:44:16 +01:00
echo '
2020-02-28 11:38:24 +01:00
< td ></ td >
< td ></ td >
< td ></ td >
< td ></ td > ' ;
} else {
// Quantità e unità di misura
2018-01-18 19:03:06 +01:00
echo '
2020-02-28 11:38:24 +01:00
< td class = " text-center " >
2020-03-09 13:57:13 +01:00
'.numberFormat($riga->qta, ' qta ').' '.$riga->um.'
2017-08-04 16:28:16 +02:00
</ td > ' ;
2020-02-28 11:38:24 +01:00
// Prezzi unitari
2017-08-04 16:28:16 +02:00
echo '
2020-02-28 11:38:24 +01:00
< td class = " text-right " >
' . moneyFormat ( $riga -> prezzo_unitario_corrente );
2018-12-24 10:46:59 +01:00
2020-02-14 17:43:39 +01:00
if ( $dir == 'entrata' && $riga -> costo_unitario != 0 ) {
2018-12-24 10:46:59 +01:00
echo '
2018-12-23 16:16:59 +01:00
< br >< small >
2020-02-14 17:43:39 +01:00
'.tr(' Acquisto ').' : '.moneyFormat($riga->costo_unitario).'
2018-12-23 16:16:59 +01:00
</ small > ' ;
2018-12-24 10:46:59 +01:00
}
2018-02-15 16:44:16 +01:00
2020-01-17 17:31:07 +01:00
if ( abs ( $riga -> sconto_unitario ) > 0 ) {
2020-02-15 14:11:44 +01:00
$text = discountInfo ( $riga );
2019-07-11 17:44:42 +02:00
2018-02-17 09:02:19 +01:00
echo '
2020-02-15 14:11:44 +01:00
< br >< small class = " label label-danger " > '.$text.' </ small > ' ;
2017-08-04 16:28:16 +02:00
}
2018-02-15 16:44:16 +01:00
2020-02-28 11:38:24 +01:00
echo '
2017-08-04 16:28:16 +02:00
</ td > ' ;
2020-02-28 11:38:24 +01:00
// Iva
2018-01-18 19:03:06 +01:00
echo '
2020-02-28 11:38:24 +01:00
< td class = " text-right " >
'.moneyFormat($riga->iva_unitaria).'
< br >< small class = " '.(( $riga->aliquota ->deleted_at) ? 'text-red' : '').' help-block " > '.$riga->aliquota->descrizione.(($riga->aliquota->esente) ? ' ( '.$riga->aliquota->codice_natura_fe.' ) ' : null).' </ small >
2017-08-04 16:28:16 +02:00
</ td > ' ;
2020-02-28 11:38:24 +01:00
// Importo
2018-12-23 14:25:20 +01:00
echo '
2020-02-28 11:38:24 +01:00
< td class = " text-right " >
'.moneyFormat($riga->importo).'
2018-12-23 14:25:20 +01:00
</ td > ' ;
2020-02-28 11:38:24 +01:00
}
2018-12-23 14:25:20 +01:00
2018-12-23 16:16:59 +01:00
// Possibilità di rimuovere una riga solo se la fattura non è pagata
echo '
2017-08-04 16:28:16 +02:00
< td class = " text-center " > ' ;
2020-03-09 13:57:13 +01:00
if ( $record [ 'stato' ] != 'Pagato' && $record [ 'stato' ] != 'Emessa' && $riga -> id != $fattura -> rigaBollo -> id ) {
2018-12-23 16:16:59 +01:00
echo "
2020-03-09 13:57:13 +01:00
< form action = '".$rootdir.' / editor . php ? id_module = '.$id_module.' & id_record = '.$id_record."' method = 'post' id = 'delete-form-".$riga->id."' role = 'form' >
2017-08-04 16:28:16 +02:00
< input type = 'hidden' name = 'backto' value = 'record-edit' >
2020-03-09 13:57:13 +01:00
< input type = 'hidden' name = 'idriga' value = '".$riga->id."' >
2020-01-17 17:31:07 +01:00
< input type = 'hidden' name = 'type' value = '".get_class($riga)."' >
2019-07-23 15:39:00 +02:00
< input type = 'hidden' name = 'op' value = '".$delete."' > " ;
2017-08-04 16:28:16 +02:00
2020-01-17 17:31:07 +01:00
if ( $riga -> isArticolo ()) {
2017-08-04 16:28:16 +02:00
echo "
2020-03-09 13:57:13 +01:00
< input type = 'hidden' name = 'idarticolo' value = '".$riga->idarticolo."' > " ;
2018-12-23 16:16:59 +01:00
}
2017-08-04 16:28:16 +02:00
2018-12-23 16:16:59 +01:00
echo "
< div class = 'input-group-btn' > " ;
2017-08-04 16:28:16 +02:00
2020-03-09 13:57:13 +01:00
if ( $riga -> isArticolo () && ! empty ( $riga -> abilita_serial )) {
2017-08-04 16:28:16 +02:00
echo "
2020-03-09 13:57:13 +01:00
< a class = 'btn btn-primary btn-xs' data - toggle = 'tooltip' title = 'Aggiorna SN...' onclick = \ " launch_modal( 'Aggiorna SN', ' " . $structure -> fileurl ( 'add_serial.php' ) . '?id_module=' . $id_module . '&id_record=' . $id_record . '&idriga=' . $riga -> id . '&idarticolo=' . $riga -> idarticolo . " '); \" ><i class='fa fa-barcode' aria-hidden='true'></i></a> " ;
2018-12-23 16:16:59 +01:00
}
2018-02-19 17:57:27 +01:00
2018-12-23 16:16:59 +01:00
echo "
2020-03-09 13:57:13 +01:00
< a class = 'btn btn-xs btn-info' title = '".tr(' Aggiungi informazioni FE per questa riga ... ')."' data - toggle = 'modal' data - title = '".tr(' Dati Fattura Elettronica ')."' data - href = '".$structure->fileurl(' fe / row - fe . php ').' ? id_module = '.$id_module.' & id_record = '.$id_record.' & idriga = '.$riga->id.' & type = '.urlencode(get_class($riga))."' >
2019-07-15 16:53:18 +02:00
< i class = 'fa fa-file-code-o ' ></ i >
</ a >
2019-07-16 11:34:40 +02:00
2020-03-09 13:57:13 +01:00
< a class = 'btn btn-xs btn-warning' title = '".tr(' Modifica questa riga ... ')."' onclick = \ " launch_modal( 'Modifica riga', ' " . $structure -> fileurl ( 'row-edit.php' ) . '?id_module=' . $id_module . '&id_record=' . $id_record . '&idriga=' . $riga -> id . '&type=' . urlencode ( get_class ( $riga )) . " '); \" >
2019-07-15 16:53:18 +02:00
< i class = 'fa fa-edit' ></ i >
</ a >
2020-03-09 13:57:13 +01:00
< a class = 'btn btn-xs btn-danger' title = '".tr(' Rimuovi questa riga ... ')."' onclick = \ " if( confirm(' " . tr ( 'Rimuovere questa riga dalla fattura?' ) . " ') ) { $ ('#delete-form- " . $riga -> id . " ').submit(); } \" >
2019-07-15 16:53:18 +02:00
< i class = 'fa fa-trash' ></ i >
</ a >
2017-08-04 16:28:16 +02:00
</ div >
</ form > " ;
2018-12-23 16:16:59 +01:00
}
2017-08-04 16:28:16 +02:00
2018-12-23 16:16:59 +01:00
echo '
2017-08-04 16:28:16 +02:00
< div class = " handle clickable " style = " padding:10px " >
< i class = " fa fa-sort " ></ i >
</ div > ' ;
2018-12-23 16:16:59 +01:00
echo '
2017-08-04 16:28:16 +02:00
</ td >
</ tr > ' ;
2018-12-23 16:16:59 +01:00
}
2017-08-04 16:28:16 +02:00
echo '
</ tbody > ' ;
2020-03-09 13:57:13 +01:00
// Individuazione dei totali
$imponibile = $fattura -> imponibile ;
2019-07-12 17:35:14 +02:00
$sconto = $fattura -> sconto ;
2020-03-09 13:57:13 +01:00
$totale_imponibile = $fattura -> totale_imponibile ;
$iva = $fattura -> iva ;
$totale = $fattura -> totale ;
$netto_a_pagare = $fattura -> netto ;
// Inversione dei valori per le Note
$imponibile = $fattura -> isNota () ? - $imponibile : $imponibile ;
$sconto = $fattura -> isNota () ? - $sconto : $sconto ;
$totale_imponibile = $fattura -> isNota () ? - $totale_imponibile : $totale_imponibile ;
$iva = $fattura -> isNota () ? - $iva : $iva ;
$totale = $fattura -> isNota () ? - $totale : $totale ;
$netto_a_pagare = $fattura -> isNota () ? - $netto_a_pagare : $netto_a_pagare ;
2018-12-23 14:25:20 +01:00
2017-08-04 16:28:16 +02:00
// IMPONIBILE
echo '
< tr >
2020-02-28 11:38:24 +01:00
< td colspan = " 4 " class = " text-right " >
2017-09-10 14:35:41 +02:00
< b > '.tr(' Imponibile ', [], [' upper ' => true]).' :</ b >
2017-08-04 16:28:16 +02:00
</ td >
< td align = " right " >
2019-05-02 10:03:57 +02:00
'.moneyFormat($imponibile, 2).'
2017-08-04 16:28:16 +02:00
</ td >
< td ></ td >
</ tr > ' ;
// SCONTO
2018-12-23 16:16:59 +01:00
if ( ! empty ( $sconto )) {
2017-08-04 16:28:16 +02:00
echo '
< tr >
2020-02-28 11:38:24 +01:00
< td colspan = " 4 " class = " text-right " >
2019-07-12 12:40:13 +02:00
< b >< span class = " tip " title = " '.tr('Un importo positivo indica uno sconto, mentre uno negativo indica una maggiorazione').' " >< i class = " fa fa-question-circle-o " ></ i > '.tr(' Sconto / maggiorazione ', [], [' upper ' => true]).' :</ span ></ b >
2017-08-04 16:28:16 +02:00
</ td >
< td align = " right " >
2019-05-02 10:03:57 +02:00
'.moneyFormat($sconto, 2).'
2017-08-04 16:28:16 +02:00
</ td >
< td ></ td >
</ tr > ' ;
2019-07-11 17:44:42 +02:00
// TOTALE IMPONIBILE
2017-08-04 16:28:16 +02:00
echo '
< tr >
2020-02-28 11:38:24 +01:00
< td colspan = " 4 " class = " text-right " >
2019-07-11 17:44:42 +02:00
< b > '.tr(' Totale imponibile ', [], [' upper ' => true]).' :</ b >
2017-08-04 16:28:16 +02:00
</ td >
< td align = " right " >
2019-07-11 17:44:42 +02:00
'.moneyFormat($totale_imponibile, 2).'
2017-08-04 16:28:16 +02:00
</ td >
< td ></ td >
</ tr > ' ;
}
// RIVALSA INPS
2018-12-23 16:16:59 +01:00
if ( ! empty ( $fattura -> rivalsa_inps )) {
2017-08-04 16:28:16 +02:00
echo '
< tr >
2020-02-28 11:38:24 +01:00
< td colspan = " 4 " class = " text-right " > ' ;
2019-02-12 17:21:27 +01:00
if ( $dir == 'entrata' ) {
echo '
2019-04-14 00:19:01 +02:00
< span class = " tip " title = " '. $database->fetchOne ('SELECT CONCAT_WS( \ ' - \ ', codice, descrizione) AS descrizione FROM fe_tipo_cassa WHERE codice = '.prepare(setting('Tipo Cassa Previdenziale')))['descrizione'].' " > < i class = " fa fa-question-circle-o " ></ i ></ span > ' ;
2019-02-12 17:21:27 +01:00
}
echo '
2019-01-30 16:42:28 +01:00
< b > '.tr(' Rivalsa ', [], [' upper ' => true]).' :</ b >
2017-08-04 16:28:16 +02:00
</ td >
< td align = " right " >
2019-05-02 10:03:57 +02:00
'.moneyFormat($fattura->rivalsa_inps, 2).'
2017-08-04 16:28:16 +02:00
</ td >
< td ></ td >
</ tr > ' ;
}
// IVA
2018-12-23 16:16:59 +01:00
if ( ! empty ( $iva )) {
2017-08-04 16:28:16 +02:00
echo '
< tr >
2020-02-28 11:38:24 +01:00
< td colspan = " 4 " class = " text-right " > ' ;
2018-12-29 12:03:22 +01:00
if ( $records [ 0 ][ 'split_payment' ]) {
echo '<b>' . tr ( 'Iva a carico del destinatario' , [], [ 'upper' => true ]) . ':</b>' ;
} else {
echo '<b>' . tr ( 'Iva' , [], [ 'upper' => true ]) . ':</b>' ;
}
echo '
2017-08-04 16:28:16 +02:00
</ td >
< td align = " right " >
2019-05-02 10:03:57 +02:00
'.moneyFormat($iva, 2).'
2017-08-04 16:28:16 +02:00
</ td >
< td ></ td >
</ tr > ' ;
}
// TOTALE
echo '
< tr >
2020-02-28 11:38:24 +01:00
< td colspan = " 4 " class = " text-right " >
2017-09-10 14:35:41 +02:00
< b > '.tr(' Totale ', [], [' upper ' => true]).' :</ b >
2017-08-04 16:28:16 +02:00
</ td >
< td align = " right " >
2019-05-02 10:03:57 +02:00
'.moneyFormat($totale, 2).'
2017-08-04 16:28:16 +02:00
</ td >
< td ></ td >
</ tr > ' ;
// RITENUTA D'ACCONTO
2018-12-23 16:16:59 +01:00
if ( ! empty ( $fattura -> ritenuta_acconto )) {
2017-08-04 16:28:16 +02:00
echo '
< tr >
2020-02-28 11:38:24 +01:00
< td colspan = " 4 " class = " text-right " >
2017-09-10 14:35:41 +02:00
< b > '.tr("Ritenuta d' acconto " , [], ['upper' => true]).':</b>
2017-08-04 16:28:16 +02:00
</ td >
< td align = " right " >
2019-06-28 15:13:36 +02:00
'.moneyFormat(abs($fattura->ritenuta_acconto), 2).'
2017-08-04 16:28:16 +02:00
</ td >
< td ></ td >
</ tr > ' ;
}
2019-02-15 12:12:44 +01:00
// RITENUTA CONTRIBUTI
if ( ! empty ( $fattura -> totale_ritenuta_contributi )) {
echo '
< tr >
2020-02-28 11:38:24 +01:00
< td colspan = " 4 " class = " text-right " >
2019-02-15 12:12:44 +01:00
< b > '.tr(' Ritenuta contributi ', [], [' upper ' => true]).' :</ b >
</ td >
< td align = " right " >
2020-02-05 00:31:41 +01:00
'.moneyFormat(abs($fattura->totale_ritenuta_contributi), 2).'
2019-02-15 12:12:44 +01:00
</ td >
< td ></ td >
</ tr > ' ;
}
2017-08-04 16:28:16 +02:00
// NETTO A PAGARE
if ( $totale != $netto_a_pagare ) {
echo '
< tr >
2020-02-28 11:38:24 +01:00
< td colspan = " 4 " class = " text-right " >
2017-09-10 14:35:41 +02:00
< b > '.tr(' Netto a pagare ', [], [' upper ' => true]).' :</ b >
2017-08-04 16:28:16 +02:00
</ td >
< td align = " right " >
2019-05-02 10:03:57 +02:00
'.moneyFormat($netto_a_pagare, 2).'
2017-08-04 16:28:16 +02:00
</ td >
< td ></ td >
</ tr > ' ;
}
echo '
2020-03-09 13:57:13 +01:00
</ table >
</ div > ' ;
2017-08-04 16:28:16 +02:00
echo '
< script >
$ ( document ) . ready ( function (){
$ ( " .sortable " ) . each ( function () {
$ ( this ) . sortable ({
axis : " y " ,
handle : " .handle " ,
cursor : " move " ,
dropOnEmpty : true ,
scroll : true ,
update : function ( event , ui ) {
2018-10-30 10:27:44 +01:00
var order = " " ;
$ ( " .table tr[data-id] " ) . each ( function (){
order += " , " + $ ( this ) . data ( " id " );
});
order = order . replace ( /^ , / , " " );
2018-12-23 16:16:59 +01:00
2017-08-04 16:28:16 +02:00
$ . post ( " '. $rootdir .'/actions.php " , {
id : ui . item . data ( " id " ),
id_module : '.$id_module.' ,
id_record : '.$id_record.' ,
op : " update_position " ,
2018-10-30 10:27:44 +01:00
order : order ,
2017-08-04 16:28:16 +02:00
});
}
});
});
});
</ script > ' ;