diff --git a/assets/src/js/functions/select.js b/assets/src/js/functions/select.js index cf369ea4e..7be6e6ae0 100755 --- a/assets/src/js/functions/select.js +++ b/assets/src/js/functions/select.js @@ -69,7 +69,7 @@ function start_superselect() { let results = data.results; // Interpretazione forzata per campi optgroup - if (results[0]['optgroup']) { + if (results && results[0] && [0]['optgroup']) { let groups = results.reduce(function (r, a) { r[a.optgroup] = r[a.optgroup] || []; r[a.optgroup].push(a); diff --git a/include/common/importa.php b/include/common/importa.php index 20c3c787c..4b848b476 100755 --- a/include/common/importa.php +++ b/include/common/importa.php @@ -24,14 +24,14 @@ if (empty($documento) || (!empty($documento_finale) && $documento_finale->direzi return; } -// Informazioi utili +// Informazioni utili $dir = $documento->direzione; $original_module = Modules::get($documento->module); $name = !empty($documento_finale) ? $documento_finale->module : $options['module']; $final_module = Modules::get($name); -// IVA predefinta +// IVA predefinita $id_iva = $id_iva ?: setting('Iva predefinita'); $righe = $documento->getRighe()->where('qta_rimanente', '>', 0); @@ -45,7 +45,6 @@ if (empty($righe)) { $link = !empty($documento_finale) ? ROOTDIR.'/editor.php?id_module='.$final_module['id'].'&id_record='.$documento_finale->id : ROOTDIR.'/controller.php?id_module='.$final_module['id']; echo ' -
@@ -71,24 +70,32 @@ if (!empty($options['create_document'])) { {[ "type": "date", "label": "'.tr('Data del documento').'", "name": "data", "required": 1, "value": "-now-" ]} '; + // Opzioni aggiuntive per le Fatture if (in_array($final_module['name'], ['Fatture di vendita', 'Fatture di acquisto'])) { if ($options['op'] == 'nota_accredito' && !empty($segmenti)) { - $segmento = $dbo->fetchOne("SELECT * FROM zz_segments WHERE predefined_accredito='1'"); + $segmento = $database->fetchOne("SELECT * FROM zz_segments WHERE predefined_accredito='1'"); $id_segment = $segmento['id']; } else { $id_segment = $_SESSION['module_'.$final_module['id']]['id_segment']; } - echo ' -
- {[ "type": "select", "label": "'.tr('Ritenuta contributi').'", "name": "id_ritenuta_contributi", "value": "$id_ritenuta_contributi$", "values": "query=SELECT * FROM co_ritenuta_contributi" ]} -
+ $stato_predefinito = $database->fetchOne("SELECT * FROM co_statidocumento WHERE descrizione = 'Bozza'"); -
- {[ "type": "select", "label": "'.tr('Sezionale').'", "name": "id_segment", "required": 1, "values": "query=SELECT id, name AS descrizione FROM zz_segments WHERE id_module='.prepare($final_module['id']).' ORDER BY name", "value": "'.$id_segment.'" ]} -
'; + echo ' +
+ {[ "type": "select", "label": "'.tr('Stato').'", "name": "id_stato", "required": 1, "values": "query=SELECT * FROM co_statidocumento WHERE descrizione IN (\'Emessa\', \'Bozza\')", "value": "'.$stato_predefinito['id'].'"]} +
+ +
+ {[ "type": "select", "label": "'.tr('Ritenuta contributi').'", "name": "id_ritenuta_contributi", "value": "$id_ritenuta_contributi$", "values": "query=SELECT * FROM co_ritenuta_contributi" ]} +
+ +
+ {[ "type": "select", "label": "'.tr('Sezionale').'", "name": "id_segment", "required": 1, "values": "query=SELECT id, name AS descrizione FROM zz_segments WHERE id_module='.prepare($final_module['id']).' ORDER BY name", "value": "'.$id_segment.'" ]} +
'; } + // Opzioni aggiuntive per gli Interventi elseif ($final_module['name'] == 'Interventi') { echo ' @@ -100,14 +107,49 @@ if (!empty($options['create_document'])) { {[ "type": "select", "label": "'.tr('Tipo').'", "name": "id_tipo_intervento", "required": 1, "values": "query=SELECT idtipointervento AS id, descrizione FROM in_tipiintervento" ]} '; } + + // Opzioni aggiuntive per i Contratti + elseif ($final_module['name'] == 'Contratti') { + $stato_predefinito = $database->fetchOne("SELECT * FROM co_staticontratti WHERE descrizione = 'Bozza'"); + + echo ' +
+ {[ "type": "select", "label": "'.tr('Stato').'", "name": "id_stato", "required": 1, "values": "query=SELECT id, descrizione FROM co_staticontratti", "value": "'.$stato_predefinito['id'].'" ]} +
'; + } + + // Opzioni aggiuntive per i DDT + elseif (in_array($final_module['name'], ['Ddt di vendita', 'Ddt di acquisto'])) { + $stato_predefinito = $database->fetchOne("SELECT * FROM dt_statiddt WHERE descrizione = 'Bozza'"); + + echo ' +
+ {[ "type": "select", "label": "'.tr('Stato').'", "name": "id_stato", "required": 1, "values": "query=SELECT * FROM dt_statiddt", "value": "'.$stato_predefinito['id'].'" ]} +
+ +
+ {[ "type": "select", "label": "'.tr('Causale trasporto').'", "name": "id_causale_trasporto", "required": 1, "ajax-source": "causali", "icon-after": "add|'.Modules::get('Causali')['id'].'", "help": "'.tr('Definisce la causale del trasporto').'" ]} +
'; + } + + // Opzioni aggiuntive per gli Ordini + elseif (in_array($final_module['name'], ['Ordini cliente', 'Ordini fornitore'])) { + $stato_predefinito = $database->fetchOne("SELECT * FROM or_statiordine WHERE descrizione = 'Bozza'"); + + echo ' +
+ {[ "type": "select", "label": "'.tr('Stato').'", "name": "id_stato", "required": 1, "values": "query=SELECT * FROM or_statiordine WHERE descrizione IN(\'Bozza\', \'Accettato\', \'In attesa di conferma\', \'Annullato\')", "value": "'.$stato_predefinito['id'].'" ]} +
'; + } + // Selezione fornitore per Ordine fornitore - elseif ($options['op'] == 'add_ordine_cliente') { + if ($options['op'] == 'add_ordine_cliente') { $tipo_anagrafica = tr('Fornitore'); $ajax = 'fornitori'; echo '
- {[ "type": "select", "label": "'.$tipo_anagrafica.'", "name": "idanagrafica", "required": 1, "ajax-source": "'.$ajax.'", "icon-after": "add|<'.Modules::get('Anagrafiche')['id'].'|tipoanagrafica='.$tipo_anagrafica.'" ]} + {[ "type": "select", "label": "'.$tipo_anagrafica.'", "name": "idanagrafica", "required": 1, "ajax-source": "'.$ajax.'", "icon-after": "add|'.Modules::get('Anagrafiche')['id'].'|tipoanagrafica='.$tipo_anagrafica.'" ]}
'; } @@ -133,7 +175,7 @@ if (in_array($final_module['name'], ['Fatture di vendita', 'Fatture di acquisto' $id_conto = $documento_finale['idconto']; if (empty($id_conto)) { - $id_conto = ($dir == 'entrata') ? setting('Conto predefinito fatture di vendita') : setting('Conto predefinito fatture di acquisto'); + $id_conto = $dir == 'entrata' ? setting('Conto predefinito fatture di vendita') : setting('Conto predefinito fatture di acquisto'); } echo ' @@ -151,7 +193,7 @@ if (in_array($final_module['name'], ['Fatture di vendita', 'Fatture di acquisto' if ($show_rivalsa) { echo '
- {[ "type": "select", "label": "'.tr('Rivalsa').'", "name": "id_rivalsa_inps", "value": "'.$id_rivalsa_inps.'", "values": "query=SELECT * FROM co_rivalse", "help": "'.(($options['dir'] == 'entrata') ? setting('Tipo Cassa Previdenziale') : null).'" ]} + {[ "type": "select", "label": "'.tr('Rivalsa').'", "name": "id_rivalsa_inps", "value": "'.$id_rivalsa_inps.'", "values": "query=SELECT * FROM co_rivalse", "help": "'.($options['dir'] == 'entrata' ? setting('Tipo Cassa Previdenziale') : null).'" ]}
'; } @@ -196,7 +238,8 @@ if (in_array($final_module['name'], ['Fatture di vendita', 'Fatture di acquisto' '; } - echo ' +// Righe del documento +echo '

'.tr('Righe da importare').'

@@ -217,21 +260,21 @@ if (!empty($options['serials'])) { echo ' '; -foreach ($righe as $i => $r) { +foreach ($righe as $i => $riga) { // Descrizione echo ' - - - - '; + + + + '; // Checkbox - da evadere? echo ' - '; + '; - $descrizione = ($r->isArticolo() ? $r->articolo->codice.' - ' : '').$r['descrizione']; + $descrizione = ($riga->isArticolo() ? $riga->articolo->codice.' - ' : '').$riga['descrizione']; echo ' '.nl2br($descrizione); @@ -241,20 +284,20 @@ foreach ($righe as $i => $r) { // Q.tà rimanente echo ' - '.Translator::numberToLocale($r['qta_rimanente']).' + '.numberFormat($riga['qta_rimanente']).' '; // Q.tà da evadere echo ' - {[ "type": "number", "name": "qta_da_evadere['.$r['id'].']", "id": "qta_'.$i.'", "required": 1, "value": "'.$r['qta_rimanente'].'", "decimals": "qta", "min-value": "0", "extra": "'.(($r['is_descrizione']) ? 'readonly' : '').' onkeyup=\"ricalcola_subtotale_riga('.$i.');\"" ]} + {[ "type": "number", "name": "qta_da_evadere['.$riga['id'].']", "id": "qta_'.$i.'", "required": 1, "value": "'.$riga['qta_rimanente'].'", "decimals": "qta", "min-value": "0", "extra": "'.(($riga['is_descrizione']) ? 'readonly' : '').' onkeyup=\"ricalcola_subtotale_riga('.$i.');\"" ]} '; echo ' - '.moneyFormat($r->totale).'
+ '.moneyFormat($riga->totale).'
- '.Translator::numberToLocale($r->totale_imponibile).' + '.Translator::numberToLocale($r->iva).' + '.numberFormat($riga->totale_imponibile).' + '.numberFormat($riga->iva).' '; // Seriali @@ -262,8 +305,8 @@ foreach ($righe as $i => $r) { echo ' '; - if (!empty($r['abilita_serial'])) { - $serials = $r->serials; + if (!empty($riga['abilita_serial'])) { + $serials = $riga->serials; $list = []; foreach ($serials as $serial) { @@ -275,11 +318,11 @@ foreach ($righe as $i => $r) { if (!empty($serials)) { echo ' - {[ "type": "select", "name": "serial['.$r['id'].'][]", "id": "serial_'.$i.'", "multiple": 1, "values": '.json_encode($list).', "value": "'.implode(',', $serials).'", "extra": "data-maximum=\"'.intval($r['qta_rimanente']).'\"" ]}'; + {[ "type": "select", "name": "serial['.$riga['id'].'][]", "id": "serial_'.$i.'", "multiple": 1, "values": '.json_encode($list).', "value": "'.implode(',', $serials).'", "extra": "data-maximum=\"'.intval($riga['qta_rimanente']).'\"" ]}'; } } - if (empty($r['abilita_serial']) || empty($serials)) { + if (empty($riga['abilita_serial']) || empty($serials)) { echo '-'; } diff --git a/modules/contratti/actions.php b/modules/contratti/actions.php index 3090d20be..10a87b48a 100644 --- a/modules/contratti/actions.php +++ b/modules/contratti/actions.php @@ -487,6 +487,12 @@ $riga = $contratto->getRiga($type, $id_riga); } } + // Modifica finale dello stato + if (post('create_document') == 'on') { + $contratto->idstato = post('id_stato'); + $contratto->save(); + } + ricalcola_costiagg_ordine($id_record); // Messaggio informativo diff --git a/modules/ddt/actions.php b/modules/ddt/actions.php index 739bea41d..c26661f6f 100755 --- a/modules/ddt/actions.php +++ b/modules/ddt/actions.php @@ -303,7 +303,7 @@ switch (post('op')) { } $documento = $class::find($id_documento); - // Individuazione sede + // Individuazione sede $id_sede = ($documento->direzione == 'entrata') ? $documento->idsede_destinazione : $documento->idsede_partenza; $id_sede = $id_sede ?: $documento->idsede; $id_sede = $id_sede ?: 0; @@ -321,6 +321,8 @@ switch (post('op')) { $ddt->num_item = $documento->num_item; $ddt->idsede_destinazione = $id_sede; + $ddt->idcausalet = post('id_causale_trasporto'); + $ddt->save(); $id_record = $ddt->id; @@ -344,6 +346,12 @@ switch (post('op')) { } } + // Modifica finale dello stato + if (post('create_document') == 'on') { + $ddt->idstatoddt = post('id_stato'); + $ddt->save(); + } + ricalcola_costiagg_ddt($id_record); // Messaggio informativo diff --git a/modules/ddt/add.php b/modules/ddt/add.php index 4d314a69d..96ce5cd3b 100755 --- a/modules/ddt/add.php +++ b/modules/ddt/add.php @@ -51,15 +51,18 @@ $id_anagrafica = !empty(get('idanagrafica')) ? get('idanagrafica') : '';
{[ "type": "date", "label": "", "name": "data", "required": 1, "value": "-now-" ]}
+
{[ "type": "select", "label": "", "name": "idanagrafica", "id": "idanagrafica_add", "required": 1, "value": "", "ajax-source": "clienti_fornitori", "icon-after": "add||tipoanagrafica=" ]}
+
{[ "type": "select", "label": "", "name": "idtipoddt", "required": 1, "values": "query=SELECT id, descrizione FROM dt_tipiddt WHERE dir=''", "value": "" ]}
+
- {[ "type": "select", "label": "", "name": "idcausalet", "value": "$idcausalet$", "ajax-source": "causali", "icon-after": "add||||" ]} + {[ "type": "select", "label": "", "name": "idcausalet", "required": 1, "value": "$idcausalet$", "ajax-source": "causali", "icon-after": "add||||" ]}
diff --git a/modules/ddt/edit.php b/modules/ddt/edit.php index 872e1dafb..b75b7a9d3 100755 --- a/modules/ddt/edit.php +++ b/modules/ddt/edit.php @@ -149,7 +149,7 @@ if ($module['name'] == 'Ddt di vendita') {
- {[ "type": "select", "label": "", "name": "idcausalet", "value": "$idcausalet$", "ajax-source": "causali", "icon-after": "add||||", "help": "" ]} + {[ "type": "select", "label": "", "name": "idcausalet", "required": 1, "value": "$idcausalet$", "ajax-source": "causali", "icon-after": "add||||", "help": "" ]}
diff --git a/modules/fatture/actions.php b/modules/fatture/actions.php index 77dd6b93b..523019732 100755 --- a/modules/fatture/actions.php +++ b/modules/fatture/actions.php @@ -679,9 +679,11 @@ switch (post('op')) { $tipo = Tipo::where('descrizione', $descrizione)->first(); $fattura = Fattura::build($documento->anagrafica, $tipo, post('data'), post('id_segment')); + $fattura->idpagamento = $documento->idpagamento; $fattura->idsede_destinazione = $documento->idsede; $fattura->id_ritenuta_contributi = post('id_ritenuta_contributi') ?: null; + $fattura->save(); $id_record = $fattura->id; @@ -717,6 +719,12 @@ switch (post('op')) { } } + // Modifica finale dello stato + if (post('create_document') == 'on') { + $fattura->idstatodocumento = post('id_stato'); + $fattura->save(); + } + ricalcola_costiagg_fattura($id_record); // Messaggio informativo diff --git a/modules/ordini/actions.php b/modules/ordini/actions.php index f4a240c33..67ee77b46 100755 --- a/modules/ordini/actions.php +++ b/modules/ordini/actions.php @@ -366,6 +366,12 @@ switch (post('op')) { } } + // Modifica finale dello stato + if (post('create_document') == 'on') { + $ordine->idstatoordine = post('id_stato'); + $ordine->save(); + } + ricalcola_costiagg_ordine($id_record); // Messaggio informativo