From eee9e089132e30bc3872b09746e3dd00020b79e4 Mon Sep 17 00:00:00 2001 From: Dasc3er Date: Fri, 4 Dec 2020 15:33:06 +0100 Subject: [PATCH 1/3] Correzioni per gli attributi nelle opzioni select --- assets/src/js/functions/select.js | 22 ++++++++++++++++++++++ modules/articoli/edit.php | 6 +++--- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/assets/src/js/functions/select.js b/assets/src/js/functions/select.js index 2da53863d..67e542085 100755 --- a/assets/src/js/functions/select.js +++ b/assets/src/js/functions/select.js @@ -289,5 +289,27 @@ function initDynamicSelectInput(input) { }, width: '100%' }); + + // Rimozione delle option presenti nell'HTML per permettere l'aggiornamento dei dati via AJAX + // Rimozione per select multipli + if ($input.prop("multiple")) { + $input.on('select2:unselecting', function (e) { + let data = e.params ? e.params.data : null; + if (data) { + let option = $input.find('option[value="' + data.id + '"]'); + option.remove(); + } + }); + } + // Rimozione per select singoli + else { + $input.on('select2:selecting', function (e) { + let data = $input.selectData(); + if (data) { + let option = $input.find('option[value="' + data.id + '"]'); + option.remove(); + } + }); + } } diff --git a/modules/articoli/edit.php b/modules/articoli/edit.php index b4cbfdf31..176c01b05 100755 --- a/modules/articoli/edit.php +++ b/modules/articoli/edit.php @@ -175,7 +175,7 @@ include_once __DIR__.'/../../core.php';
- {[ "type": "select", "label": "", "name": "id_fornitore", "ajax-source": "fornitori-articolo", "select-options": $id_record]); ?>, "value":"$id_fornitore$", "help": "." ]} + {[ "type": "select", "label": "", "name": "id_fornitore", "ajax-source": "fornitori-articolo", "select-options": $id_record]); ?>, "value":"$id_fornitore$", "help": "." ]}
@@ -460,7 +460,7 @@ if (!empty($elementi)) { \ No newline at end of file + From 7f333d13581c6ad76e7f1b54e787801c71f0a334 Mon Sep 17 00:00:00 2001 From: Dasc3er Date: Fri, 4 Dec 2020 15:40:47 +0100 Subject: [PATCH 2/3] Stile del codice --- .../anagrafiche/src/API/v1/Anagrafiche.php | 1 - modules/articoli/ajax/select.php | 4 +-- modules/articoli/src/Import/CSV.php | 2 +- modules/checklists/modutil.php | 9 +++--- modules/fatture/bulk.php | 2 +- modules/fatture/edit.php | 14 ++++----- plugins/dettagli_articolo/actions.php | 6 ++-- .../dettagli_articolo/dettaglio_prezzi.php | 30 +++++++++---------- plugins/dettagli_articolo/edit.php | 2 +- 9 files changed, 34 insertions(+), 36 deletions(-) diff --git a/modules/anagrafiche/src/API/v1/Anagrafiche.php b/modules/anagrafiche/src/API/v1/Anagrafiche.php index a24c8d631..894aefbfd 100755 --- a/modules/anagrafiche/src/API/v1/Anagrafiche.php +++ b/modules/anagrafiche/src/API/v1/Anagrafiche.php @@ -58,7 +58,6 @@ class Anagrafiche extends Resource implements RetrieveInterface, CreateInterface 'an_anagrafiche.deleted_at' )->orderBy('an_anagrafiche.ragione_sociale'); - $filters = []; if ($request['resource'] != 'anagrafiche') { $type = 'Cliente'; diff --git a/modules/articoli/ajax/select.php b/modules/articoli/ajax/select.php index 8c7fd0d8a..125ee6df2 100755 --- a/modules/articoli/ajax/select.php +++ b/modules/articoli/ajax/select.php @@ -256,14 +256,14 @@ switch ($resource) { } break; - + case 'fornitori-articolo': $query = 'SELECT an_anagrafiche.idanagrafica AS id, an_anagrafiche.ragione_sociale AS descrizione, (mg_prezzi_articoli.prezzo_unitario-(mg_prezzi_articoli.prezzo_unitario*mg_prezzi_articoli.sconto_percentuale)/100) AS prezzo_unitario FROM mg_prezzi_articoli LEFT JOIN an_anagrafiche ON mg_prezzi_articoli.id_anagrafica=an_anagrafiche.idanagrafica |where| ORDER BY an_anagrafiche.ragione_sociale'; foreach ($elements as $element) { $filter[] = 'an_anagrafiche.idanagrafica='.prepare($element); } - + $where[] = 'dir="uscita"'; $where[] = 'minimo IS NULL'; $where[] = 'massimo IS NULL'; diff --git a/modules/articoli/src/Import/CSV.php b/modules/articoli/src/Import/CSV.php index 8871c4875..79486e11d 100644 --- a/modules/articoli/src/Import/CSV.php +++ b/modules/articoli/src/Import/CSV.php @@ -21,11 +21,11 @@ namespace Modules\Articoli\Import; use Carbon\Carbon; use Importer\CSVImporter; +use Modules\Anagrafiche\Anagrafica; use Modules\Anagrafiche\Sede; use Modules\Articoli\Articolo; use Modules\Articoli\Categoria; use Modules\Iva\Aliquota; -use Modules\Anagrafiche\Anagrafica; /** * Struttura per la gestione delle operazioni di importazione (da CSV) degli Articoli. diff --git a/modules/checklists/modutil.php b/modules/checklists/modutil.php index cf6b9d4ec..e671b6460 100755 --- a/modules/checklists/modutil.php +++ b/modules/checklists/modutil.php @@ -28,14 +28,13 @@ function renderChecklist($check, $level = 0) '.$check->content.''; - if (empty($check->user) || $check->user->id == $user->id) { $result .= '
'; } - + if ($level == 0) { $result .= ' @@ -46,10 +45,10 @@ function renderChecklist($check, $level = 0) $result .= ' '.(!empty($check->checked_at) ? tr('Verificato da _NAME_ il _DATE_', [ - '_NAME_' => $check->checkUser->username, - '_DATE_' => timestampFormat($check->checked_at), + '_NAME_' => $check->checkUser->username, + '_DATE_' => timestampFormat($check->checked_at), ]) : '').''; - + $result .= '
    '; diff --git a/modules/fatture/bulk.php b/modules/fatture/bulk.php index fbdf919bb..bbfe9e531 100755 --- a/modules/fatture/bulk.php +++ b/modules/fatture/bulk.php @@ -432,7 +432,7 @@ switch (post('op')) { case 'export-csv': $file = temp_file().'.csv'; - + $exporter = new CSV($file); // Esportazione dei record selezionati diff --git a/modules/fatture/edit.php b/modules/fatture/edit.php index 9daccd223..1431b5445 100755 --- a/modules/fatture/edit.php +++ b/modules/fatture/edit.php @@ -18,8 +18,8 @@ */ use Modules\Anagrafiche\Anagrafica; -use Modules\Iva\Aliquota; use Modules\Fatture\Gestori\Bollo; +use Modules\Iva\Aliquota; include_once __DIR__.'/../../core.php'; @@ -358,7 +358,7 @@ elseif ($record['stato'] == 'Bozza') { } echo ' '; - if($dir == 'entrata'){ + if ($dir == 'entrata') { echo '
    @@ -375,8 +375,8 @@ elseif ($record['stato'] == 'Bozza') { {[ "type": "number", "label": "'.tr('Importo marca da bollo').'", "name": "bollo", "value": "$bollo$"]}
    '; - $bollo = new Bollo($fattura); - } + $bollo = new Bollo($fattura); + } ?>
    @@ -888,12 +888,12 @@ function cambiaStato() { } } }'; -if($dir=='entrata'){ +if ($dir == 'entrata') { echo ' function bolloAutomatico() { let bollo_automatico = input("bollo_automatico"); let addebita_bollo = input("addebita_bollo"); - let has_bollo ='.($bollo->getBollo()>0 ? "true" : "false").'; + let has_bollo ='.($bollo->getBollo() > 0 ? 'true' : 'false').'; if(bollo_automatico.get()==0){ $(".bollo").show(); input("bollo").enable(); @@ -902,7 +902,7 @@ if($dir=='entrata'){ } else { $(".bollo").show(); input("bollo").disable(); - $("#bollo").val('.setting("Importo marca da bollo").'); + $("#bollo").val('.setting('Importo marca da bollo').'); } } $(document).ready(function() { diff --git a/plugins/dettagli_articolo/actions.php b/plugins/dettagli_articolo/actions.php index 55a997820..0981c58cd 100755 --- a/plugins/dettagli_articolo/actions.php +++ b/plugins/dettagli_articolo/actions.php @@ -77,9 +77,9 @@ switch (filter('op')) { $dettaglio_predefinito->sconto_percentuale = $sconto; $dettaglio_predefinito->setPrezzoUnitario($prezzo_unitario); $dettaglio_predefinito->save(); - if($articolo->id_fornitore==$anagrafica->idanagrafica && $direzione=='uscita'){ - $prezzo_unitario = $prezzo_unitario-($prezzo_unitario*$sconto/100); - $articolo->prezzo_acquisto=$prezzo_unitario; + if ($articolo->id_fornitore == $anagrafica->idanagrafica && $direzione == 'uscita') { + $prezzo_unitario = $prezzo_unitario - ($prezzo_unitario * $sconto / 100); + $articolo->prezzo_acquisto = $prezzo_unitario; $articolo->save(); } } diff --git a/plugins/dettagli_articolo/dettaglio_prezzi.php b/plugins/dettagli_articolo/dettaglio_prezzi.php index 1c1aff5f7..96bc158f5 100644 --- a/plugins/dettagli_articolo/dettaglio_prezzi.php +++ b/plugins/dettagli_articolo/dettaglio_prezzi.php @@ -34,9 +34,9 @@ $direzione = get('direzione') == 'uscita' ? 'uscita' : 'entrata'; $articolo = Articolo::find($id_articolo); $anagrafica = Anagrafica::find($id_anagrafica); -if($direzione=='entrata'){ +if ($direzione == 'entrata') { $prezzo_predefinito = $prezzi_ivati ? $articolo->prezzo_vendita_ivato : $articolo->prezzo_vendita; -} else{ +} else { $prezzo_predefinito = $articolo->prezzo_acquisto; } // Individuazione dei prezzi registrati @@ -45,23 +45,23 @@ $dettagli = DettaglioPrezzo::dettagli($id_articolo, $id_anagrafica, $direzione) $dettaglio_predefinito = DettaglioPrezzo::dettaglioPredefinito($id_articolo, $id_anagrafica, $direzione) ->first(); -if($articolo->id_fornitore==$anagrafica->idanagrafica){ - $color='success'; - $icon='check'; - $text= tr('Sì'); +if ($articolo->id_fornitore == $anagrafica->idanagrafica) { + $color = 'success'; + $icon = 'check'; + $text = tr('Sì'); } else { - $color='danger'; - $icon='times'; - $text= tr('No'); + $color = 'danger'; + $icon = 'times'; + $text = tr('No'); } echo ' - + '; - if($direzione=='uscita'){ + if ($direzione == 'uscita') { echo ''; - } else{ + } else { echo ''; } echo ' @@ -69,9 +69,9 @@ echo ' '; - if($direzione=='uscita'){ + if ($direzione == 'uscita') { echo ''; - } else{ + } else { echo ''; } echo ' @@ -89,7 +89,7 @@ echo '
    - {[ "type": "checkbox", "label": "'.tr("Imposta prezzo per questa anagrafica").'", "name": "modifica_prezzi", "value": "'.intval(!empty($dettaglio_predefinito)).'" ]} + {[ "type": "checkbox", "label": "'.tr('Imposta prezzo per questa anagrafica').'", "name": "modifica_prezzi", "value": "'.intval(!empty($dettaglio_predefinito)).'" ]}
    diff --git a/plugins/dettagli_articolo/edit.php b/plugins/dettagli_articolo/edit.php index abf0393a5..f24572b6f 100755 --- a/plugins/dettagli_articolo/edit.php +++ b/plugins/dettagli_articolo/edit.php @@ -90,7 +90,7 @@ if (!$clienti->isEmpty()) { '; - + foreach ($prezzi as $key => $dettaglio) { echo ' From 33fd4ba3652c28513781d06b3c1594d1759289a8 Mon Sep 17 00:00:00 2001 From: Dasc3er Date: Fri, 4 Dec 2020 16:00:21 +0100 Subject: [PATCH 3/3] =?UTF-8?q?Possibilit=C3=A0=20di=20selezionare=20artic?= =?UTF-8?q?oli=20con=20quantit=C3=A0=20<=3D=200=20in=20Vendite?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/articoli/ajax/select.php | 5 ++++- update/2_4_20.sql | 7 +++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/modules/articoli/ajax/select.php b/modules/articoli/ajax/select.php index 125ee6df2..f0eea9041 100755 --- a/modules/articoli/ajax/select.php +++ b/modules/articoli/ajax/select.php @@ -148,6 +148,9 @@ switch ($resource) { $data = AJAX::selectResults($query, $where, $filter, $search_fields, $limit, $custom); $rs = $data['results']; + // Utilizzo dell'impostazione per disabilitare articoli con quantità <= 0 + $permetti_movimenti_sotto_zero = setting('Permetti selezione articoli con quantità minore o uguale a zero in Documenti di Vendita') ? true : $superselect['permetti_movimento_a_zero']; + // IVA da impostazioni foreach ($rs as $k => $r) { // Lettura movimenti delle mie sedi @@ -164,7 +167,7 @@ switch ($resource) { $rs[$k] = array_merge($r, [ 'text' => $r['codice'].' - '.$r['descrizione'].' '.(!$r['servizio'] ? '('.Translator::numberToLocale($qta).(!empty($r['um']) ? ' '.$r['um'] : '').')' : ''), - 'disabled' => $r['qta'] <= 0 && !$superselect['permetti_movimento_a_zero'] && !$r['servizio'], + 'disabled' => $r['qta'] <= 0 && !$permetti_movimenti_sotto_zero && !$r['servizio'], ]); } diff --git a/update/2_4_20.sql b/update/2_4_20.sql index ca71a9de0..704c50e75 100644 --- a/update/2_4_20.sql +++ b/update/2_4_20.sql @@ -115,7 +115,7 @@ UPDATE `zz_views` SET `default` = 1 WHERE `zz_views`.`id_module` = (SELECT `zz_m UPDATE `zz_modules` SET `directory` = 'piano_sconto' WHERE `zz_modules`.`id` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Piani di sconto/rincaro'); -- Aggiunto flag rinnovo automatico in contratti -ALTER TABLE `co_contratti` ADD `rinnovo_automatico` TINYINT(1) NOT NULL DEFAULT '0' AFTER `rinnovabile`; +ALTER TABLE `co_contratti` ADD `rinnovo_automatico` TINYINT(1) NOT NULL DEFAULT '0' AFTER `rinnovabile`; -- Aggiunto segmento per attività NON completate INSERT INTO `zz_segments` (`id`, `id_module`, `name`, `clause`, `position`, `pattern`, `note`, `predefined`, `predefined_accredito`, `predefined_addebito`, `is_fiscale`) VALUES (NULL, (SELECT `id` FROM `zz_modules` WHERE `name` = 'Interventi'), 'Non completate', 'in_interventi.idstatointervento NOT IN(SELECT in_statiintervento.idstatointervento FROM in_statiintervento WHERE is_completato=1)', 'WHR', '####', '', '0', '0', '0', '0'); @@ -125,4 +125,7 @@ DELETE FROM `zz_segments` WHERE name='Scadenzario Ri.Ba.'; INSERT INTO `zz_segments` (`id_module`, `name`, `clause`, `position`, `pattern`, `note`, `predefined`, `predefined_accredito`, `predefined_addebito`, `is_fiscale`) VALUES ((SELECT `id` FROM `zz_modules` WHERE `name` = 'Scadenzario'), 'Scadenzario Ri.Ba. Clienti', 'co_pagamenti.riba=1 AND co_tipidocumento.dir=\"entrata\"', 'WHR', '####', '', 0, 0, 0, 0), -((SELECT `id` FROM `zz_modules` WHERE `name` = 'Scadenzario'), 'Scadenzario Ri.Ba. Fornitori', 'co_pagamenti.riba=1 AND co_tipidocumento.dir=\"uscita\"', 'WHR', '####', '', 0, 0, 0, 0); \ No newline at end of file +((SELECT `id` FROM `zz_modules` WHERE `name` = 'Scadenzario'), 'Scadenzario Ri.Ba. Fornitori', 'co_pagamenti.riba=1 AND co_tipidocumento.dir=\"uscita\"', 'WHR', '####', '', 0, 0, 0, 0); + +-- Aggiunta impostazione per disabilitare articoli con quantità <= 0 +INSERT INTO `zz_settings` (`id`, `nome`, `valore`, `tipo`, `editable`, `sezione`, `order`, `help`) VALUES (NULL, 'Permetti selezione articoli con quantità minore o uguale a zero in Documenti di Vendita', '0', 'boolean', '1', 'Generali', '20', NULL);
    '.($direzione=='entrata' ? tr('Cliente') : tr('Fornitore')).''.($direzione == 'entrata' ? tr('Cliente') : tr('Fornitore')).' '.tr('Prezzo predefinito').''.tr('Fornitore predefinito').'
    '.$anagrafica->ragione_sociale.' '.moneyFormat($prezzo_predefinito).' '.$text.'