Aggiunta importazione documenti in Interventi

Aggiunta creazione Intervento a partire da Ordine (#320)
This commit is contained in:
Thomas Zilio 2020-07-31 10:30:38 +02:00
parent f2309ac1b3
commit b47fbc923d
10 changed files with 131 additions and 25 deletions

View File

@ -64,14 +64,27 @@ if (!empty($options['create_document'])) {
}
echo '
<div class="col-md-6">
<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-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>';
} elseif ($options['op'] == 'add_ordine_cliente') {
}
// Opzioni aggiuntive per gli Interventi
elseif ($final_module['name'] == 'Interventi') {
echo '
<div class="col-md-6">
{[ "type": "select", "label": "'.tr('Stato').'", "name": "id_stato_intervento", "required": 1, "values": "query=SELECT idstatointervento AS id, descrizione, colore AS _bgcolor_ FROM in_statiintervento WHERE deleted_at IS NULL" ]}
</div>
<div class="col-md-6">
{[ "type": "select", "label": "'.tr('Tipo').'", "name": "id_tipo_intervento", "required": 1, "values": "query=SELECT idtipointervento AS id, descrizione FROM in_tipiintervento" ]}
</div>';
}
// Selezione fornitore per Ordine fornitore
elseif ($options['op'] == 'add_ordine_cliente') {
$tipo_anagrafica = tr('Fornitore');
$ajax = 'fornitori';
@ -87,7 +100,7 @@ if (!empty($options['create_document'])) {
</div>';
}
// Conto, rivalsa INPS, ritenuta d'acconto e ritenuta contributi
// Conto, rivalsa INPS, ritenuta d'acconto e ritenuta contributi
if (in_array($final_module['name'], ['Fatture di vendita', 'Fatture di acquisto']) && !in_array($original_module['name'], ['Fatture di vendita', 'Fatture di acquisto'])) {
$id_rivalsa_inps = setting('Percentuale rivalsa');
if ($dir == 'uscita') {

View File

@ -436,12 +436,17 @@ $riga = $contratto->getRiga($type, $id_riga);
}
$documento = $class::find($id_documento);
// Individuazione sede
$id_sede = ($documento->direzione == 'entrata') ? $documento->idsede_destinazione : $documento->idsede_partenza;
$id_sede = $id_sede ?: $documento->idsede;
$id_sede = $id_sede ?: 0;
// Creazione del contratto al volo
if (post('create_document') == 'on') {
$contratto = Contratto::build($documento->anagrafica, $documento->nome);
$contratto->idpagamento = $documento->idpagamento;
$contratto->idsede = $documento->idsede;
$contratto->idsede = $id_sede;
$contratto->id_documento_fe = $documento->id_documento_fe;
$contratto->codice_cup = $documento->codice_cup;

View File

@ -286,6 +286,11 @@ switch (post('op')) {
}
$documento = $class::find($id_documento);
// Individuazione sede
$id_sede = ($documento->direzione == 'entrata') ? $documento->idsede_destinazione : $documento->idsede_partenza;
$id_sede = $id_sede ?: $documento->idsede;
$id_sede = $id_sede ?: 0;
// Creazione del ddt al volo
if (post('create_document') == 'on') {
$tipo = Tipo::where('dir', $documento->direzione)->first();
@ -297,7 +302,7 @@ switch (post('op')) {
$ddt->codice_cup = $documento->codice_cup;
$ddt->codice_cig = $documento->codice_cig;
$ddt->num_item = $documento->num_item;
$ddt->idsede_destinazione = $documento->idsede;
$ddt->idsede_destinazione = $id_sede;
$ddt->save();

View File

@ -174,7 +174,7 @@ elseif ($record['stato'] == 'Bozza') {
</div>
<!-- TODO: da nascondere per le fatture di vendita in quanto questa data sarà sempre uguale alla data di emissione -->
<div class="col-md-2" <?php echo ($is_fiscale) ? '' : 'hidden'; ?>>
{[ "type": "date", "class":"<?php echo (dateFormat($fattura->data_competenza)<dateFormat($fattura->data)) ? 'unblockable' : '' ?>", "label": "<?php echo tr('Data competenza'); ?>", "name": "data_competenza", "required": 1, "value": "$data_competenza$", "min-date": "$data_registrazione$", "help": "<?php echo tr('Data nella quale considerare il movimento contabile, che può essere posticipato rispetto la data della fattura'); ?>" ]}
{[ "type": "date", "class":"<?php echo (dateFormat($fattura->data_competenza) < dateFormat($fattura->data)) ? 'unblockable' : ''; ?>", "label": "<?php echo tr('Data competenza'); ?>", "name": "data_competenza", "required": 1, "value": "$data_competenza$", "min-date": "$data_registrazione$", "help": "<?php echo tr('Data nella quale considerare il movimento contabile, che può essere posticipato rispetto la data della fattura'); ?>" ]}
</div>

View File

@ -333,6 +333,58 @@ $riga = $intervento->getRiga($type, $id_riga);
aggiorna_sedi_movimenti('interventi', $id_record);
break;
// Aggiunta di un documento in ordine
case 'add_documento':
$class = post('class');
$id_documento = post('id_documento');
// Individuazione del documento originale
if (!is_subclass_of($class, \Common\Document::class)) {
return;
}
$documento = $class::find($id_documento);
// Individuazione sede
$id_sede = ($documento->direzione == 'entrata') ? $documento->idsede_destinazione : $documento->idsede_partenza;
$id_sede = $id_sede ?: $documento->idsede;
$id_sede = $id_sede ?: 0;
// Creazione dell' ordine al volo
if (post('create_document') == 'on') {
$stato = Stato::find(post('id_stato_intervento'));
$tipo = TipoSessione::find(post('id_tipo_intervento'));
$intervento = Intervento::build($documento->anagrafica, $tipo, $stato, post('data'));
$intervento->idsede_destinazione = $id_sede;
$intervento->id_documento_fe = $documento->id_documento_fe;
$intervento->codice_cup = $documento->codice_cup;
$intervento->codice_cig = $documento->codice_cig;
$intervento->num_item = $documento->num_item;
$intervento->save();
$id_record = $intervento->id;
}
$righe = $documento->getRighe();
foreach ($righe as $riga) {
if (post('evadere')[$riga->id] == 'on' and !empty(post('qta_da_evadere')[$riga->id])) {
$qta = post('qta_da_evadere')[$riga->id];
$copia = $riga->copiaIn($intervento, $qta);
$copia->save();
}
}
// Messaggio informativo
$message = tr('_DOC_ aggiunto!', [
'_DOC_' => $documento->getReference(),
]);
flash()->info($message);
break;
case 'firma':
if (directory($docroot.'/files/interventi')) {
if (post('firma_base64') != '') {

View File

@ -121,7 +121,6 @@ $_SESSION['superselect']['permetti_movimento_a_zero'] = false;
</div>
</div>
<!-- RIGA 5 -->
<div class="row">
<div class="col-md-12">

View File

@ -323,13 +323,18 @@ switch (post('op')) {
}
$documento = $class::find($id_documento);
// Individuazione sede
$id_sede = ($documento->direzione == 'entrata') ? $documento->idsede_destinazione : $documento->idsede_partenza;
$id_sede = $id_sede ?: $documento->idsede;
$id_sede = $id_sede ?: 0;
// Creazione dell' ordine al volo
if (post('create_document') == 'on') {
$tipo = Tipo::where('dir', $documento->direzione)->first();
$ordine = Ordine::build($documento->anagrafica, $tipo, post('data'));
$ordine->idpagamento = $documento->idpagamento;
$ordine->idsede = $documento->idsede;
$ordine->idsede = $id_sede;
$ordine->id_documento_fe = $documento->id_documento_fe;
$ordine->codice_cup = $documento->codice_cup;

View File

@ -8,26 +8,29 @@ echo '
<i class="fa fa-magic"></i>&nbsp;'.tr('Crea').'...
<span class="caret"></span>
</button>
<ul class="dropdown-menu dropdown-menu-right">';
echo '
<li>
<a data-href="'.$structure->fileurl('crea_documento.php').'?id_module='.$id_module.'&id_record='.$id_record.'&documento=ordine_fornitore" data-toggle="modal" data-title="'.tr('Crea ordine fornitore').'" class="'.(in_array($record['stato'], ['Accettato', 'Parzialmente evaso']) ? '' : 'disabled').'"><i class="fa fa-file-o"></i>&nbsp;'.tr('Ordine fornitore').'
<ul class="dropdown-menu dropdown-menu-right">
<li>
<a data-href="'.$structure->fileurl('crea_documento.php').'?id_module='.$id_module.'&id_record='.$id_record.'&documento=intervento" data-toggle="modal" data-title="'.tr('Crea attività').'">
<i class="fa fa-wrench"></i>&nbsp;'.tr('Attività').'
</a>
</li>';
</li>
echo '
<li>
<a data-href="'.$structure->fileurl('crea_documento.php').'?id_module='.$id_module.'&id_record='.$id_record.'&documento=ddt" data-toggle="modal" data-title="'.tr('Crea ddt').'" class="'.(in_array($record['stato'], ['Accettato', 'Parzialmente evaso']) ? '' : 'disabled').'"><i class="fa fa-truck"></i>&nbsp;'.tr('Ddt').'
<a data-href="'.$structure->fileurl('crea_documento.php').'?id_module='.$id_module.'&id_record='.$id_record.'&documento=ordine_fornitore" data-toggle="modal" data-title="'.tr('Crea ordine fornitore').'">
<i class="fa fa-file-o"></i>&nbsp;'.tr('Ordine fornitore').'
</a>
</li>';
</li>
echo '
<li>
<a data-href="'.$structure->fileurl('crea_documento.php').'?id_module='.$id_module.'&id_record='.$id_record.'&documento=fattura" data-toggle="modal" data-title="'.tr('Crea fattura').'" class="'.(in_array($record['stato'], ['Accettato', 'Parzialmente fatturato']) ? '' : 'disabled').'"><i class="fa fa-file"></i>&nbsp;'.tr('Fattura').'
<a data-href="'.$structure->fileurl('crea_documento.php').'?id_module='.$id_module.'&id_record='.$id_record.'&documento=ddt" data-toggle="modal" data-title="'.tr('Crea ddt').'">
<i class="fa fa-truck"></i>&nbsp;'.tr('Ddt').'
</a>
</li>';
</li>
echo '
<li>
<a data-href="'.$structure->fileurl('crea_documento.php').'?id_module='.$id_module.'&id_record='.$id_record.'&documento=fattura" data-toggle="modal" data-title="'.tr('Crea fattura').'">
<i class="fa fa-file"></i>&nbsp;'.tr('Fattura').'
</a>
</li>
</ul>
</div>';

View File

@ -14,6 +14,9 @@ if (get('documento') == 'fattura') {
} elseif (get('documento') == 'ordine_fornitore') {
$final_module = 'Ordini fornitore';
$op = 'add_ordine_cliente';
} elseif (get('documento') == 'intervento') {
$final_module = 'Interventi';
$op = 'add_documento';
} else {
$final_module = $module['name'] == 'Ordini cliente' ? 'Ddt di vendita' : 'Ddt di acquisto';
$op = 'add_ordine';

View File

@ -15,12 +15,33 @@ HAVING 2=2
ORDER BY `co_documenti`.`data` DESC, CAST(IF(`co_documenti`.`numero` = \'\', `co_documenti`.`numero_esterno`, `co_documenti`.`numero`) AS UNSIGNED) DESC' WHERE `name` = 'Fatture di acquisto';
-- Allineo per i movimenti relativi alle fatture di vendita, la data del movimento con la data del documento
-- Allineo per i movimenti relativi alle fatture di vendita, la data del movimento con la data del documento
UPDATE `co_movimenti` SET `co_movimenti`.`data` = `co_movimenti`.`data_documento` WHERE `iddocumento` IN (SELECT `co_documenti`.`id` FROM `co_documenti` INNER JOIN `co_tipidocumento` ON `co_documenti`.`idtipodocumento` = `co_tipidocumento`.`id` WHERE `co_tipidocumento`.`dir` = 'entrata' );
-- Allineo per le fatture di vendita, la data_competenza con data emissione del documento
-- Allineo per le fatture di vendita, la data_competenza con data emissione del documento
UPDATE `co_documenti` SET `co_documenti`.`data_competenza` = `co_documenti`.`data` WHERE `co_documenti`.`idtipodocumento` IN (SELECT `co_tipidocumento`.`id` FROM `co_tipidocumento` WHERE `co_tipidocumento`.`dir` = 'entrata');
-- Elimino data_documento per co_documenti
ALTER TABLE `co_movimenti` DROP `data_documento`;
ALTER TABLE `co_movimenti` DROP `data_documento`;
-- Allineamento idarticolo nelle tabelle delle righe
ALTER TABLE `co_righe_documenti` CHANGE `idarticolo` `idarticolo` INT(11) NULL;
UPDATE `co_righe_documenti` SET `idarticolo` = NULL WHERE `idarticolo` = 0;
ALTER TABLE `co_righe_preventivi` CHANGE `idarticolo` `idarticolo` INT(11) NULL;
UPDATE `co_righe_preventivi` SET `idarticolo` = NULL WHERE `idarticolo` = 0;
ALTER TABLE `co_righe_contratti` CHANGE `idarticolo` `idarticolo` INT(11) NULL;
UPDATE `co_righe_contratti` SET `idarticolo` = NULL WHERE `idarticolo` = 0;
ALTER TABLE `dt_righe_ddt` CHANGE `idarticolo` `idarticolo` INT(11) NULL;
UPDATE `dt_righe_ddt` SET `idarticolo` = NULL WHERE `idarticolo` = 0;
ALTER TABLE `or_righe_ordini` CHANGE `idarticolo` `idarticolo` INT(11) NULL;
UPDATE `or_righe_ordini` SET `idarticolo` = NULL WHERE `idarticolo` = 0;
ALTER TABLE `or_righe_ordini` CHANGE `idarticolo` `idarticolo` INT(11) NULL;
UPDATE `or_righe_ordini` SET `idarticolo` = NULL WHERE `idarticolo` = 0;
ALTER TABLE `co_righe_promemoria` CHANGE `idarticolo` `idarticolo` INT(11) NULL;
UPDATE `co_righe_promemoria` SET `idarticolo` = NULL WHERE `idarticolo` = 0;