openstamanager/include/common/riga.php

225 lines
10 KiB
PHP
Raw Normal View History

<?php
2020-09-07 15:04:06 +02:00
/*
* OpenSTAManager: il software gestionale open source per l'assistenza tecnica e la fatturazione
2021-01-20 15:08:51 +01:00
* Copyright (C) DevCode s.r.l.
2020-09-07 15:04:06 +02:00
*
* 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/>.
*/
// Descrizione
echo App::internalLoad('descrizione.php', $result, $options);
2018-09-03 16:31:15 +02:00
// Conti, rivalsa INPS e ritenuta d'acconto
echo App::internalLoad('conti.php', $result, $options);
// Iva
echo '
<div class="row">
<div class="col-md-4 '.(!empty($options['nascondi_prezzi']) ? 'hidden' : '').'">
2020-08-17 16:25:01 +02:00
{[ "type": "select", "label": "'.tr('Iva').'", "name": "idiva", "required": 1, "value": "'.$result['idiva'].'", "ajax-source": "iva", "select-options": '.json_encode($options['select-options']['iva']).' ]}
</div>';
// Quantità
echo '
<div class="col-md-4">
2022-03-25 18:47:13 +01:00
{[ "type": "number", "label": "'.tr('Q.tà').'", "name": "qta", "required": 1, "value": "'.abs((float) $result['qta']).'", "decimals": "qta"'.(isset($result['max_qta']) ? ', "icon-after": "<span class=\"tip\" title=\"'.tr("L'elemento è collegato a un documento: la quantità massima ammessa è relativa allo stato di evasione dell'elemento nel documento di origine (quantità dell'elemento / quantità massima ammessa)").'\">/ '.numberFormat(abs((float) $result['max_qta']), 'qta').' <i class=\"fa fa-question-circle-o\"></i></span>"' : '').', "min-value": "'.abs((float) $result['qta_evasa']).'" ]}
</div>';
// Unità di misura
echo '
<div class="col-md-4">
{[ "type": "select", "label": "'.tr('Unità di misura').'", "icon-after": "add|'.Modules::get('Unità di misura')['id'].'", "name": "um", "value": "'.$result['um'].'", "ajax-source": "misure" ]}
</div>
</div>';
echo '
<div class="row '.(!empty($options['nascondi_prezzi']) ? 'hidden' : '').'">
<input type="hidden" name="prezzi_ivati" value="'.setting('Utilizza prezzi di vendita comprensivi di IVA').'">';
2019-04-19 18:32:29 +02:00
2018-12-24 10:46:59 +01:00
$width = $options['dir'] == 'entrata' ? 4 : 6;
$label = $options['dir'] == 'entrata' ? tr('Prezzo unitario di vendita') : tr('Prezzo unitario');
2019-04-19 18:32:29 +02:00
2018-12-23 16:16:59 +01:00
if ($options['dir'] == 'entrata') {
// Prezzo di acquisto unitario
echo '
<div class="col-md-'.$width.'">
{[ "type": "number", "label": "'.tr('Prezzo unitario di acquisto').'", "name": "costo_unitario", "value": "'.$result['costo_unitario'].'", "icon-after": "'.currency().'" ]}
</div>';
2018-12-23 16:16:59 +01:00
// Funzione per l'aggiornamento in tempo reale del guadagno
echo '
<script>
function aggiorna_guadagno() {
var prezzi_ivati = input("prezzi_ivati").get();
var costo_unitario = $("#costo_unitario").val().toEnglish();
var prezzo = 0;
if (prezzi_ivati!=0) {
percentuale_iva = input("idiva").getElement().selectData().percentuale;
prezzo = $("#prezzo_unitario").val().toEnglish() / (1 + percentuale_iva / 100);
} else {
prezzo = $("#prezzo_unitario").val().toEnglish();
}
2018-12-23 16:16:59 +01:00
var sconto = $("#sconto").val().toEnglish();
2021-11-08 12:10:48 +01:00
if ($("#modals select[id^=\'tipo_sconto\']").val() === "PRC") {
2018-12-24 10:46:59 +01:00
sconto = sconto / 100 * prezzo;
2018-12-23 16:16:59 +01:00
}
var guadagno = prezzo - sconto - costo_unitario;
2020-07-03 16:28:11 +02:00
var margine = (((prezzo - sconto) * 100) / costo_unitario) - 100;
var parent = $("#costo_unitario").closest("div").parent();
2018-12-23 16:16:59 +01:00
var div = parent.find("div[id*=\"errors\"]");
var mediaponderata = 0;
2018-12-23 16:16:59 +01:00
margine = isNaN(margine) || !isFinite(margine) ? 0: margine; // Fix per magine NaN
if ($("#idarticolo").val()) {
mediaponderata = parseFloat($("#idarticolo").selectData().media_ponderata);
}
2021-10-26 10:18:32 +02:00
div.html("<table class=\"table table-extra-condensed\" style=\"margin-top:7px;\" >\
<tr>\
<td>\
<small>&nbsp;'.tr('Guadagno').':</small>\
</td>\
<td align=\"right\">\
<small>" + guadagno.toLocale() + "</small>\
</td>\
2021-10-26 10:18:32 +02:00
<td align=\"center\">\
<small>" + globals.currency + "</small>\
</td>\
</tr>\
<tr>\
<td>\
<small>&nbsp;'.tr('Margine').':</small>\
</td>\
<td align=\"right\">\
<small>" + margine.toLocale() + "<small>\
</td>\
2021-10-26 10:18:32 +02:00
<td align=\"center\">\
<small>&nbsp;%<small>\
</td>\
</tr>\
<tr>\
<td>\
<small>&nbsp;'.tr('Costo medio').':</small>\
</td>\
<td align=\"right\">\
2021-10-26 11:10:28 +02:00
<small>" + (mediaponderata!=0 ? mediaponderata.toLocale() : "- ") + "</small>\
</td>\
2021-10-26 10:18:32 +02:00
<td align=\"center\">\
<small>" + globals.currency + "</small>\
</td>\
</tr>\
</table>");
2018-12-23 16:16:59 +01:00
if (guadagno < 0) {
parent.addClass("has-error");
div.addClass("label-danger").removeClass("label-success");
2018-12-23 16:16:59 +01:00
} else {
parent.removeClass("has-error");
div.removeClass("label-danger").addClass("label-success");
2018-12-23 16:16:59 +01:00
}
}
$("#modals > div").on("shown.bs.modal", function () {
aggiorna_guadagno();
});
2018-12-24 10:46:59 +01:00
$("#prezzo_unitario").keyup(aggiorna_guadagno);
$("#costo_unitario").keyup(aggiorna_guadagno);
2018-12-25 11:32:19 +01:00
$("#sconto").keyup(aggiorna_guadagno);
2021-11-08 12:10:48 +01:00
$("#modals select[id^=\'tipo_sconto\']").change(aggiorna_guadagno);
2018-12-23 16:16:59 +01:00
</script>';
}
// Prezzo di vendita unitario
echo '
2018-12-23 16:16:59 +01:00
<div class="col-md-'.$width.'">
2020-02-28 00:22:12 +01:00
{[ "type": "number", "label": "'.$label.'", "name": "prezzo_unitario", "value": "'.$result['prezzo_unitario_corrente'].'", "required": 1, "icon-after": "'.currency().'", "help": "'.($options['dir'] == 'entrata' && setting('Utilizza prezzi di vendita comprensivi di IVA') ? tr('Importo IVA inclusa') : '').'" ]}
</div>';
// Sconto unitario
echo '
2018-12-23 16:16:59 +01:00
<div class="col-md-'.$width.'">
2020-02-15 14:11:44 +01:00
{[ "type": "number", "label": "'.tr('Sconto unitario').'", "name": "sconto", "value": "'.($result['sconto_percentuale'] ?: $result['sconto_unitario_corrente']).'", "icon-after": "choice|untprc|'.$result['tipo_sconto'].'", "help": "'.tr('Il valore positivo indica uno sconto. Per applicare una maggiorazione inserire un valore negativo.').'" ]}
</div>
</div>';
// Data prevista evasione (per ordini)
if (in_array($module['name'], ['Ordini cliente', 'Ordini fornitore', 'Preventivi'])) {
2020-10-16 08:31:10 +02:00
if ($options['action'] == 'add') {
if ($module['name'] == 'Ordini cliente') {
2020-10-16 08:31:10 +02:00
$confermato = setting('Conferma automaticamente le quantità negli ordini cliente');
2021-07-07 07:57:10 +02:00
} elseif ($module['name'] == 'Ordini fornitore') {
2020-10-16 08:31:10 +02:00
$confermato = setting('Conferma automaticamente le quantità negli ordini fornitore');
} else {
$confermato = setting('Conferma automaticamente le quantità nei preventivi');
}
2020-10-16 08:31:10 +02:00
} else {
$confermato = $result['confermato'];
}
echo '
2021-10-26 10:18:32 +02:00
<div class="box box-info collapsable collapsed-box">
<div class="box-header with-border">
<h3 class="box-title">'.tr('Informazioni aggiuntive').'</h3>
<div class="box-tools pull-right">
<button type="button" class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-plus"></i></button>
</div>
</div>
<div class="box-body">
<div class="row">
<div class="col-md-4">
{[ "type": "date", "label": "'.tr('Data prevista evasione').'", "name": "data_evasione", "value": "'.$result['data_evasione'].'" ]}
</div>
<div class="col-md-4">
{[ "type": "time", "label": "'.tr('Ora prevista evasione').'", "name": "ora_evasione", "value": "'.$result['ora_evasione'].'", "disabled": 1 ]}
</div>
<div class="col-md-4">
{[ "type": "checkbox", "label": "'.tr('Cambia data a tutte le righe').'", "name": "data_evasione_all", "value": "" ]}
</div>
</div>
<div class="row">
<div class="col-md-4">
</div>
<div class="col-md-4">
{[ "type": "checkbox", "label": "'.tr('Articolo confermato').'", "name": "confermato", "value": "'.$confermato.'" ]}
</div>
<div class="col-md-4">
{[ "type": "checkbox", "label": "'.tr('Cambia stato a tutte le righe').'", "name": "confermato_all", "value": "" ]}
</div>
</div>
2020-08-06 11:44:41 +02:00
</div>
</div>
<script>
$(document).ready(function() {
if(input("data_evasione").get()){
input("ora_evasione").enable();
}
});
2021-05-18 11:18:06 +02:00
$("#data_evasione").blur(function() {
if(input("data_evasione").get()){
input("ora_evasione").enable();
} else{
input("ora_evasione").disable();
input("ora_evasione").set();
}
});
</script>';
}