Aggiunta campi Peso e Volume manuali in DDT e Fatture accompagnatorie

This commit is contained in:
Thomas Zilio 2020-07-08 08:45:55 +02:00
parent ad69d26e59
commit ab82ce291e
10 changed files with 163 additions and 20 deletions

View File

@ -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">

View File

@ -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,

View File

@ -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">

View File

@ -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');

View File

@ -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;

View File

@ -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>';

View File

@ -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
/**

View File

@ -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 '

View File

@ -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);

View File

@ -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`;