diff --git a/CHANGELOG.md b/CHANGELOG.md index 095373135..e1bda0873 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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 - diff --git a/include/common/importa.php b/include/common/importa.php index 7354ace9a..a1e83e3aa 100755 --- a/include/common/importa.php +++ b/include/common/importa.php @@ -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 ' - '; + '; $descrizione = ($riga->isArticolo() ? $riga->articolo->codice.' - ' : '').$riga['descrizione']; diff --git a/include/common/riga.php b/include/common/riga.php index 50217bcfe..3bfce57b9 100755 --- a/include/common/riga.php +++ b/include/common/riga.php @@ -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']; diff --git a/modules/ordini/actions.php b/modules/ordini/actions.php index 2f8a655dd..6d1016e74 100755 --- a/modules/ordini/actions.php +++ b/modules/ordini/actions.php @@ -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()) { diff --git a/modules/preventivi/actions.php b/modules/preventivi/actions.php index a02174d14..c8c761c63 100755 --- a/modules/preventivi/actions.php +++ b/modules/preventivi/actions.php @@ -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 { diff --git a/modules/preventivi/row-list.php b/modules/preventivi/row-list.php index bf4f6f09d..6a847bd71 100755 --- a/modules/preventivi/row-list.php +++ b/modules/preventivi/row-list.php @@ -26,6 +26,7 @@ echo ' '.tr('#').' '.tr('Descrizione').' + '.tr('Prev. evasione').' '.tr('Q.tà').' '.tr('Prezzo unitario').' '.tr('Iva unitaria').' @@ -36,6 +37,8 @@ echo ' '; // 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.' '; + // 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 = '
'.Translator::timeToLocale($riga->ora_evasione).''; + } else { + $ora_evasione = ''; + } + + $info_evasione = ' '.Translator::dateToLocale($riga->data_evasione).$ora_evasione.''; + } + + echo ' + + '.$info_evasione.' + '; + if ($riga->isDescrizione()) { echo ' @@ -74,6 +114,7 @@ foreach ($righe as $riga) { // Quantità e unità di misura echo ' + '.numberFormat($riga->qta_rimanente, 'qta').' / '.numberFormat($riga->qta, 'qta').' '.$riga->um.' '; @@ -154,7 +195,7 @@ $netto_a_pagare = $preventivo->netto; // Totale imponibile scontato echo ' - + '.tr('Imponibile', [], ['upper' => true]).': @@ -167,7 +208,7 @@ echo ' if (!empty($sconto)) { echo ' - + '.tr('Sconto/maggiorazione', [], ['upper' => true]).': @@ -179,7 +220,7 @@ if (!empty($sconto)) { // Totale imponibile scontato echo ' - + '.tr('Totale imponibile', [], ['upper' => true]).': @@ -192,7 +233,7 @@ if (!empty($sconto)) { // Totale iva echo ' - + '.tr('Iva', [], ['upper' => true]).': @@ -204,7 +245,7 @@ echo ' // Totale echo ' - + '.tr('Totale', [], ['upper' => true]).': @@ -217,7 +258,7 @@ echo ' if (!empty($sconto_finale)) { echo ' - + '.tr('Sconto finale', [], ['upper' => true]).': @@ -231,7 +272,7 @@ if (!empty($sconto_finale)) { if ($totale != $netto_a_pagare) { echo ' - + '.tr('Netto a pagare', [], ['upper' => true]).': @@ -248,7 +289,7 @@ $margine_icon = ($margine <= 0 and $preventivo->totale > 0) ? 'warning' : 'check echo ' - + '.tr('Costi').': @@ -258,7 +299,7 @@ echo ' - + '.tr('Margine (_PRC_%)', [ '_PRC_' => numberFormat($preventivo->margine_percentuale), ]).': diff --git a/update/2_4_24.sql b/update/2_4_24.sql index 46ff03e47..2b82a7ee9 100644 --- a/update/2_4_24.sql +++ b/update/2_4_24.sql @@ -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);