Aggiunta campi Peso e Volume manuali in DDT e Fatture accompagnatorie
This commit is contained in:
parent
ad69d26e59
commit
ab82ce291e
|
@ -67,17 +67,15 @@ $_SESSION['superselect']['id_categoria'] = $record['id_categoria'];
|
|||
{[ "type": "number", "label": "<?php echo tr('Quantità'); ?>", "name": "qta", "required": 1, "value": "$qta$", "readonly": 1, "decimals": "qta", "min-value": "undefined" ]}
|
||||
<input type="hidden" id="old_qta" value="<?php echo $record['qta']; ?>">
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
{[ "type": "checkbox", "label": "<?php echo tr('Modifica quantità'); ?>", "name": "qta_manuale", "value": 0, "help": "<?php echo tr('Seleziona per modificare manualmente la quantità'); ?>", "placeholder": "<?php echo tr('Quantità manuale'); ?>", "extra": "<?php echo ($record['servizio']) ? 'disabled' : ''; ?>" ]}
|
||||
<script type="text/javascript">
|
||||
|
||||
$(document).ready(function() {
|
||||
|
||||
$('#servizio').click(function(){
|
||||
$("#qta_manuale").attr("disabled", $('#servizio').is(":checked"));
|
||||
});
|
||||
|
||||
|
||||
$('#qta_manuale').click(function(){
|
||||
$("#qta").attr("readonly", !$('#qta_manuale').is(":checked"));
|
||||
if($('#qta_manuale').is(":checked")){
|
||||
|
@ -94,9 +92,7 @@ $_SESSION['superselect']['id_categoria'] = $record['id_categoria'];
|
|||
});
|
||||
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
|
|
|
@ -88,6 +88,8 @@ switch (post('op')) {
|
|||
'idritenutaacconto' => $idritenutaacconto,
|
||||
|
||||
'n_colli' => post('n_colli'),
|
||||
'peso' => post('peso'),
|
||||
'volume' => post('volume'),
|
||||
'bollo' => 0,
|
||||
'rivalsainps' => 0,
|
||||
'ritenutaacconto' => 0,
|
||||
|
|
|
@ -173,7 +173,7 @@ $_SESSION['superselect']['permetti_movimento_a_zero'] = ($dir == 'uscita' ? true
|
|||
<div class="col-md-3">
|
||||
{[ "type": "timestamp", "label": "<?php echo tr('Data ora trasporto'); ?>", "name": "data_ora_trasporto", "required": 0, "value": "$data_ora_trasporto$" ]}
|
||||
</div>
|
||||
|
||||
|
||||
<script>
|
||||
$("#idspedizione").change( function(){
|
||||
//Per tutti tipi di spedizione, a parte "Espressa" o "Vettore", il campo vettore non deve essere richiesto
|
||||
|
@ -190,7 +190,7 @@ $_SESSION['superselect']['permetti_movimento_a_zero'] = ($dir == 'uscita' ? true
|
|||
$("label[for=idvettore]").text("<?php echo tr('Vettore'); ?>*");
|
||||
$(".btn_idvettore").prop("disabled", false);
|
||||
$(".btn_idvettore").removeClass("disabled");
|
||||
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -203,6 +203,46 @@ $_SESSION['superselect']['permetti_movimento_a_zero'] = ($dir == 'uscita' ? true
|
|||
});
|
||||
</script>
|
||||
</div>
|
||||
<?php
|
||||
|
||||
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').'" ]}
|
||||
</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>
|
||||
</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').'" ]}
|
||||
</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>
|
||||
</div>
|
||||
</div>';
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
|
|
|
@ -17,6 +17,12 @@ class DDT extends Document
|
|||
|
||||
protected $table = 'dt_ddt';
|
||||
|
||||
protected $casts = [
|
||||
'bollo' => 'float',
|
||||
'peso' => 'float',
|
||||
'volume' => 'float',
|
||||
];
|
||||
|
||||
protected $with = [
|
||||
'tipo',
|
||||
];
|
||||
|
@ -100,6 +106,38 @@ class DDT extends Document
|
|||
return $this->tipo->dir;
|
||||
}
|
||||
|
||||
/**
|
||||
* Restituisce il peso calcolato sulla base degli articoli del documento.
|
||||
*
|
||||
* @return float
|
||||
*/
|
||||
public function getPesoCalcolatoAttribute()
|
||||
{
|
||||
$righe = $this->getRighe();
|
||||
|
||||
$peso_lordo = $righe->sum(function ($item) {
|
||||
return $item->isArticolo() ? $item->articolo->peso_lordo * $item->qta : 0;
|
||||
});
|
||||
|
||||
return $peso_lordo;
|
||||
}
|
||||
|
||||
/**
|
||||
* Restituisce il volume calcolato sulla base degli articoli del documento.
|
||||
*
|
||||
* @return float
|
||||
*/
|
||||
public function getVolumeCalcolatoAttribute()
|
||||
{
|
||||
$righe = $this->getRighe();
|
||||
|
||||
$volume = $righe->sum(function ($item) {
|
||||
return $item->isArticolo() ? $item->articolo->volume * $item->qta : 0;
|
||||
});
|
||||
|
||||
return $volume;
|
||||
}
|
||||
|
||||
public function anagrafica()
|
||||
{
|
||||
return $this->belongsTo(Anagrafica::class, 'idanagrafica');
|
||||
|
|
|
@ -85,6 +85,9 @@ switch (post('op')) {
|
|||
$fattura->n_colli = post('n_colli');
|
||||
$fattura->tipo_resa = post('tipo_resa');
|
||||
|
||||
$fattura->peso = post('peso');
|
||||
$fattura->volume = post('volume');
|
||||
|
||||
$fattura->rivalsainps = 0;
|
||||
$fattura->ritenutaacconto = 0;
|
||||
$fattura->iva_rivalsainps = 0;
|
||||
|
|
|
@ -534,9 +534,43 @@ if ($tipodoc == 'Fattura accompagnatoria di vendita') {
|
|||
|
||||
echo '
|
||||
<div class="col-md-3">
|
||||
{[ "type": "select", "label": "'.tr('Tipo Resa').'", "name": "tipo_resa", "value":"$tipo_resa$", "values": '.json_encode($tipo_resa).', "readonly": '.intval($record['causale_desc'] != 'Reso').' ]}
|
||||
{[ "type": "select", "label": "'.tr('Tipo Resa').'", "name": "tipo_resa", "value": "$tipo_resa$", "values": '.json_encode($tipo_resa).', "readonly": '.intval($record['causale_desc'] != 'Reso').' ]}
|
||||
</div>
|
||||
</div>
|
||||
</div>';
|
||||
|
||||
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').'" ]}
|
||||
</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>
|
||||
</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').'" ]}
|
||||
</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>
|
||||
</div>
|
||||
</div>
|
||||
</div>';
|
||||
|
|
|
@ -28,6 +28,8 @@ class Fattura extends Document
|
|||
|
||||
protected $casts = [
|
||||
'bollo' => 'float',
|
||||
'peso' => 'float',
|
||||
'volume' => 'float',
|
||||
];
|
||||
|
||||
protected $with = [
|
||||
|
@ -192,6 +194,38 @@ class Fattura extends Document
|
|||
return $this->tipo->dir;
|
||||
}
|
||||
|
||||
/**
|
||||
* Restituisce il peso calcolato sulla base degli articoli del documento.
|
||||
*
|
||||
* @return float
|
||||
*/
|
||||
public function getPesoCalcolatoAttribute()
|
||||
{
|
||||
$righe = $this->getRighe();
|
||||
|
||||
$peso_lordo = $righe->sum(function ($item) {
|
||||
return $item->isArticolo() ? $item->articolo->peso_lordo * $item->qta : 0;
|
||||
});
|
||||
|
||||
return $peso_lordo;
|
||||
}
|
||||
|
||||
/**
|
||||
* Restituisce il volume calcolato sulla base degli articoli del documento.
|
||||
*
|
||||
* @return float
|
||||
*/
|
||||
public function getVolumeCalcolatoAttribute()
|
||||
{
|
||||
$righe = $this->getRighe();
|
||||
|
||||
$volume = $righe->sum(function ($item) {
|
||||
return $item->isArticolo() ? $item->articolo->volume * $item->qta : 0;
|
||||
});
|
||||
|
||||
return $volume;
|
||||
}
|
||||
|
||||
// Calcoli
|
||||
|
||||
/**
|
||||
|
|
|
@ -11,12 +11,8 @@ $totale_imponibile = $documento->totale_imponibile;
|
|||
$totale_iva = $documento->iva;
|
||||
$totale = $documento->totale;
|
||||
|
||||
$volume = $righe->sum(function ($item) {
|
||||
return $item->isArticolo() ? $item->articolo->volume * $item->qta : 0;
|
||||
});
|
||||
$peso_lordo = $righe->sum(function ($item) {
|
||||
return $item->isArticolo() ? $item->articolo->peso_lordo * $item->qta : 0;
|
||||
});
|
||||
$volume = $documento->volume ?: $documento->volume_calcolato;
|
||||
$peso_lordo = $documento->peso ?: $documento->peso_calcolato;
|
||||
|
||||
// TABELLA PRINCIPALE
|
||||
echo '
|
||||
|
|
|
@ -14,12 +14,8 @@ $netto_a_pagare = abs($documento->netto);
|
|||
|
||||
$show_sconto = $sconto > 0;
|
||||
|
||||
$volume = $righe->sum(function ($item) {
|
||||
return $item->isArticolo() ? $item->articolo->volume * $item->qta : 0;
|
||||
});
|
||||
$peso_lordo = $righe->sum(function ($item) {
|
||||
return $item->isArticolo() ? $item->articolo->peso_lordo * $item->qta : 0;
|
||||
});
|
||||
$volume = $documento->volume ?: $documento->volume_calcolato;
|
||||
$peso_lordo = $documento->peso ?: $documento->peso_calcolato;
|
||||
|
||||
$width = round(100 / ($show_sconto ? 5 : 3), 2);
|
||||
|
||||
|
|
|
@ -111,3 +111,7 @@ ALTER TABLE `mg_prodotti` ADD FOREIGN KEY (`id_riga_intervento`) REFERENCES `in_
|
|||
-- Periodi di validità (Contratti e Preventivi)
|
||||
ALTER TABLE `co_contratti` ADD COLUMN `tipo_validita` ENUM('days', 'months', 'years') NULL DEFAULT NULL AFTER `validita`;
|
||||
ALTER TABLE `co_preventivi` ADD COLUMN `tipo_validita` ENUM('days', 'months', 'years') NULL DEFAULT NULL AFTER `validita`;
|
||||
|
||||
-- Aggiunta campi Peso e Volume in DDT e Fatture accompagnatorie
|
||||
ALTER TABLE `dt_ddt` ADD COLUMN `peso` decimal(12, 4) AFTER `n_colli`, ADD COLUMN `volume` decimal(12, 4) AFTER `peso`;
|
||||
ALTER TABLE `co_documenti` ADD COLUMN `peso` decimal(12, 4) AFTER `n_colli`, ADD COLUMN `volume` decimal(12, 4) AFTER `peso`;
|
||||
|
|
Loading…
Reference in New Issue