This commit is contained in:
Beppe 2021-11-10 11:04:01 +01:00
commit eb71e46b3a
12 changed files with 55 additions and 13 deletions

View File

@ -63,7 +63,7 @@ if ($options['dir'] == 'entrata') {
var costo_unitario = $("#costo_unitario").val().toEnglish(); var costo_unitario = $("#costo_unitario").val().toEnglish();
var prezzo = $("#prezzo_unitario").val().toEnglish(); var prezzo = $("#prezzo_unitario").val().toEnglish();
var sconto = $("#sconto").val().toEnglish(); var sconto = $("#sconto").val().toEnglish();
if ($("select[id^=\'tipo_sconto\']").val() === "PRC") { if ($("#modals select[id^=\'tipo_sconto\']").val() === "PRC") {
sconto = sconto / 100 * prezzo; sconto = sconto / 100 * prezzo;
} }
@ -131,7 +131,7 @@ if ($options['dir'] == 'entrata') {
$("#prezzo_unitario").keyup(aggiorna_guadagno); $("#prezzo_unitario").keyup(aggiorna_guadagno);
$("#costo_unitario").keyup(aggiorna_guadagno); $("#costo_unitario").keyup(aggiorna_guadagno);
$("#sconto").keyup(aggiorna_guadagno); $("#sconto").keyup(aggiorna_guadagno);
$("select[id^=\'tipo_sconto\']").change(aggiorna_guadagno); $("#modals select[id^=\'tipo_sconto\']").change(aggiorna_guadagno);
</script>'; </script>';
} }

View File

@ -87,7 +87,7 @@ echo '
foreach ($emails as $email) { foreach ($emails as $email) {
echo ' echo '
<div class="col-md-12"> <div class="col-md-12">
{[ "type": "email", "name": "destinatari['.$idx++.']", "value": "'.$email.'", "icon-before": "choice|email", "extra": "onkeyup=\'aggiungiDestinatario();\'", "class": "destinatari", "required": 1 ]} {[ "type": "email", "name": "destinatari['.$idx++.']", "value": "'.$email.'", "icon-before": "choice|email", "extra": "onkeyup=\'aggiungiDestinatario();\'", "class": "destinatari", "required": 0 ]}
</div>'; </div>';
} }
echo ' echo '
@ -166,9 +166,12 @@ echo '
if (id_anagrafica) { if (id_anagrafica) {
$(document).load(globals.rootdir + "/ajax_complete.php?module=Anagrafiche&op=get_email&id_anagrafica=" + id_anagrafica + (pec ? "&type=pec" : ""), function(response) { $(document).load(globals.rootdir + "/ajax_complete.php?module=Anagrafiche&op=get_email&id_anagrafica=" + id_anagrafica + (pec ? "&type=pec" : ""), function(response) {
emails = JSON.parse(response); emails = JSON.parse(response);
let num = 0;
$(".destinatari").each(function(){ $(".destinatari").each(function(){
addAutoComplete(this); addAutoComplete(this);
if (num++==0) {
$(this).prop("required", true);
}
}); });
aggiungiDestinatario(); aggiungiDestinatario();

View File

@ -209,7 +209,7 @@ if (sizeof($problemi_anagrafica) > 0) {
</div> </div>
<div class="col-md-4"> <div class="col-md-4">
{[ "type": "text", "label": "<?php echo tr('Email'); ?>", "name": "email", "class": "email-mask", "placeholder": "casella@dominio.ext", "value": "$email$", "icon-before": "<i class='fa fa-envelope'></i>", "validation": "email" ]} {[ "type": "text", "label": "<?php echo tr('Email'); ?>", "name": "email", "placeholder": "casella@dominio.ext", "value": "$email$", "icon-before": "<i class='fa fa-envelope'></i>", "validation": "email" ]}
</div> </div>
</div> </div>

View File

@ -20,6 +20,7 @@
use Modules\Anagrafiche\Anagrafica; use Modules\Anagrafiche\Anagrafica;
use Modules\Articoli\Articolo; use Modules\Articoli\Articolo;
use Modules\Articoli\Export\CSV; use Modules\Articoli\Export\CSV;
use Modules\Iva\Aliquota;
use Modules\Preventivi\Components\Articolo as ArticoloPreventivo; use Modules\Preventivi\Components\Articolo as ArticoloPreventivo;
use Modules\Preventivi\Preventivo; use Modules\Preventivi\Preventivo;
use Modules\TipiIntervento\Tipo as TipoSessione; use Modules\TipiIntervento\Tipo as TipoSessione;
@ -51,12 +52,34 @@ switch (post('op')) {
case 'change-vendita': case 'change-vendita':
$percentuale = post('percentuale'); $percentuale = post('percentuale');
$prezzo_partenza = post('prezzo_partenza'); $prezzo_partenza = post('prezzo_partenza');
$tipologia = post('tipologia');
$arrotondamento = post('arrotondamento');
$prezzi_ivati = setting('Utilizza prezzi di vendita comprensivi di IVA');
foreach ($id_records as $id) { foreach ($id_records as $id) {
$articolo = Articolo::find($id); $articolo = Articolo::find($id);
$prezzo_partenza = post('prezzo_partenza') == 'vendita' ? $articolo->prezzo_vendita : $articolo->prezzo_acquisto; $prezzo_partenza = post('prezzo_partenza') == 'vendita' ? $articolo->prezzo_vendita : $articolo->prezzo_acquisto;
$aliquota_iva = floatval(Aliquota::find($articolo->idiva_vendita)->percentuale);
$new_prezzo_vendita = $prezzo_partenza + ($prezzo_partenza * $percentuale / 100); $new_prezzo_vendita = $prezzo_partenza + ($prezzo_partenza * $percentuale / 100);
// Arrotondamento
if (!empty($tipologia) && !empty($arrotondamento)) {
if ($tipologia == 'ivato') {
$new_prezzo_vendita = $new_prezzo_vendita + ($new_prezzo_vendita * $aliquota_iva / 100);
}
$new_prezzo_vendita = ceil($new_prezzo_vendita / $arrotondamento) * $arrotondamento;
}
if (in_array($tipologia, ['ivato', '']) && !$prezzi_ivati) {
$new_prezzo_vendita = $new_prezzo_vendita * 100 / (100 + $aliquota_iva);
}
if (in_array($tipologia, ['imponibile', '']) && $prezzi_ivati) {
$new_prezzo_vendita = $new_prezzo_vendita + ($new_prezzo_vendita * $aliquota_iva / 100);
}
$articolo->setPrezzoVendita($new_prezzo_vendita, $articolo->idiva_vendita); $articolo->setPrezzoVendita($new_prezzo_vendita, $articolo->idiva_vendita);
$articolo->save(); $articolo->save();
} }
@ -344,7 +367,9 @@ $operations['change-vendita'] = [
'title' => tr('Aggiornare il prezzo di vendita per gli articoli selezionati?'), 'title' => tr('Aggiornare il prezzo di vendita per gli articoli selezionati?'),
'msg' => 'Per indicare uno sconto inserire la percentuale con il segno meno, al contrario per un rincaro inserire la percentuale senza segno.<br><br> 'msg' => 'Per indicare uno sconto inserire la percentuale con il segno meno, al contrario per un rincaro inserire la percentuale senza segno.<br><br>
{[ "type": "select", "label": "'.tr('Partendo da:').'", "name": "prezzo_partenza", "required": 1, "values": "list=\"acquisto\":\"Prezzo di acquisto\",\"vendita\":\"Prezzo di vendita\"" ]}<br> {[ "type": "select", "label": "'.tr('Partendo da:').'", "name": "prezzo_partenza", "required": 1, "values": "list=\"acquisto\":\"Prezzo di acquisto\",\"vendita\":\"Prezzo di vendita\"" ]}<br>
{[ "type": "number", "label": "'.tr('Percentuale sconto/magg.').'", "name": "percentuale", "required": 1, "icon-after": "%" ]}', {[ "type": "number", "label": "'.tr('Percentuale sconto/magg.').'", "name": "percentuale", "required": 1, "icon-after": "%" ]}<br>
{[ "type": "select", "label": "'.tr('Arrotonda prezzo:').'", "name": "tipologia", "values": "list=\"0\":\"Non arrotondare\",\"imponibile\":\"Imponibile\",\"ivato\":\"Ivato\"", "value": 0 ]}<br>
{[ "type": "select", "label": "'.tr('Arrotondamento:').'", "name": "arrotondamento", "values": "list=\"0.1\":\"0,10 €\",\"1\":\"1,00 €\",\"10\":\"10,00 €\",\"100\":\"100,00 €\"" ]}',
'button' => tr('Procedi'), 'button' => tr('Procedi'),
'class' => 'btn btn-lg btn-warning', 'class' => 'btn btn-lg btn-warning',
'blank' => false, 'blank' => false,

View File

@ -272,7 +272,7 @@ switch (post('op')) {
$orario_inizio = date('Y-m-d', strtotime($data_ricorrenza)).' '.date('H:i:s', strtotime($sessione->orario_inizio)); $orario_inizio = date('Y-m-d', strtotime($data_ricorrenza)).' '.date('H:i:s', strtotime($sessione->orario_inizio));
} else { } else {
$diff = strtotime($sessione->orario_inizio) - strtotime($inizio_old); $diff = strtotime($sessione->orario_inizio) - strtotime($inizio_old);
$orario_inizio = date('Y-m-d H:i:s', (strtotime($sessione->orario_inizio) + $diff)); $orario_inizio = date('Y-m-d H:i:s', (strtotime($new_sessione->orario_inizio) + $diff));
} }
$diff_fine = strtotime($sessione->orario_fine) - strtotime($sessione->orario_inizio); $diff_fine = strtotime($sessione->orario_fine) - strtotime($sessione->orario_inizio);
@ -719,7 +719,7 @@ switch (post('op')) {
$orario_inizio = date('Y-m-d', strtotime($data_richiesta)).' '.date('H:i:s', strtotime($sessione->orario_inizio)); $orario_inizio = date('Y-m-d', strtotime($data_richiesta)).' '.date('H:i:s', strtotime($sessione->orario_inizio));
} else { } else {
$diff = strtotime($sessione->orario_inizio) - strtotime($inizio_old); $diff = strtotime($sessione->orario_inizio) - strtotime($inizio_old);
$orario_inizio = date('Y-m-d H:i:s', (strtotime($sessione->orario_inizio) + $diff)); $orario_inizio = date('Y-m-d H:i:s', (strtotime($new_sessione->orario_inizio) + $diff));
} }
$diff_fine = strtotime($sessione->orario_fine) - strtotime($sessione->orario_inizio); $diff_fine = strtotime($sessione->orario_fine) - strtotime($sessione->orario_inizio);

View File

@ -38,7 +38,7 @@ if (!empty($is_number_request)) {
echo '<small> echo '<small>
'.( '.(
$servizio_abilitato ? $servizio_abilitato ?
tr('Clicca qui per avviare la sincronizzazione con il servizio esterno la gestione dei dsiscritti') : tr('Clicca qui per avviare la sincronizzazione con il servizio esterno la gestione dei disiscritti') :
tr('Servizio non abilitato') tr('Servizio non abilitato')
).' ).'
</small>'; </small>';

View File

@ -74,7 +74,6 @@ echo '
<script> <script>
function avvia_stampa (){ function avvia_stampa (){
window.open("'.$link.'&dir='.$dir.'&id_sezionale="+$("#id_sezionale").val()+"&date_start="+$("#date_start").val()+"&date_end="+$("#date_end").val()+""); window.open("'.$link.'&dir='.$dir.'&id_sezionale="+$("#id_sezionale").val()+"&date_start="+$("#date_start").val()+"&date_end="+$("#date_end").val()+"");
return false;
} }
$("#format").change(function() { $("#format").change(function() {
session_set("stampe_contabili,format", $(this).val(), 0, 0); session_set("stampe_contabili,format", $(this).val(), 0, 0);

View File

@ -692,7 +692,7 @@ class FatturaElettronica
if ($is_privato_estero) { if ($is_privato_estero) {
$result['IdFiscaleIVA']['IdPaese'] = $anagrafica->nazione->iso2; $result['IdFiscaleIVA']['IdPaese'] = $anagrafica->nazione->iso2;
$result['IdFiscaleIVA']['IdCodice'] = '999999999'; $result['IdFiscaleIVA']['IdCodice'] = '999999999';
unset($result['Anagrafica']['CodiceFiscale']); unset($result['CodiceFiscale']);
} }
if (!empty($anagrafica['nome']) or !empty($anagrafica['cognome'])) { if (!empty($anagrafica['nome']) or !empty($anagrafica['cognome'])) {

View File

@ -17,6 +17,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
use Carbon\Carbon;
use Plugins\PianificazioneInterventi\Promemoria; use Plugins\PianificazioneInterventi\Promemoria;
include_once __DIR__.'/../../../core.php'; include_once __DIR__.'/../../../core.php';

View File

@ -232,8 +232,11 @@ abstract class Component extends Model
// Correzione della descrizione // Correzione della descrizione
$attributes['descrizione'] = str_replace($riferimento_precedente, '', $attributes['descrizione']); $attributes['descrizione'] = str_replace($riferimento_precedente, '', $attributes['descrizione']);
if (setting('Aggiungi riferimento tra documenti')) {
$attributes['descrizione'] .= $nuovo_riferimento; $attributes['descrizione'] .= $nuovo_riferimento;
} }
}
// Impostazione del genitore // Impostazione del genitore
$model->setDocument($document); $model->setDocument($document);

View File

@ -143,7 +143,7 @@ class WidgetManager implements ManagerInterface
protected function render($widget, $title, $number = null) protected function render($widget, $title, $number = null)
{ {
$result = ' $result = '
<button type="button" class="close" onclick="if(confirm(\'Disabilitare questo widget?\')) { $.post( \''.base_path().'/actions.php?id_module='.self::getModule()->id.'\', { op: \'disable_widget\', id: \''.$widget['id'].'\' }, function(response){ location.reload(); }); };" > <button type="button" class="close" onclick="if(confirm(\'Disabilitare questo widget?\')) { $.post( \''.base_path().'/actions.php?id_module='.self::getModule()->id.'\', { op: \'disabilita-widget\', id: \''.$widget['id'].'\' }, function(response){ location.reload(); }); };" >
<span aria-hidden="true">&times;</span><span class="sr-only">'.tr('Chiudi').'</span> <span aria-hidden="true">&times;</span><span class="sr-only">'.tr('Chiudi').'</span>
</button>'; </button>';

View File

@ -1,6 +1,7 @@
-- Aggiunto help per impostazione -- Aggiunto help per impostazione
UPDATE `zz_settings` SET `help` = 'Documenti di Vendita quali Fatture, DDT e Attività' WHERE `zz_settings`.`nome` = 'Permetti selezione articoli con quantità minore o uguale a zero in Documenti di Vendita'; UPDATE `zz_settings` SET `help` = 'Documenti di Vendita quali Fatture, DDT e Attività' WHERE `zz_settings`.`nome` = 'Permetti selezione articoli con quantità minore o uguale a zero in Documenti di Vendita';
-- Aggiunto flag calcola km
ALTER TABLE `in_tipiintervento` ADD `calcola_km` TINYINT NOT NULL AFTER `costo_diritto_chiamata_tecnico`; ALTER TABLE `in_tipiintervento` ADD `calcola_km` TINYINT NOT NULL AFTER `costo_diritto_chiamata_tecnico`;
UPDATE `in_tipiintervento` SET `calcola_km`=1; UPDATE `in_tipiintervento` SET `calcola_km`=1;
@ -13,3 +14,13 @@ INSERT INTO `zz_views` (`id_module`, `name`, `query`, `order`, `search`, `slow`,
-- Rimozione delle aliquote iva eliminate dalla lista -- Rimozione delle aliquote iva eliminate dalla lista
UPDATE `zz_modules` SET `options` = 'SELECT |select| FROM `co_iva` WHERE 1=1 AND deleted_at IS NULL HAVING 2=2' WHERE `name` = 'IVA'; UPDATE `zz_modules` SET `options` = 'SELECT |select| FROM `co_iva` WHERE 1=1 AND deleted_at IS NULL HAVING 2=2' WHERE `name` = 'IVA';
-- Aggiunta colonna Codice in Combinazioni
INSERT INTO `zz_views` (`id`, `id_module`, `name`, `query`, `order`, `search`, `slow`, `format`, `search_inside`, `order_by`, `visible`, `summable`, `default`, `created_at`, `updated_at`) VALUES
(442, 94, 'Codice', 'mg_combinazioni.codice', 1, 1, 0, 0, '', '', 1, 0, 0, '2021-11-08 10:17:47', '2021-11-08 10:18:07');
-- Aggiunta impostazione per impostare o meno il riferimento del documento
INSERT INTO `zz_settings` (`id`, `nome`, `valore`, `tipo`, `editable`, `sezione`, `order`, `help`) VALUES (NULL, 'Aggiungi riferimento tra documenti', '1', 'boolean', '1', 'Generali', '18', 'Permette l\'aggiunta del riferimento al documento nella descrizione della riga importata');
-- Aggiunto controllo sul widget fatturato per non conteggiare le fatture in Bozza
UPDATE `zz_widgets` SET `query` = 'SELECT\n CONCAT_WS(\' \', REPLACE(REPLACE(REPLACE(FORMAT((\n SELECT SUM(\n (co_righe_documenti.subtotale - co_righe_documenti.sconto) * IF(co_tipidocumento.reversed, -1, 1)\n )\n ), 2), \',\', \'#\'), \'.\', \',\'), \'#\', \'.\'), \'&euro;\') AS dato\nFROM co_righe_documenti\n INNER JOIN co_documenti ON co_righe_documenti.iddocumento = co_documenti.id\n INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento = co_tipidocumento.id\n INNER JOIN co_statidocumento ON co_documenti.idstatodocumento = co_statidocumento.id\nWHERE co_statidocumento.descrizione!=\'Bozza\' AND co_tipidocumento.dir=\'entrata\' |segment| AND data >= \'|period_start|\' AND data <= \'|period_end|\' AND 1=1' WHERE `zz_widgets`.`name` = 'Fatturato';