diff --git a/assets/src/js/functions/input.js b/assets/src/js/functions/input.js index c840a2047..f35c14e1b 100644 --- a/assets/src/js/functions/input.js +++ b/assets/src/js/functions/input.js @@ -20,6 +20,10 @@ function start_inputmask(element) { regex: "[A-Za-z0-9#_|\/\\-.]*", }).addClass('bound'); + $(element + '.math-mask').not('.bound').inputmask('Regex', { + regex: "[0-9,.+\-]*", + }).addClass('bound'); + if (globals.is_mobile) { $(element + '.inputmask-decimal, ' + element + '.date-mask, ' + element + '.timestamp-mask').each(function () { $(this).attr('type', 'tel'); diff --git a/config/namespaces.php b/config/namespaces.php index 82d49225c..47f2c87d7 100644 --- a/config/namespaces.php +++ b/config/namespaces.php @@ -30,6 +30,7 @@ return [ 'modules/stati_contratto' => 'Modules\StatiContratto', 'modules/tipi_intervento' => 'Modules\TipiIntervento', 'modules/categorie_documenti' => 'Modules\CategorieDocumentali', + 'modules/listini' => 'Modules\Listini', 'plugins/exportFE' => 'Plugins\ExportFE', 'plugins/importFE' => 'Plugins\ImportFE', 'plugins/receiptFE' => 'Plugins\ReceiptFE', diff --git a/modules/listini/actions.php b/modules/listini/actions.php index 5593ddba4..76a7898f1 100644 --- a/modules/listini/actions.php +++ b/modules/listini/actions.php @@ -2,40 +2,35 @@ include_once __DIR__.'/../../core.php'; +use Modules\Listini\Listino; + switch (post('op')) { case 'update': - $nome = post('nome'); - $prc_guadagno = post('prc_guadagno'); - $note = post('note'); + $listino->nome = post('nome'); + $listino->note = post('note'); - if (abs($prc_guadagno) > 100) { - $prc_guadagno = ($prc_guadagno > 0) ? 100 : -100; - } + $listino->percentuale = post('prc_guadagno'); + $listino->percentuale_combinato = post('prc_combinato'); - $query = 'UPDATE mg_listini SET nome='.prepare($nome).', prc_guadagno='.prepare($prc_guadagno).', note='.prepare($note).' WHERE id='.prepare($id_record); - $dbo->query($query); + $listino->save(); flash()->info(tr('Informazioni salvate correttamente!')); break; case 'add': - $nome = post('nome'); - $prc_guadagno = post('prc_guadagno'); + $listino = Listino::build(post('nome'), post('prc_guadagno')); - if (abs($prc_guadagno) > 100) { - $prc_guadagno = ($prc_guadagno > 0) ? 100 : -100; - } + $listino->percentuale_combinato = post('prc_combinato'); - if (isset($nome)) { - $dbo->query('INSERT INTO mg_listini( nome, prc_guadagno ) VALUES ('.prepare($nome).', '.prepare($prc_guadagno).')'); - $id_record = $dbo->lastInsertedID(); + $listino->save(); + $id_record = $listino->id; - flash()->info(tr('Nuovo listino aggiunto!')); - } + flash()->info(tr('Nuovo listino aggiunto!')); break; case 'delete': - $dbo->query('DELETE FROM mg_listini WHERE id='.prepare($id_record)); + $listino->delete(); + flash()->info(tr('Listino eliminato!')); break; } diff --git a/modules/listini/add.php b/modules/listini/add.php index d10f21812..e25d9137a 100644 --- a/modules/listini/add.php +++ b/modules/listini/add.php @@ -7,11 +7,15 @@ include_once __DIR__.'/../../core.php';
-
+
{[ "type": "text", "label": "", "name": "nome", "required": 1 ]}
-
+
+ {[ "type": "text", "label": "", "name": "prc_combinato", "value": "$prc_combinato$", "icon-after": "%", "class": "math-mask text-right", "help": "" ]} +
+ +
{[ "type": "number", "label": "", "name": "prc_guadagno", "required": 1, "value": "0", "icon-after": "%", "help": "" ]}
@@ -23,3 +27,26 @@ include_once __DIR__.'/../../core.php';
+ + diff --git a/modules/listini/edit.php b/modules/listini/edit.php index 5da9ef7f5..3af9649de 100644 --- a/modules/listini/edit.php +++ b/modules/listini/edit.php @@ -14,12 +14,16 @@ include_once __DIR__.'/../../core.php';
-
+
{[ "type": "text", "label": "", "name": "nome", "required": 1, "value": "$nome$" ]}
-
- {[ "type": "number", "label": "", "name": "prc_guadagno", "required": 1, "value": "$prc_guadagno$", "icon-after": "%", "help": "" ]} +
+ {[ "type": "text", "label": "", "name": "prc_combinato", "value": "$prc_combinato$", "icon-after": "%", "class": "math-mask text-right", "help": "", "disabled": "" ]} +
+ +
+ {[ "type": "number", "label": "", "name": "prc_guadagno", "required": 1, "value": "$prc_guadagno$", "icon-after": "%", "help": "", "disabled": "" ]}
@@ -37,3 +41,21 @@ include_once __DIR__.'/../../core.php'; + + diff --git a/modules/listini/init.php b/modules/listini/init.php index 77d54c418..808c9bbf9 100644 --- a/modules/listini/init.php +++ b/modules/listini/init.php @@ -2,6 +2,10 @@ include_once __DIR__.'/../../core.php'; +use Modules\Listini\Listino; + if (isset($id_record)) { $record = $dbo->fetchOne('SELECT * FROM mg_listini WHERE id='.prepare($id_record)); + + $listino = Listino::find($id_record); } diff --git a/modules/listini/src/Listino.php b/modules/listini/src/Listino.php new file mode 100644 index 000000000..0d34bfb73 --- /dev/null +++ b/modules/listini/src/Listino.php @@ -0,0 +1,70 @@ +nome = $nome; + $model->percentuale = $percentuale; + $model->save(); + + return $model; + } + + public function setPercentualeCombinatoAttribute($value) + { + $this->prc_combinato = $value; + } + + public function getPercentualeCombinatoAttribute() + { + return $this->prc_combinato; + } + + public function setPercentualeAttribute($value) + { + $value = floatval($value); + if (abs($value) > 100) { + $value = ($value > 0) ? 100 : -100; + } + + $this->prc_guadagno = $value; + } + + public function getPercentualeAttribute() + { + return $this->prc_guadagno; + } + + public function save(array $options = []) + { + $combinato = $this->prc_combinato; + if (!empty($combinato)) { + $sign = substr($combinato, 0, 1); + $original = $sign != '+' && $sign != '-' ? '+'.$combinato : $combinato; + $pieces = preg_split('/[+,-]+/', $original); + unset($pieces[0]); + + $result = 1; + $text = $original; + foreach ($pieces as $piece) { + $sign = substr($text, 0, 1); + $text = substr($text, 1 + strlen($piece)); + + $result *= 1 - floatval($sign.$piece) / 100; + } + + $this->percentuale = $result; + } + + return parent::save($options); + } +} diff --git a/modules/utenti/src/API/v1/Login.php b/modules/utenti/src/API/v1/Login.php index cac4929c6..352528310 100644 --- a/modules/utenti/src/API/v1/Login.php +++ b/modules/utenti/src/API/v1/Login.php @@ -4,9 +4,9 @@ namespace Modules\Utenti\API\v1; use API\Interfaces\CreateInterface; use API\Resource; +use API\Response; use Auth; use Update; -use API\Response; class Login extends Resource implements CreateInterface { diff --git a/update/2_4_11.sql b/update/2_4_11.sql index f2d3d99ae..30c30f7e2 100644 --- a/update/2_4_11.sql +++ b/update/2_4_11.sql @@ -850,3 +850,6 @@ ALTER TABLE `or_righe_ordini` CHANGE `qta_evasa` `qta_evasa` decimal(12, 6) NOT UPDATE `zz_settings` SET `tipo` = 'list[1,2,3,4,5]' WHERE `nome` = 'Cifre decimali per importi'; UPDATE `zz_settings` SET `tipo` = 'list[1,2,3,4,5]' WHERE `nome` = 'Cifre decimali per quantità'; + +-- Aggiunta percentuale combinata in listini +ALTER TABLE `mg_listini` ADD `prc_combinato` VARCHAR(255);