mirror of
https://github.com/devcode-it/openstamanager.git
synced 2025-02-23 14:57:46 +01:00
Codice CUP, CIG e contratto in FE
This commit is contained in:
parent
e3e7387b22
commit
083dcaa518
@ -80,7 +80,7 @@ switch (post('op')) {
|
||||
$codice_cig = post('codice_cig');
|
||||
$codice_cup = post('codice_cup');
|
||||
|
||||
$query = 'UPDATE co_contratti SET idanagrafica='.prepare($idanagrafica).', idsede='.prepare($idsede).', idstato='.prepare($idstato).', nome='.prepare($nome).', idagente='.prepare($idagente).', idpagamento='.prepare($idpagamento).', numero='.prepare($numero).', budget='.prepare($budget).', idreferente='.prepare($idreferente).', validita='.prepare($validita).', data_bozza='.prepare($data_bozza).', data_accettazione='.prepare($data_accettazione).', data_rifiuto='.prepare($data_rifiuto).', data_conclusione='.prepare($data_conclusione).', rinnovabile='.prepare($rinnovabile).', giorni_preavviso_rinnovo='.prepare($giorni_preavviso_rinnovo).', esclusioni='.prepare($esclusioni).', descrizione='.prepare($descrizione).', codice_cig='.prepare($codice_cig).', codice_cup='.prepare($codice_cup).' WHERE id='.prepare($id_record);
|
||||
$query = 'UPDATE co_contratti SET idanagrafica='.prepare($idanagrafica).', idsede='.prepare($idsede).', idstato='.prepare($idstato).', nome='.prepare($nome).', idagente='.prepare($idagente).', idpagamento='.prepare($idpagamento).', numero='.prepare($numero).', budget='.prepare($budget).', idreferente='.prepare($idreferente).', validita='.prepare($validita).', data_bozza='.prepare($data_bozza).', data_accettazione='.prepare($data_accettazione).', data_rifiuto='.prepare($data_rifiuto).', data_conclusione='.prepare($data_conclusione).', rinnovabile='.prepare($rinnovabile).', giorni_preavviso_rinnovo='.prepare($giorni_preavviso_rinnovo).', esclusioni='.prepare($esclusioni).', descrizione='.prepare($descrizione).', id_documento_fe='.prepare(post('id_documento_fe')).', codice_cig='.prepare($codice_cig).', codice_cup='.prepare($codice_cup).' WHERE id='.prepare($id_record);
|
||||
// costo_diritto_chiamata='.prepare($costo_diritto_chiamata).', ore_lavoro='.prepare($ore_lavoro).', costo_orario='.prepare($costo_orario).', costo_km='.prepare($costo_km).'
|
||||
|
||||
$dbo->query($query);
|
||||
|
@ -65,32 +65,20 @@ $_SESSION['superselect']['idanagrafica'] = $record['idanagrafica'];
|
||||
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-2">
|
||||
<div class="col-md-4">
|
||||
{[ "type": "number", "label": "<?php echo tr('Validità'); ?>", "name": "validita", "decimals": "0", "value": "$validita$", "icon-after": "giorni" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<div class="col-md-4">
|
||||
{[ "type": "checkbox", "label": "<?php echo tr('Rinnovabile'); ?>", "name": "rinnovabile", "help": "<?php echo tr('Il contratto è rinnovabile?'); ?>", "value": "$rinnovabile$" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<div class="col-md-4">
|
||||
{[ "type": "number", "label": "<?php echo tr('Preavviso per rinnovo'); ?>", "name": "giorni_preavviso_rinnovo", "decimals": "0", "value": "$giorni_preavviso_rinnovo$", "icon-after": "giorni", "disabled": <?php echo $record['rinnovabile'] ? 0 : 1; ?> ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-3">
|
||||
{[ "type": "text", "label": "<?php echo tr('Codice CIG'); ?>", "name": "codice_cig", "required": 0, "value": "$codice_cig$", "maxlength": 15 ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-3">
|
||||
{[ "type": "text", "label": "<?php echo tr('Codice CUP'); ?>", "name": "codice_cup", "required": 0, "value": "$codice_cup$", "maxlength": 15 ]}
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
|
||||
|
||||
<div class="col-md-3">
|
||||
{[ "type": "date", "label": "<?php echo tr('Data bozza'); ?>", "name": "data_bozza", "value": "$data_bozza$" ]}
|
||||
</div>
|
||||
@ -145,6 +133,29 @@ if ($record['stato'] == 'Emessa') {
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Fatturazione Elettronica -->
|
||||
<div class="panel panel-primary">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title"><?php echo tr('Dati Fatturazione Elettronica'); ?></h3>
|
||||
</div>
|
||||
|
||||
<div class="panel-body">
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
{[ "type": "text", "label": "<?php echo tr('Identificatore Documento'); ?>", "name": "id_documento_fe", "required": 0, "value": "$id_documento_fe$", "maxlength": 20 ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
{[ "type": "text", "label": "<?php echo tr('Codice CIG'); ?>", "name": "codice_cig", "required": 0, "value": "$codice_cig$", "maxlength": 15 ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
{[ "type": "text", "label": "<?php echo tr('Codice CUP'); ?>", "name": "codice_cup", "required": 0, "value": "$codice_cup$", "maxlength": 15 ]}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- COSTI -->
|
||||
<div class="panel panel-primary">
|
||||
<div class="panel-heading">
|
||||
|
@ -77,6 +77,10 @@ switch (post('op')) {
|
||||
|
||||
'sconto_globale' => $sconto,
|
||||
'tipo_sconto_globale' => $tipo_sconto,
|
||||
|
||||
'id_documento_fe' => post('id_documento_fe'),
|
||||
'codice_cup' => post('codice_cup'),
|
||||
'codice_cig' => post('codice_cig'),
|
||||
], ['id' => $id_record]);
|
||||
|
||||
$stato = $dbo->selectOne('in_statiintervento', '*', ['idstatointervento' => post('idstatointervento')]);
|
||||
|
@ -81,8 +81,6 @@ $_SESSION['superselect']['idanagrafica'] = $record['idanagrafica'];
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<!-- DATI INTERVENTO -->
|
||||
<div class="panel panel-primary">
|
||||
<div class="panel-heading">
|
||||
@ -142,6 +140,36 @@ $_SESSION['superselect']['idanagrafica'] = $record['idanagrafica'];
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php
|
||||
|
||||
if (empty($record['idcontratto'])) {
|
||||
?>
|
||||
<!-- Fatturazione Elettronica -->
|
||||
<div class="panel panel-primary">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title"><?php echo tr('Dati Fatturazione Elettronica'); ?></h3>
|
||||
</div>
|
||||
|
||||
<div class="panel-body">
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
{[ "type": "text", "label": "<?php echo tr('Identificatore Documento'); ?>", "name": "id_documento_fe", "required": 0, "value": "$id_documento_fe$", "maxlength": 20, "readonly": "<?php echo $record['flag_completato']; ?>" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
{[ "type": "text", "label": "<?php echo tr('Codice CIG'); ?>", "name": "codice_cig", "required": 0, "value": "$codice_cig$", "maxlength": 15, "readonly": "<?php echo $record['flag_completato']; ?>" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
{[ "type": "text", "label": "<?php echo tr('Codice CUP'); ?>", "name": "codice_cup", "required": 0, "value": "$codice_cup$", "maxlength": 15, "readonly": "<?php echo $record['flag_completato']; ?>" ]}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
|
||||
<!-- ORE LAVORO -->
|
||||
<div class="panel panel-primary">
|
||||
<div class="panel-heading">
|
||||
|
@ -58,7 +58,7 @@ $esigibilita = [
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
{[ "type": "select", "label": "<?php echo tr('Esigibilità'); ?>", "name": "esigibilita", "value": "$esigibilita$", "values": <?php echo json_encode($esigibilita); ?>, "required": 1 ]}
|
||||
{[ "type": "select", "label": "<?php echo tr('Esigibilità (Fatturazione Elettronica)'); ?>", "name": "esigibilita", "value": "$esigibilita$", "values": <?php echo json_encode($esigibilita); ?>, "required": 1 ]}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -29,6 +29,11 @@ class FatturaElettronica
|
||||
/** @var array Informazioni sul documento */
|
||||
protected $documento = [];
|
||||
|
||||
/** @var array Contratti collegati al documento */
|
||||
protected $contratti = [];
|
||||
/** @var array Righe del documento */
|
||||
protected $righe = [];
|
||||
|
||||
/** @var array Stato di validazione interna dell'XML della fattura */
|
||||
protected $is_valid = null;
|
||||
/** @var array XML della fattura */
|
||||
@ -98,7 +103,32 @@ class FatturaElettronica
|
||||
*/
|
||||
public function getRighe()
|
||||
{
|
||||
return database()->fetchArray('SELECT * FROM `co_righe_documenti` WHERE `sconto_globale` = 0 AND is_descrizione = 0 AND `iddocumento` = '.prepare($this->getDocumento()['id']));
|
||||
if (empty($this->righe)) {
|
||||
$this->righe = database()->fetchArray('SELECT * FROM `co_righe_documenti` WHERE `sconto_globale` = 0 AND is_descrizione = 0 AND `iddocumento` = '.prepare($this->getDocumento()['id']));
|
||||
}
|
||||
|
||||
return $this->righe;
|
||||
}
|
||||
|
||||
/**
|
||||
* Restituisce i contratti collegati al documento (contratti e interventi).
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getContratti()
|
||||
{
|
||||
if (empty($this->contratti)) {
|
||||
$documento = $this->getDocumento();
|
||||
$database = database();
|
||||
|
||||
$contratti = $database->fetchArray('SELECT `id_documento_fe`, `codice_cig`, `codice_cup` FROM `co_contratti` INNER JOIN `co_righe_documenti` ON `co_righe_documenti`.`idcontratto` = `co_contratti`.`id` WHERE `co_righe_documenti`.`iddocumento` = '.prepare($documento['id']).' AND `id_documento_fe` IS NOT NULL');
|
||||
|
||||
$interventi = $database->fetchArray('SELECT `id_documento_fe`, `codice_cig`, `codice_cup` FROM `in_interventi` INNER JOIN `co_righe_documenti` ON `co_righe_documenti`.`idintervento` = `in_interventi`.`id` WHERE `co_righe_documenti`.`iddocumento` = '.prepare($documento['id']).' AND `id_documento_fe` IS NOT NULL');
|
||||
|
||||
$this->contratti = array_merge($contratti, $interventi);
|
||||
}
|
||||
|
||||
return $this->contratti;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -199,8 +229,6 @@ class FatturaElettronica
|
||||
|
||||
// Informazioni specifiche azienda
|
||||
if ($azienda) {
|
||||
// TODO: AlboProfessionale, ProvinciaAlbo, NumeroIscrizioneAlbo, DataIscrizioneAlbo
|
||||
|
||||
$result['RegimeFiscale'] = setting('Regime Fiscale');
|
||||
}
|
||||
|
||||
@ -242,7 +270,6 @@ class FatturaElettronica
|
||||
$result = [
|
||||
'DatiAnagrafici' => static::getDatiAnagrafici($azienda, true),
|
||||
'Sede' => static::getSede($azienda),
|
||||
// TODO: StabileOrganizzazione,
|
||||
];
|
||||
|
||||
// IscrizioneREA
|
||||
@ -278,8 +305,6 @@ class FatturaElettronica
|
||||
$result['Contatti']['Email'] = $azienda['email'];
|
||||
}
|
||||
|
||||
// TODO: RiferimentoAmministrazione
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
@ -295,7 +320,6 @@ class FatturaElettronica
|
||||
$result = [
|
||||
'DatiAnagrafici' => static::getDatiAnagrafici($cliente),
|
||||
'Sede' => static::getSede($cliente),
|
||||
// TODO: StabileOrganizzazione, RappresentanteFiscale
|
||||
];
|
||||
|
||||
return $result;
|
||||
@ -316,8 +340,7 @@ class FatturaElettronica
|
||||
'Divisa' => 'EUR',
|
||||
'Data' => $documento['data'],
|
||||
'Numero' => $documento['numero_esterno'],
|
||||
//'Causale' => $documento['causale'],
|
||||
// TODO: vari
|
||||
// TODO: 'Causale' => $documento['causale'],
|
||||
];
|
||||
|
||||
// Ritenuta d'Acconto
|
||||
@ -403,30 +426,23 @@ class FatturaElettronica
|
||||
*/
|
||||
protected static function getDatiContratto($fattura)
|
||||
{
|
||||
$documento = $fattura->getDocumento();
|
||||
$righe_documento = $fattura->getRighe();
|
||||
$database = database();
|
||||
$contratti = $fattura->getContratti();
|
||||
|
||||
$result = [];
|
||||
|
||||
foreach ($righe_documento as $riga) {
|
||||
if (!empty($riga['idcontratto'])) {
|
||||
$numero_contratto = $database->fetchOne('SELECT numero FROM co_contratti WHERE id = '.prepare($riga['idcontratto']))['numero'];
|
||||
$codice_cig = $database->fetchOne('SELECT codice_cig FROM co_contratti WHERE id = '.prepare($riga['idcontratto']))['codice_cig'];
|
||||
$codice_cup = $database->fetchOne('SELECT codice_cup FROM co_contratti WHERE id = '.prepare($riga['idcontratto']))['codice_cup'];
|
||||
|
||||
$result[] = [
|
||||
'IdDocumento' => $numero_contratto,
|
||||
foreach ($contratti as $contratto) {
|
||||
$dati_contratto = [
|
||||
'IdDocumento' => $contratto['id_documento_fe'],
|
||||
];
|
||||
|
||||
if (!empty($codice_cig)) {
|
||||
$result['CodiceCIG'] = $codice_cig;
|
||||
if (!empty($contratto['codice_cig'])) {
|
||||
$dati_contratto['CodiceCIG'] = $contratto['codice_cig'];
|
||||
}
|
||||
|
||||
if (!empty($codice_cup)) {
|
||||
$result['CodiceCUP'] = $codice_cup;
|
||||
}
|
||||
if (!empty($contratto['codice_cup'])) {
|
||||
$dati_contratto['CodiceCUP'] = $contratto['codice_cup'];
|
||||
}
|
||||
|
||||
$result[] = $dati_contratto;
|
||||
}
|
||||
|
||||
return $result;
|
||||
@ -444,15 +460,15 @@ class FatturaElettronica
|
||||
|
||||
$result = [
|
||||
'DatiGeneraliDocumento' => static::getDatiGeneraliDocumento($fattura),
|
||||
// TODO: DatiOrdineAcquisto, DatiContratto, DatiConvenzione, DatiRicezione, DatiFattureCollegate, DatiSAL, DatiDDT, FatturaPrincipale
|
||||
];
|
||||
|
||||
// Aggiungo nodo codice cig, cup solo per enti pubblici
|
||||
if ($cliente['tipo'] == 'Ente pubblico') {
|
||||
// Controllo le le righe per la fatturazione di contratti
|
||||
$dati_contratto = static::getDatiContratto($fattura);
|
||||
if (!empty($dati_contratto)) {
|
||||
$result['DatiContratto'] = $dati_contratto;
|
||||
$dati_contratti = static::getDatiContratto($fattura);
|
||||
if (!empty($dati_contratti)) {
|
||||
foreach($dati_contratti as $dato){
|
||||
$result[] = [
|
||||
'DatiContratto' => $dato,
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@ -540,8 +556,10 @@ class FatturaElettronica
|
||||
'EsigibilitaIVA' => $riepilogo['esigibilita'],
|
||||
];
|
||||
|
||||
// TODO: la dicitura può essere diversa tra diverse IVA con stessa percentuale/natura
|
||||
// nei riepiloghi viene fatto un accorpamento percentuale/natura
|
||||
if (!empty($riepilogo['dicitura'])) {
|
||||
$iva['RiferimentoNormativo'] = $riepilogo['dicitura'];
|
||||
//$iva['RiferimentoNormativo'] = $riepilogo['dicitura'];
|
||||
}
|
||||
|
||||
$result[] = [
|
||||
|
@ -600,8 +600,8 @@ UPDATE `zz_plugins` SET `options` = ' { "main_query": [ { "type": "table", "fiel
|
||||
UPDATE `zz_plugins` SET `options` = ' { "main_query": [ { "type": "table", "fields": "Numero, Data, Descrizione, Qtà", "query": "SELECT dt_ddt.id, (SELECT `id` FROM `zz_modules` WHERE `name` = \'Ddt di vendita\') AS _link_module_, dt_ddt.id AS _link_record_, IF(dt_ddt.numero_esterno = \'\', dt_ddt.numero, dt_ddt.numero_esterno) AS Numero, DATE_FORMAT(dt_ddt.data, \'%d/%m/%Y\') AS Data, dt_righe_ddt.descrizione AS `Descrizione`, REPLACE(REPLACE(REPLACE(FORMAT(dt_righe_ddt.qta, 2), \',\', \'#\'), \'.\', \',\'), \'#\', \'.\') AS `Qtà` FROM dt_ddt LEFT JOIN dt_righe_ddt ON dt_ddt.id=dt_righe_ddt.idddt WHERE dt_ddt.idanagrafica=|id_parent| GROUP BY dt_ddt.id HAVING 2=2 ORDER BY dt_ddt.id DESC"} ]}' WHERE `zz_plugins`.`name` = 'Ddt del cliente';
|
||||
|
||||
-- Aggiunto codice cig e codice cup per contratti
|
||||
ALTER TABLE `co_contratti` ADD `codice_cig` VARCHAR(15) NOT NULL AFTER `tipo_sconto_globale`;
|
||||
ALTER TABLE `co_contratti` ADD `codice_cup` VARCHAR(15) NOT NULL AFTER `codice_cig`;
|
||||
ALTER TABLE `co_contratti` ADD `codice_cig` VARCHAR(15) AFTER `tipo_sconto_globale`, ADD `codice_cup` VARCHAR(15) AFTER `codice_cig`, ADD `id_documento_fe` VARCHAR(20) AFTER `codice_cup`;
|
||||
ALTER TABLE `in_interventi` ADD `codice_cig` VARCHAR(15) AFTER `tipo_sconto_globale`, ADD `codice_cup` VARCHAR(15) AFTER `codice_cig`, ADD `id_documento_fe` VARCHAR(20) AFTER `codice_cup`;
|
||||
|
||||
-- Agiunta data e ora generazione fattura elettronica
|
||||
ALTER TABLE `co_documenti` ADD `xml_generated_at` TIMESTAMP NULL AFTER `codice_xml`;
|
||||
|
Loading…
x
Reference in New Issue
Block a user