Aggiunto confermato, data e ora evasione in preventivi

This commit is contained in:
MatteoPistorello 2021-07-02 10:17:09 +02:00
parent aad3eb180b
commit ef358f9a82
7 changed files with 121 additions and 13 deletions

View File

@ -43,6 +43,7 @@ Il formato utilizzato è basato sulle linee guida di [Keep a Changelog](http://k
- Aggiunta possibilità di selezionare la sede di partenza della merce in fase di aggiunta articolo da un'attività
- Sostituito plugin **Componenti** nel modulo Impianti con la possibilità di inserire gli articoli di magazzino
- Aggiunta colonna Scaduto nel modulo Scadenzario
- Aggiunto campi confermato, data e ora evasione nel modulo **Preventivi**
### Fixed
-

View File

@ -271,6 +271,13 @@ foreach ($righe as $i => $riga) {
}else{
$qta_rimanente = $riga['qta_rimanente'];
}
$attr = 'checked="checked"';
if($original_module['name']=='Preventivi'){
if(empty($riga['confermato']) && $riga['is_descrizione']==0){
$attr = '';
}
}
// Descrizione
echo '
@ -285,7 +292,7 @@ foreach ($righe as $i => $riga) {
// Checkbox - da evadere?
echo '
<input type="checkbox" checked="checked" id="checked_'.$i.'" name="evadere['.$riga['id'].']" value="on" onclick="ricalcolaTotaleRiga('.$i.');" />';
<input type="checkbox" '.$attr.' id="checked_'.$i.'" name="evadere['.$riga['id'].']" value="on" onclick="ricalcolaTotaleRiga('.$i.');" />';
$descrizione = ($riga->isArticolo() ? $riga->articolo->codice.' - ' : '').$riga['descrizione'];

View File

@ -110,12 +110,14 @@ echo '
// Data prevista evasione (per ordini)
if (in_array($module['name'], ['Ordini cliente', 'Ordini fornitore'])) {
if (in_array($module['name'], ['Ordini cliente', 'Ordini fornitore', 'Preventivi'])) {
if ($options['action'] == 'add') {
if ($options['dir'] == 'entrata') {
if ($module['name'] == 'Ordini cliente') {
$confermato = setting('Conferma automaticamente le quantità negli ordini cliente');
} else {
} elseif($module['name'] == 'Ordini fornitore') {
$confermato = setting('Conferma automaticamente le quantità negli ordini fornitore');
} else {
$confermato = setting('Conferma automaticamente le quantità nei preventivi');
}
} else {
$confermato = $result['confermato'];

View File

@ -534,6 +534,9 @@ switch (post('op')) {
$copia->qta = $qta;
$copia->qta_evasa = 0;
$copia->costo_unitario = 0;
$copia->data_evasione = null;
$copia->ora_evasione = null;
$copia->confermato = setting('Conferma automaticamente le quantità negli ordini fornitore');
// Impostazione al prezzo di acquisto per Articoli
if ($copia->isArticolo()) {

View File

@ -212,6 +212,9 @@ switch (post('op')) {
$articolo->descrizione = post('descrizione');
$articolo->um = post('um') ?: null;
$articolo->data_evasione = post('data_evasione') ?: null;
$articolo->ora_evasione = post('ora_evasione') ?: null;
$articolo->confermato = post('confermato') ?: 0;
$articolo->costo_unitario = post('costo_unitario') ?: 0;
$articolo->setPrezzoUnitario(post('prezzo_unitario'), post('idiva'));
@ -225,6 +228,26 @@ switch (post('op')) {
$articolo->save();
// Impostare data evasione su tutte le righe
if (post('data_evasione_all') == 1) {
$righe = $preventivo->getRighe()->where('is_descrizione', '=', '0');
foreach ($righe as $riga) {
$riga->data_evasione = post('data_evasione') ?: null;
$riga->ora_evasione = post('ora_evasione') ?: null;
$riga->save();
}
}
// Impostare confermato su tutte le righe
if (post('confermato_all') == 1) {
$righe = $preventivo->getRighe()->where('is_descrizione', '=', '0');
foreach ($righe as $riga) {
$riga->confermato = post('confermato') ?: 0;
$riga->save();
}
}
if (post('idriga') != null) {
flash()->info(tr('Articolo modificato!'));
} else {
@ -264,6 +287,9 @@ switch (post('op')) {
$riga->descrizione = post('descrizione');
$riga->um = post('um') ?: null;
$riga->data_evasione = post('data_evasione') ?: null;
$riga->ora_evasione = post('ora_evasione') ?: null;
$riga->confermato = post('confermato') ?: 0;
$riga->costo_unitario = post('costo_unitario') ?: 0;
$riga->setPrezzoUnitario(post('prezzo_unitario'), post('idiva'));
@ -273,6 +299,26 @@ switch (post('op')) {
$riga->save();
// Impostare data evasione su tutte le righe
if (post('data_evasione_all') == 1) {
$righe = $preventivo->getRighe()->where('is_descrizione', '=', '0');
foreach ($righe as $riga) {
$riga->data_evasione = post('data_evasione') ?: null;
$riga->ora_evasione = post('ora_evasione') ?: null;
$riga->save();
}
}
// Impostare confermato su tutte le righe
if (post('confermato_all') == 1) {
$righe = $preventivo->getRighe()->where('is_descrizione', '=', '0');
foreach ($righe as $riga) {
$riga->confermato = post('confermato') ?: 0;
$riga->save();
}
}
if (post('idriga') != null) {
flash()->info(tr('Riga modificata!'));
} else {

View File

@ -26,6 +26,7 @@ echo '
<tr>
<th width="35" class="text-center" >'.tr('#').'</th>
<th>'.tr('Descrizione').'</th>
<th width="120">'.tr('Prev. evasione').'</th>
<th class="text-center tip" width="150" title="'.tr('da evadere').' / '.tr('totale').'">'.tr('Q.').' <i class="fa fa-question-circle-o"></i></th>
<th class="text-center" width="150">'.tr('Prezzo unitario').'</th>
<th class="text-center" width="150">'.tr('Iva unitaria').'</th>
@ -36,6 +37,8 @@ echo '
<tbody class="sortable">';
// Righe documento
$today = new Carbon\Carbon();
$today = $today->startOfDay();
$righe = $preventivo->getRighe();
$num = 0;
foreach ($righe as $riga) {
@ -64,6 +67,43 @@ foreach ($righe as $riga) {
'.$descrizione.'
</td>';
// Data prevista evasione
$info_evasione = '';
if (!empty($riga->data_evasione)) {
$evasione = new Carbon\Carbon($riga->data_evasione);
if ($today->diffInDays($evasione, false) < 0) {
$evasione_icon = 'fa fa-warning text-danger';
$evasione_help = tr('Da consegnare _NUM_ giorni fa',
[
'_NUM_' => $today->diffInDays($evasione),
]
);
} elseif ($today->diffInDays($evasione, false) == 0) {
$evasione_icon = 'fa fa-clock-o text-warning';
$evasione_help = tr('Da consegnare oggi');
} else {
$evasione_icon = 'fa fa-check text-success';
$evasione_help = tr('Da consegnare fra _NUM_ giorni',
[
'_NUM_' => $today->diffInDays($evasione),
]
);
}
if (!empty($riga->ora_evasione)) {
$ora_evasione = '<br>'.Translator::timeToLocale($riga->ora_evasione).'';
} else {
$ora_evasione = '';
}
$info_evasione = '<span class="tip" title="'.$evasione_help.'"><i class="'.$evasione_icon.'"></i> '.Translator::dateToLocale($riga->data_evasione).$ora_evasione.'</span>';
}
echo '
<td class="text-center">
'.$info_evasione.'
</td>';
if ($riga->isDescrizione()) {
echo '
<td></td>
@ -74,6 +114,7 @@ foreach ($righe as $riga) {
// Quantità e unità di misura
echo '
<td class="text-center">
<i class="'.($riga->confermato ? 'fa fa-check text-success' : 'fa fa-clock-o text-warning').'"></i>
'.numberFormat($riga->qta_rimanente, 'qta').' / '.numberFormat($riga->qta, 'qta').' '.$riga->um.'
</td>';
@ -154,7 +195,7 @@ $netto_a_pagare = $preventivo->netto;
// Totale imponibile scontato
echo '
<tr>
<td colspan="5" class="text-right">
<td colspan="6" class="text-right">
<b>'.tr('Imponibile', [], ['upper' => true]).':</b>
</td>
<td class="text-right">
@ -167,7 +208,7 @@ echo '
if (!empty($sconto)) {
echo '
<tr>
<td colspan="5" class="text-right">
<td colspan="6" class="text-right">
<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>
</td>
<td class="text-right">
@ -179,7 +220,7 @@ if (!empty($sconto)) {
// Totale imponibile scontato
echo '
<tr>
<td colspan="5" class="text-right">
<td colspan="6" class="text-right">
<b>'.tr('Totale imponibile', [], ['upper' => true]).':</b>
</td>
<td class="text-right">
@ -192,7 +233,7 @@ if (!empty($sconto)) {
// Totale iva
echo '
<tr>
<td colspan="5" class="text-right">
<td colspan="6" class="text-right">
<b>'.tr('Iva', [], ['upper' => true]).':</b>
</td>
<td class="text-right">
@ -204,7 +245,7 @@ echo '
// Totale
echo '
<tr>
<td colspan="5" class="text-right">
<td colspan="6" class="text-right">
<b>'.tr('Totale', [], ['upper' => true]).':</b>
</td>
<td class="text-right">
@ -217,7 +258,7 @@ echo '
if (!empty($sconto_finale)) {
echo '
<tr>
<td colspan="5" class="text-right">
<td colspan="6" class="text-right">
<b>'.tr('Sconto finale', [], ['upper' => true]).':</b>
</td>
<td class="text-right">
@ -231,7 +272,7 @@ if (!empty($sconto_finale)) {
if ($totale != $netto_a_pagare) {
echo '
<tr>
<td colspan="5" class="text-right">
<td colspan="6" class="text-right">
<b>'.tr('Netto a pagare', [], ['upper' => true]).':</b>
</td>
<td class="text-right">
@ -248,7 +289,7 @@ $margine_icon = ($margine <= 0 and $preventivo->totale > 0) ? 'warning' : 'check
echo '
<tr>
<td colspan="5" class="text-right">
<td colspan="6" class="text-right">
'.tr('Costi').':
</td>
<td class="text-right">
@ -258,7 +299,7 @@ echo '
</tr>
<tr>
<td colspan="5" class="text-right">
<td colspan="6" class="text-right">
'.tr('Margine (_PRC_%)', [
'_PRC_' => numberFormat($preventivo->margine_percentuale),
]).':

View File

@ -53,3 +53,11 @@ INSERT INTO `zz_group_view` (`id_gruppo`, `id_vista`) (SELECT `zz_groups`.`id`,
-- Aggiunta vista "N. utenti" per il modulo "Utenti e permessi"
INSERT INTO `zz_views` (`id`, `id_module`, `name`, `query`, `order`, `search`, `slow`, `format`, `search_inside`, `order_by`, `visible`, `summable`, `default`) VALUES
(NULL, (SELECT `zz_modules`.`id` FROM `zz_modules` WHERE `zz_modules`.`name`='Utenti e permessi'), 'N. utenti', '(SELECT COUNT(`id`) FROM `zz_users` WHERE `idgruppo` = `zz_groups`.`id`)', 3, 1, 0, 0, '', '', 1, 0, 0);
-- Aggiunto campo confermato, data e ora evasione in righe preventivi
ALTER TABLE `co_righe_preventivi` ADD `data_evasione` DATE NULL DEFAULT NULL AFTER `id`, ADD `ora_evasione` TIME NULL DEFAULT NULL AFTER `data_evasione`;
ALTER TABLE `co_righe_preventivi` ADD `confermato` BOOLEAN NOT NULL AFTER `id_dettaglio_fornitore`;
UPDATE `co_righe_preventivi` SET `confermato` = 1;
-- Aggiunta impostazione per impegnare o meno automaticamente le quantità nei preventivi
INSERT INTO `zz_settings` (`id`, `nome`, `valore`, `tipo`, `editable`, `sezione`, `order`, `help`) VALUES (NULL, 'Conferma automaticamente le quantità nei preventivi', '1', 'boolean', '1', 'Preventivi', NULL, NULL);