Skip to content

Commit

Permalink
feat: gestione creazione fattura da buttons attività
Browse files Browse the repository at this point in the history
  • Loading branch information
MatteoPistorello committed Dec 18, 2024
1 parent 7a400b6 commit 312f69b
Show file tree
Hide file tree
Showing 4 changed files with 226 additions and 145 deletions.
47 changes: 42 additions & 5 deletions include/common/importa.php
Original file line number Diff line number Diff line change
Expand Up @@ -262,7 +262,44 @@
<div class="col-md-'.$width.'">
{[ "type": "select", "label": "'.tr('Conto').'", "name": "id_conto", "required": 1, "value": "'.$id_conto.'", "ajax-source": "'.($dir == 'entrata' ? 'conti-vendite' : 'conti-acquisti').'" ]}
</div>
</div>
</div>';

$block_input = false;
if ($original_module->name == 'Interventi') {
$block_input = true;

$rs = $dbo->fetchOne('SELECT
`in_interventi`.`id`,
CONCAT(\'Attività numero \', `in_interventi`.`codice`, \' del \', DATE_FORMAT(IFNULL((SELECT MIN(`orario_inizio`) FROM `in_interventi_tecnici` WHERE `in_interventi_tecnici`.`idintervento`=`in_interventi`.`id`), `in_interventi`.`data_richiesta`), \'%d/%m/%Y\'), " [", `in_statiintervento_lang`.`title` , "]") AS descrizione,
CONCAT(\'Attività numero \', `in_interventi`.`codice`, \' del \', DATE_FORMAT(IFNULL((SELECT MIN(`orario_inizio`) FROM `in_interventi_tecnici` WHERE `in_interventi_tecnici`.`idintervento`=`in_interventi`.`id`), `in_interventi`.`data_richiesta`), \'%d/%m/%Y\')) AS info,
CONCAT(\'\n\', `in_interventi`.`descrizione`) AS descrizione_intervento,
IF(`idclientefinale`='.prepare($idanagrafica).', \'Interventi conto terzi\', \'Interventi diretti\') AS `optgroup`
FROM
`in_interventi`
INNER JOIN `in_statiintervento` ON `in_interventi`.`idstatointervento`=`in_statiintervento`.`id`
LEFT JOIN `in_statiintervento_lang` ON (`in_statiintervento`.`id` = `in_statiintervento_lang`.`id_record` AND `in_statiintervento_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).')
WHERE
`in_interventi`.`id` = '.prepare($documento->id));

$descrizione_intervento = str_replace("'", ' ', strip_tags((string) $original_module->replacePlaceholders($documento->id, setting('Descrizione personalizzata in fatturazione')))) ?: $rs['info'];

// Intervento
echo '
<div class="row">
<div class="col-md-6">
{[ "type": "textarea", "label": "'.tr('Descrizione').'", "name": "descrizione_intervento", "required": "1", "value": "'.$descrizione_intervento.'" ]}
</div>
<div class="col-md-3">
{[ "type": "checkbox", "label": "'.tr('Copia descrizione').'", "name": "copia_descrizione", "placeholder": "'.tr('Copia anche la descrizione dell\'intervento').'." ]}
</div>
<div class="col-md-3">
{[ "type": "checkbox", "label": "'.tr('Importa sessioni').'", "name": "importa_sessioni", "value": "1", "disabled": "'.($block_input ? '1' : '0').'" ]}
</div>
</div>';
}
echo '
</div>
</div>';
}
Expand Down Expand Up @@ -290,7 +327,7 @@
<table class="card-body table table-striped table-hover table-sm">
<thead>
<tr>
<th width="2%"><input id="import_all" type="checkbox" checked/></th>
<th width="2%"><input id="import_all" type="checkbox" class="'.($block_input ? 'disabled' : '').'" checked/></th>
<th>'.tr('Descrizione').'</th>
<th width="10%" class="text-center">'.tr('Q.tà').'</th>
<th width="15%">'.tr('Q.tà da evadere').'</th>
Expand Down Expand Up @@ -324,7 +361,7 @@
echo '
<tr data-local_id="'.$i.'">
<td style="vertical-align:middle">
<input class="check" type="checkbox" '.$attr.' id="checked_'.$i.'" name="evadere['.$riga['id'].']" value="on" onclick="ricalcolaTotaleRiga('.$i.');" />
<input class="check '.($block_input ? 'disabled' : '').'" type="checkbox" '.$attr.' id="checked_'.$i.'" name="evadere['.$riga['id'].']" value="on" onclick="ricalcolaTotaleRiga('.$i.');" />
</td>
<td style="vertical-align:middle">
<span class="hidden" id="id_articolo_'.$i.'">'.$riga['idarticolo'].'</span>
Expand Down Expand Up @@ -373,7 +410,7 @@
// Q.tà da evadere
echo '
<td style="vertical-align:middle">
{[ "type": "number", "name": "qta_da_evadere['.$riga['id'].']", "id": "qta_'.$i.'", "required": 1, "value": "'.$qta_rimanente.'", "decimals": "qta", "min-value": "0", "extra": "'.(($riga['is_descrizione']) ? 'readonly' : '').' onkeyup=\"ricalcolaTotaleRiga('.$i.');\"" ]}
{[ "type": "number", "name": "qta_da_evadere['.$riga['id'].']", "id": "qta_'.$i.'", "required": 1, "value": "'.$qta_rimanente.'", "decimals": "qta", "min-value": "0", "extra": "'.(($riga['is_descrizione']) ? 'readonly' : '').' onkeyup=\"ricalcolaTotaleRiga('.$i.');\"", "disabled": "'.($block_input ? '1' : '0').'" ]}
</td>';

echo '
Expand Down Expand Up @@ -433,7 +470,7 @@
<div class="card-header with-border">
<h3 class="card-title">'.tr('Righe evase completamente').'</h3>
<div class="card-tools pull-right">
<button type="button" class="btn btn-tool" data-widget="collapse"><i class="fa fa-plus"></i></button>
<button type="button" class="btn btn-tool" data-card-widget="collapse"><i class="fa fa-plus"></i></button>
</div>
</div>
Expand Down
20 changes: 20 additions & 0 deletions modules/fatture/actions.php
Original file line number Diff line number Diff line change
Expand Up @@ -789,6 +789,26 @@
$id_rivalsa_inps = post('id_rivalsa_inps') ?: null;
$id_conto = post('id_conto');

if ($class == 'Modules\Interventi\Intervento') {
$riga = Descrizione::build($fattura);
$riga->descrizione = post('descrizione_intervento');
$riga->idintervento = $documento->id;
$riga->save();

$copia_descrizione = post('copia_descrizione');
if (!empty($copia_descrizione) && !empty($documento->descrizione)) {
$riga = Descrizione::build($fattura);
$riga->descrizione = $documento->descrizione;
$riga->idintervento = $documento->id;
$riga->save();
}

if (post('importa_sessioni')) {
$id_iva = $anagrafica->idiva_vendite ?: setting('Iva predefinita');
aggiungi_sessioni_in_fattura($documento->id, $fattura->id, $id_iva, $id_conto, $id_rivalsa_inps, $id_ritenuta_acconto, $calcolo_ritenuta_acconto);
}
}

$righe = $documento->getRighe();
foreach ($righe as $riga) {
if (post('evadere')[$riga->id] == 'on') {
Expand Down
28 changes: 21 additions & 7 deletions modules/interventi/buttons.php
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
<?php

/*
* OpenSTAManager: il software gestionale open source per l'assistenza tecnica e la fatturazione
* Copyright (C) DevCode s.r.l.
Expand Down Expand Up @@ -53,17 +52,32 @@ function anteprimaFirma() {
</script>';

// Creazione altri documenti
/*
$where = '';
// Lettura interventi non collegati a preventivi, ordini e contratti
if (!setting('Permetti fatturazione delle attività collegate a contratti')) {
$where = ' AND in_interventi.id_contratto IS NULL';
}
if (!setting('Permetti fatturazione delle attività collegate a ordini')) {
$where .= ' AND in_interventi.id_ordine IS NULL';
}
if (!setting('Permetti fatturazione delle attività collegate a preventivi')) {
$where .= ' AND in_interventi.id_preventivo IS NULL';
}

$is_fatturabile = $dbo->fetchOne('SELECT
`in_interventi`.`id` FROM `in_interventi` INNER JOIN `in_statiintervento` ON `in_interventi`.`idstatointervento`=`in_statiintervento`.`id`
WHERE
`in_interventi`.`id`='.prepare($id_record).' AND `in_statiintervento`.`is_fatturabile`=1 AND `in_interventi`.`id` NOT IN (SELECT `idintervento` FROM `co_righe_documenti` WHERE `idintervento` IS NOT NULL) '.$where)['id'];

echo '
<div class="btn-group">
<button class="btn btn-info dropdown-toggle '.(!$record['flag_completato'] ? 'disabled' : '').'" type="button" data-widget="dropdown" aria-haspopup="true" aria-expanded="true">
<button class="btn btn-info dropdown-toggle '.($is_fatturabile ? '' : 'disabled').'" type="button" data-toggle="dropdown" aria-expanded="false">
<i class="fa fa-magic"></i> '.tr('Crea').'
<span class="caret"></span>
</button>
<ul class="dropdown-menu dropdown-menu-right">
<div class="dropdown-menu dropdown-menu-right">
<a class="dropdown-item" data-href="'.$structure->fileurl('crea_documento.php').'?id_module='.$id_module.'&id_record='.$id_record.'&documento=fattura" data-widget="modal" data-title="'.tr('Crea fattura').'">
<i class="fa fa-file"></i> '.tr('Fattura').'
<i class="fa fa-file"></i> '.tr('Fattura di vendita').'
</a>
</ul>
</div>
</div>';
*/
Loading

0 comments on commit 312f69b

Please sign in to comment.