Aggiunto supporto allo stato per l'importazione documenti

Causale trasporto obbligatoria.
This commit is contained in:
Dasc3er 2020-09-09 11:44:14 +02:00
parent 61dd791605
commit 9740d3bc3b
8 changed files with 109 additions and 35 deletions

View File

@ -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);

View File

@ -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 '
<form action="'.$link.'" method="post">
<input type="hidden" name="op" value="'.$options['op'].'">
<input type="hidden" name="backto" value="record-edit">
@ -71,24 +70,32 @@ if (!empty($options['create_document'])) {
{[ "type": "date", "label": "'.tr('Data del documento').'", "name": "data", "required": 1, "value": "-now-" ]}
</div>';
// 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 '
<div class="col-md-6">
{[ "type": "select", "label": "'.tr('Ritenuta contributi').'", "name": "id_ritenuta_contributi", "value": "$id_ritenuta_contributi$", "values": "query=SELECT * FROM co_ritenuta_contributi" ]}
</div>
$stato_predefinito = $database->fetchOne("SELECT * FROM co_statidocumento WHERE descrizione = 'Bozza'");
<div class="col-md-12">
{[ "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.'" ]}
</div>';
echo '
<div class="col-md-6">
{[ "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'].'"]}
</div>
<div class="col-md-6">
{[ "type": "select", "label": "'.tr('Ritenuta contributi').'", "name": "id_ritenuta_contributi", "value": "$id_ritenuta_contributi$", "values": "query=SELECT * FROM co_ritenuta_contributi" ]}
</div>
<div class="col-md-6">
{[ "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.'" ]}
</div>';
}
// 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" ]}
</div>';
}
// Opzioni aggiuntive per i Contratti
elseif ($final_module['name'] == 'Contratti') {
$stato_predefinito = $database->fetchOne("SELECT * FROM co_staticontratti WHERE descrizione = 'Bozza'");
echo '
<div class="col-md-6">
{[ "type": "select", "label": "'.tr('Stato').'", "name": "id_stato", "required": 1, "values": "query=SELECT id, descrizione FROM co_staticontratti", "value": "'.$stato_predefinito['id'].'" ]}
</div>';
}
// 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 '
<div class="col-md-6">
{[ "type": "select", "label": "'.tr('Stato').'", "name": "id_stato", "required": 1, "values": "query=SELECT * FROM dt_statiddt", "value": "'.$stato_predefinito['id'].'" ]}
</div>
<div class="col-md-6">
{[ "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').'" ]}
</div>';
}
// 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 '
<div class="col-md-6">
{[ "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'].'" ]}
</div>';
}
// Selezione fornitore per Ordine fornitore
elseif ($options['op'] == 'add_ordine_cliente') {
if ($options['op'] == 'add_ordine_cliente') {
$tipo_anagrafica = tr('Fornitore');
$ajax = 'fornitori';
echo '
<div class="col-md-6">
{[ "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.'" ]}
</div>';
}
@ -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 '
<div class="col-md-4">
{[ "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).'" ]}
</div>';
}
@ -196,7 +238,8 @@ if (in_array($final_module['name'], ['Fatture di vendita', 'Fatture di acquisto'
</div>';
}
echo '
// Righe del documento
echo '
<div class="box box-success">
<div class="box-header with-border">
<h3 class="box-title">'.tr('Righe da importare').'</h3>
@ -217,21 +260,21 @@ if (!empty($options['serials'])) {
echo '
</tr>';
foreach ($righe as $i => $r) {
foreach ($righe as $i => $riga) {
// Descrizione
echo '
<tr>
<td>
<input type="hidden" id="prezzo_unitario_'.$i.'" name="subtot['.$r['id'].']" value="'.$r['prezzo_unitario'].'" />
<input type="hidden" id="sconto_unitario_'.$i.'" name="sconto['.$r['id'].']" value="'.$r['sconto_unitario'].'" />
<input type="hidden" id="iva_unitaria_'.$i.'" name="iva['.$r['id'].']" value="'.$r['iva_unitaria'].'" />
<input type="hidden" id="qta_max_'.$i.'" value="'.($r['qta_rimanente']).'" />';
<input type="hidden" id="prezzo_unitario_'.$i.'" name="subtot['.$riga['id'].']" value="'.$riga['prezzo_unitario'].'" />
<input type="hidden" id="sconto_unitario_'.$i.'" name="sconto['.$riga['id'].']" value="'.$riga['sconto_unitario'].'" />
<input type="hidden" id="iva_unitaria_'.$i.'" name="iva['.$riga['id'].']" value="'.$riga['iva_unitaria'].'" />
<input type="hidden" id="qta_max_'.$i.'" value="'.($riga['qta_rimanente']).'" />';
// Checkbox - da evadere?
echo '
<input type="checkbox" checked="checked" id="checked_'.$i.'" name="evadere['.$r['id'].']" value="on" onclick="ricalcola_subtotale_riga('.$i.');" />';
<input type="checkbox" checked="checked" id="checked_'.$i.'" name="evadere['.$riga['id'].']" value="on" onclick="ricalcola_subtotale_riga('.$i.');" />';
$descrizione = ($r->isArticolo() ? $r->articolo->codice.' - ' : '').$r['descrizione'];
$descrizione = ($riga->isArticolo() ? $riga->articolo->codice.' - ' : '').$riga['descrizione'];
echo '&nbsp;'.nl2br($descrizione);
@ -241,20 +284,20 @@ foreach ($righe as $i => $r) {
// Q.tà rimanente
echo '
<td class="text-center">
'.Translator::numberToLocale($r['qta_rimanente']).'
'.numberFormat($riga['qta_rimanente']).'
</td>';
// Q.tà da evadere
echo '
<td>
{[ "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.');\"" ]}
</td>';
echo '
<td>
<big id="subtotale_'.$i.'">'.moneyFormat($r->totale).'</big><br/>
<big id="subtotale_'.$i.'">'.moneyFormat($riga->totale).'</big><br/>
<small style="color:#777;" id="subtotaledettagli_'.$i.'">'.Translator::numberToLocale($r->totale_imponibile).' + '.Translator::numberToLocale($r->iva).'</small>
<small style="color:#777;" id="subtotaledettagli_'.$i.'">'.numberFormat($riga->totale_imponibile).' + '.numberFormat($riga->iva).'</small>
</td>';
// Seriali
@ -262,8 +305,8 @@ foreach ($righe as $i => $r) {
echo '
<td>';
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 '-';
}

View File

@ -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

View File

@ -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

View File

@ -51,15 +51,18 @@ $id_anagrafica = !empty(get('idanagrafica')) ? get('idanagrafica') : '';
<div class="col-md-4">
{[ "type": "date", "label": "<?php echo tr('Data'); ?>", "name": "data", "required": 1, "value": "-now-" ]}
</div>
<div class="col-md-4">
{[ "type": "select", "label": "<?php echo $label; ?>", "name": "idanagrafica", "id": "idanagrafica_add", "required": 1, "value": "<?php echo $id_anagrafica; ?>", "ajax-source": "clienti_fornitori", "icon-after": "add|<?php echo Modules::get('Anagrafiche')['id']; ?>|tipoanagrafica=<?php echo $tipo_anagrafica; ?>" ]}
</div>
<!-- il campo idtipoddt può essere anche rimosso -->
<div class="col-md-4 hide">
{[ "type": "select", "label": "<?php echo tr('Tipo ddt'); ?>", "name": "idtipoddt", "required": 1, "values": "query=SELECT id, descrizione FROM dt_tipiddt WHERE dir='<?php echo $dir; ?>'", "value": "<?php echo $id_tipoddt; ?>" ]}
</div>
<div class="col-md-4">
{[ "type": "select", "label": "<?php echo tr('Causale trasporto'); ?>", "name": "idcausalet", "value": "$idcausalet$", "ajax-source": "causali", "icon-after": "add|<?php echo Modules::get('Causali')['id']; ?>|||<?php echo $block_edit ? 'disabled' : ''; ?>" ]}
{[ "type": "select", "label": "<?php echo tr('Causale trasporto'); ?>", "name": "idcausalet", "required": 1, "value": "$idcausalet$", "ajax-source": "causali", "icon-after": "add|<?php echo Modules::get('Causali')['id']; ?>|||<?php echo $block_edit ? 'disabled' : ''; ?>" ]}
</div>
</div>

View File

@ -149,7 +149,7 @@ if ($module['name'] == 'Ddt di vendita') {
</div>
<div class="col-md-3">
{[ "type": "select", "label": "<?php echo tr('Causale trasporto'); ?>", "name": "idcausalet", "value": "$idcausalet$", "ajax-source": "causali", "icon-after": "add|<?php echo Modules::get('Causali')['id']; ?>|||<?php echo $block_edit ? 'disabled' : ''; ?>", "help": "<?php echo tr('Definisce la causale del trasporto.'); ?>" ]}
{[ "type": "select", "label": "<?php echo tr('Causale trasporto'); ?>", "name": "idcausalet", "required": 1, "value": "$idcausalet$", "ajax-source": "causali", "icon-after": "add|<?php echo Modules::get('Causali')['id']; ?>|||<?php echo $block_edit ? 'disabled' : ''; ?>", "help": "<?php echo tr('Definisce la causale del trasporto'); ?>" ]}
</div>
<div class="col-md-3">

View File

@ -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

View File

@ -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