2017-08-04 16:28:16 +02:00
< ? php
include_once __DIR__ . '/../../core.php' ;
echo '
< table class = " table table-striped table-hover table-condensed table-bordered " >
2018-05-18 18:43:01 +02:00
< thead >
2020-05-29 15:58:47 +02:00
< tr >
< th width = " 35 " class = " text-center " > '.tr(' #').'</th>
2018-05-18 18:43:01 +02:00
< th > '.tr(' Descrizione ').' </ th >
2020-07-05 00:12:39 +02:00
< th class = " text-center " width = " 150 " > '.tr(' Q . tà disponibile ').' </ th >
< th class = " text-center tip " width = " 150 " title = " '.tr('da evadere').' / '.tr('totale').' " > '.tr(' Q . tà richiesta ').' < i class = " fa fa-question-circle-o " ></ i ></ th >
2020-02-28 11:38:24 +01:00
< 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-05-18 18:43:01 +02: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 = $ordine -> getRighe ();
foreach ( $righe as $riga ) {
$extra = '' ;
$mancanti = 0 ;
2018-02-19 17:48:04 +01:00
2020-01-17 17:31:07 +01:00
// Individuazione dei seriali
2020-03-09 13:57:13 +01:00
if ( $riga -> isArticolo () && ! empty ( $riga -> abilita_serial )) {
$serials = $riga -> serials ;
$mancanti = abs ( $riga -> qta ) - count ( $serials );
2017-08-04 16:28:16 +02:00
2020-01-17 17:31:46 +01:00
if ( $mancanti > 0 ) {
$extra = 'class="warning"' ;
} else {
$mancanti = 0 ;
2017-08-04 16:28:16 +02:00
}
2020-01-17 17:31:46 +01:00
}
2017-08-04 16:28:16 +02:00
2020-01-17 17:31:46 +01:00
echo '
2020-07-06 13:19:20 +02:00
< tr data - id = " '. $riga->id .' " data - type = " '.get_class( $riga ).' " '.$extra.' >
< td > ' ;
2020-05-29 15:58:47 +02:00
echo '
< td class = " text-center " >
2020-06-09 16:59:26 +02:00
'.(($riga->order) + 1).'
2020-07-05 00:12:39 +02:00
</ td >
2020-07-06 13:19:20 +02:00
2020-07-05 00:12:39 +02:00
< td > ' ;
2017-08-04 16:28:16 +02:00
2020-03-09 13:57:13 +01:00
if ( $riga -> isArticolo ()) {
2020-01-17 17:31:46 +01:00
echo '
2020-07-06 13:32:43 +02:00
'.Modules::link(' Articoli ', $riga->idarticolo, $riga->codice.' - ' . $riga -> descrizione );
2020-03-09 13:57:13 +01:00
} else {
echo nl2br ( $riga -> descrizione );
}
2017-08-04 16:28:16 +02:00
2020-03-09 13:57:13 +01:00
if ( $riga -> isArticolo () && ! empty ( $riga -> abilita_serial )) {
if ( ! empty ( $mancanti )) {
echo '
2017-09-10 14:35:41 +02:00
< br >< b >< small class = " text-danger " > '.tr(' _NUM_ serial mancanti ' , [
2020-03-09 13:57:13 +01:00
'_NUM_' => $mancanti ,
]) . '</small></b>' ;
}
if ( ! empty ( $serials )) {
echo '
2017-09-04 12:02:29 +02:00
< br > '.tr(' SN ').' : '.implode(' , ' , $serials );
2018-06-14 15:51:00 +02:00
}
2020-01-17 17:31:46 +01:00
}
2018-06-14 15:51:00 +02:00
2020-07-05 00:12:39 +02:00
// Disponibilità articolo
$disponibile = $riga -> articolo -> qta >= ( $riga -> qta - $riga -> qta_evasa );
echo '
< td class = " text-center '.( $disponibile ? 'bg-success' : 'bg-danger' ).' " > ' ;
if ( $riga -> isArticolo ()) {
echo ( $disponibile ? '<i class="fa fa-check text-success"></i> ' : '<i class="fa fa-warning text-danger"></i> ' ) . numberFormat ( $riga -> articolo -> qta ) . ' ' . $riga -> um ;
} else {
echo '-' ;
}
echo '
</ td > ' ;
2020-07-06 13:19:20 +02:00
2020-07-05 00:12:39 +02:00
2020-01-17 17:31:46 +01:00
// Aggiunta dei riferimenti ai documenti
2020-03-03 10:33:32 +01:00
if ( $riga -> hasOriginal ()) {
2020-01-17 17:31:46 +01:00
echo '
2020-03-03 10:33:32 +01:00
< br > ' . reference ( $riga -> getOriginal () -> parent );
2020-01-17 17:31:46 +01:00
}
2017-08-04 16:28:16 +02:00
2020-01-17 17:31:46 +01:00
echo '
2017-08-04 16:28:16 +02:00
</ td > ' ;
2020-02-28 11:38:24 +01:00
if ( $riga -> isDescrizione ()) {
2017-08-04 16:28:16 +02: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_rimanente, ' qta ').' / '.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
2020-01-17 17:31:46 +01:00
echo '
2020-02-28 11:38:24 +01:00
< td class = " text-right " >
' . moneyFormat ( $riga -> prezzo_unitario_corrente );
if ( $dir == 'entrata' && $riga -> costo_unitario != 0 ) {
echo '
2020-07-05 00:12:39 +02:00
< br >< small class = " text-muted " >
2020-02-28 11:38:24 +01:00
'.tr(' Acquisto ').' : '.moneyFormat($riga->costo_unitario).'
</ small > ' ;
}
2018-01-18 19:03:06 +01:00
2020-02-28 11:38:24 +01:00
if ( abs ( $riga -> sconto_unitario ) > 0 ) {
$text = discountInfo ( $riga );
2019-07-11 17:44:42 +02:00
2020-01-17 17:31:46 +01:00
echo '
2020-02-28 11:38:24 +01:00
< br >< small class = " label label-danger " > '.$text.' </ small > ' ;
2017-08-04 16:28:16 +02: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
2020-01-17 17:31:46 +01:00
echo '
2020-02-28 11:38:24 +01:00
< td class = " text-right " >
'.moneyFormat($riga->iva_unitaria).'
2020-07-05 00:12:39 +02:00
< br >< small class = " '.(( $riga->aliquota ->deleted_at) ? 'text-red' : '').' text-muted " > '.$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-01-18 19:03:06 +01:00
echo '
2020-02-28 11:38:24 +01:00
< td class = " text-right " >
'.moneyFormat($riga->importo).'
2017-08-04 16:28:16 +02:00
</ td > ' ;
2020-02-28 11:38:24 +01:00
}
2017-08-04 16:28:16 +02:00
2020-01-17 17:31:46 +01:00
// Possibilità di rimuovere una riga solo se l'ordine non è evaso
echo '
2017-08-04 16:28:16 +02:00
< td class = " text-center " > ' ;
2020-01-17 17:31:46 +01:00
if ( $record [ 'flag_completato' ] == 0 ) {
2020-07-06 13:19:20 +02: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 )) {
2020-07-06 13:19:20 +02:00
echo '
< a class = " btn btn-primary btn-xs " title = " '.tr('Modifica seriali della riga').' " onclick = " modificaSeriali(this) " >
< i class = " fa fa-barcode " ></ i >
</ a > ' ;
2020-01-17 17:31:46 +01:00
}
2017-08-04 16:28:16 +02:00
2020-07-06 13:19:20 +02:00
echo '
< a class = " btn btn-xs btn-warning " title = " '.tr('Modifica riga').' " onclick = " modificaRiga(this) " >
< i class = " fa fa-edit " ></ i >
</ a >
< a class = " btn btn-xs btn-danger " title = " '.tr('Rimuovi riga').' " onclick = " rimuoviRiga(this) " >
< i class = " fa fa-trash " ></ i >
</ a >
< a class = " btn btn-xs btn-default handle " title = " '.tr('Modifica ordine delle righe').' " >
< i class = " fa fa-sort " ></ i >
</ a >
</ div > ' ;
2020-01-17 17:31:46 +01:00
}
2019-05-04 00:32:28 +02:00
2020-01-17 17:31:46 +01:00
echo '
2017-08-04 16:28:16 +02:00
</ td >
</ tr > ' ;
2020-01-17 17:31:46 +01:00
}
2020-01-17 17:31:07 +01:00
2017-08-04 16:28:16 +02:00
echo '
</ tbody > ' ;
// Calcoli
2019-07-12 17:35:14 +02:00
$imponibile = abs ( $ordine -> imponibile );
$sconto = $ordine -> sconto ;
$totale_imponibile = abs ( $ordine -> totale_imponibile );
$iva = abs ( $ordine -> iva );
$totale = abs ( $ordine -> totale );
2017-08-04 16:28:16 +02:00
// IMPONIBILE
echo '
< tr >
2020-07-05 00:22:22 +02:00
< td colspan = " 6 " 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 >
2020-07-06 13:19:20 +02:00
< td class = " text-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
2019-07-12 17:35:14 +02:00
if ( ! empty ( $sconto )) {
2017-08-04 16:28:16 +02:00
echo '
< tr >
2020-07-05 00:22:22 +02:00
< td colspan = " 6 " 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 >
2020-07-06 13:19:20 +02:00
< td class = " text-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-07-05 00:22:22 +02:00
< td colspan = " 6 " 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 >
2020-07-06 13:19:20 +02:00
< td class = " text-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 > ' ;
}
// IVA
2019-07-12 17:35:14 +02:00
echo '
2017-08-04 16:28:16 +02:00
< tr >
2020-07-05 00:22:22 +02:00
< td colspan = " 6 " class = " text-right " >
2017-09-10 14:35:41 +02:00
< b > '.tr(' Iva ', [], [' upper ' => true]).' :</ b >
2017-08-04 16:28:16 +02:00
</ td >
2020-07-06 13:19:20 +02:00
< td class = " text-right " >
2019-07-12 17:35:14 +02:00
'.moneyFormat($iva, 2).'
2017-08-04 16:28:16 +02:00
</ td >
< td ></ td >
</ tr > ' ;
// TOTALE
echo '
< tr >
2020-07-05 00:22:22 +02:00
< td colspan = " 6 " 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 >
2020-07-06 13:19:20 +02:00
< td class = " text-right " >
2019-05-02 10:03:57 +02:00
'.moneyFormat($totale, 2).'
2017-08-04 16:28:16 +02:00
</ td >
< td ></ td >
</ tr > ' ;
echo '
</ table > ' ;
echo '
< script >
2020-07-06 13:19:20 +02:00
function modificaRiga ( button ) {
var riga = $ ( button ) . closest ( " tr " );
var id = riga . data ( " id " );
var type = riga . data ( " type " );
openModal ( " '.tr('Modifica riga').' " , " '. $module->fileurl ('row-edit.php').'?id_module= " + globals . id_module + " &id_record= " + globals . id_record + " &riga_id= " + id + " &riga_type= " + type )
}
function rimuoviRiga ( button ) {
swal ({
title : " '.tr('Rimuovere questa riga?').' " ,
html : " '.tr('Sei sicuro di volere rimuovere questa riga dal documento?').' '.tr( " L 'operazione è irreversibile").' . " ,
type : " warning " ,
showCancelButton : true ,
confirmButtonText : " '.tr('Sì').' "
}) . then ( function () {
var riga = $ ( button ) . closest ( " tr " );
var id = riga . data ( " id " );
var type = riga . data ( " type " );
$ . ajax ({
url : globals . rootdir + " /actions.php " ,
type : " POST " ,
dataType : " json " ,
data : {
id_module : globals . id_module ,
id_record : globals . id_record ,
op : " delete_riga " ,
riga_type : type ,
riga_id : id ,
},
success : function ( response ) {
location . reload ();
},
error : function () {
location . reload ();
}
});
}) . catch ( swal . noop );
}
function modificaSeriali ( button ) {
var riga = $ ( button ) . closest ( " tr " );
var id = riga . data ( " id " );
var type = riga . data ( " type " );
openModal ( " '.tr('Aggiorna SN').' " , globals . rootdir + " /modules/fatture/add_serial.php?id_module= " + globals . id_module + " &id_record= " + globals . id_record + " &riga_id= " + id + " &riga_type= " + type );
}
2017-08-04 16:28:16 +02:00
$ ( 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-28 08:07:56 +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
});
}
});
});
});
2020-06-09 16:59:26 +02:00
</ script > ' ;