mirror of
https://github.com/devcode-it/openstamanager.git
synced 2024-12-22 21:28:08 +01:00
Bugfix vari
This commit is contained in:
parent
cd4729a091
commit
42b4d351a9
@ -447,9 +447,9 @@ function aggiungi_intervento_in_fattura($id_intervento, $id_fattura, $descrizion
|
||||
'tipo_sconto' => 'UNT',
|
||||
'um' => '-',
|
||||
'qta' => $rst[$i]['qta'],
|
||||
'idrivalsainps' => $id_rivalsa_inps,
|
||||
'idrivalsainps' => $id_rivalsa_inps ?: 0,
|
||||
'rivalsainps' => $rivalsainps,
|
||||
'idritenutaacconto' => $id_ritenuta_acconto,
|
||||
'idritenutaacconto' => $id_ritenuta_acconto ?: 0,
|
||||
'ritenutaacconto' => $ritenutaacconto,
|
||||
'order' => orderValue('co_righe_documenti', 'iddocumento', $id_fattura),
|
||||
]);
|
||||
|
@ -11,6 +11,9 @@ switch (filter('op')) {
|
||||
$percentuale = empty($esente) ? post('percentuale') : 0;
|
||||
|
||||
if ($dbo->fetchNum('SELECT * FROM `co_iva` WHERE (`descrizione` = '.prepare($descrizione).' OR `codice` = '.prepare($codice).') AND `id` != '.prepare($id_record)) == 0) {
|
||||
$codice_natura = post('codice_natura_fe');
|
||||
$esigibilita = post('esigibilita');
|
||||
|
||||
$dbo->update('co_iva', [
|
||||
'descrizione' => $descrizione,
|
||||
'esente' => $esente,
|
||||
@ -18,9 +21,15 @@ switch (filter('op')) {
|
||||
'indetraibile' => post('indetraibile'),
|
||||
'dicitura' => post('dicitura'),
|
||||
'codice' => $codice,
|
||||
'codice_natura_fe' => post('codice_natura_fe'),
|
||||
'codice_natura_fe' => $codice_natura,
|
||||
'esigibilita' => $esigibilita,
|
||||
], ['id' => $id_record]);
|
||||
|
||||
// Messaggio di avvertenza
|
||||
if ($codice_natura == 'N6' && $esigibilita == 'S') {
|
||||
flash()->warning(tr('Combinazione di natura IVA N6 ed esigibilità non compatibile!'));
|
||||
}
|
||||
|
||||
flash()->info(tr('Salvataggio completato!'));
|
||||
} else {
|
||||
flash()->error(tr("E' già presente una tipologia di _TYPE_ con la stesse caratteristiche!", [
|
||||
|
@ -2,6 +2,21 @@
|
||||
|
||||
include_once __DIR__.'/../../core.php';
|
||||
|
||||
$esigibilita = [
|
||||
[
|
||||
'id' => 'I',
|
||||
'text' => tr('IVA ad esigibilità immediata'),
|
||||
],
|
||||
[
|
||||
'id' => 'D',
|
||||
'text' => tr('IVA ad esigibilità differita'),
|
||||
],
|
||||
[
|
||||
'id' => 'S',
|
||||
'text' => tr('Scissione dei pagamenti'),
|
||||
],
|
||||
];
|
||||
|
||||
?><form action="" method="post" id="edit-form">
|
||||
<input type="hidden" name="backto" value="record-edit">
|
||||
<input type="hidden" name="op" value="update">
|
||||
@ -34,13 +49,17 @@ include_once __DIR__.'/../../core.php';
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="col-md-4">
|
||||
{[ "type": "text", "label": "<?php echo tr('Codice'); ?>", "name": "codice", "value": "$codice$" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
<div class="col-md-4">
|
||||
{[ "type": "select", "label": "<?php echo tr('Codice Natura (Fatturazione Elettronica)'); ?>", "name": "codice_natura_fe", "value": "$codice_natura_fe$", "values": "query=SELECT codice as id, CONCAT(codice, ' - ', descrizione) AS descrizione FROM fe_natura" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
{[ "type": "select", "label": "<?php echo tr('Esigibilità'); ?>", "name": "esigibilita", "value": "$esigibilita$", "values": <?php echo json_encode($esigibilita); ?> ]}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
|
@ -488,10 +488,15 @@ class FatturaElettronica
|
||||
$dettaglio = [
|
||||
'NumeroLinea' => $numero + 1,
|
||||
'Descrizione' => $riga['descrizione'],
|
||||
'Quantita' => $riga['qta'],
|
||||
'PrezzoUnitario' => $prezzo_unitario,
|
||||
'Quantita' => $riga['qta']
|
||||
];
|
||||
|
||||
if (!empty($riga['um'])) {
|
||||
$dettaglio['UnitaMisura']= $riga['um'];
|
||||
}
|
||||
|
||||
$dettaglio['PrezzoUnitario']= $prezzo_unitario;
|
||||
|
||||
// Sconto
|
||||
$riga['sconto_unitario'] = floatval($riga['sconto_unitario']);
|
||||
if (!empty($riga['sconto_unitario'])) {
|
||||
@ -524,32 +529,40 @@ class FatturaElettronica
|
||||
];
|
||||
}
|
||||
|
||||
// Riepiloghi per IVA
|
||||
// TODO: risolvere di conseguenza alla Natura IVA
|
||||
$riepiloghi_percentuale = $database->fetchArray('SELECT SUM(`co_righe_documenti`.`subtotale` - `co_righe_documenti`.`sconto`) as totale, SUM(`co_righe_documenti`.`iva`) as iva, `co_iva`.`percentuale` FROM `co_righe_documenti` INNER JOIN `co_iva` ON `co_iva`.`id` = `co_righe_documenti`.`idiva` WHERE `co_righe_documenti`.`iddocumento` = '.prepare($documento['id']).' AND
|
||||
// Riepiloghi per IVA per percentuale
|
||||
$riepiloghi_percentuale = $database->fetchArray('SELECT SUM(`co_righe_documenti`.`subtotale` - `co_righe_documenti`.`sconto`) as totale, SUM(`co_righe_documenti`.`iva`) as iva, `co_iva`.`percentuale`, `co_iva`.`dicitura` FROM `co_righe_documenti` INNER JOIN `co_iva` ON `co_iva`.`id` = `co_righe_documenti`.`idiva` WHERE `co_righe_documenti`.`iddocumento` = '.prepare($documento['id']).' AND
|
||||
`co_iva`.`codice_natura_fe` IS NULL GROUP BY `co_iva`.`percentuale`');
|
||||
foreach ($riepiloghi_percentuale as $riepilogo) {
|
||||
$iva = [
|
||||
'AliquotaIVA' => $riepilogo['percentuale'],
|
||||
'ImponibileImporto' => $riepilogo['totale'],
|
||||
'Imposta' => $riepilogo['iva'],
|
||||
'EsigibilitaIVA' => $riepilogo['esigibilita'],
|
||||
];
|
||||
|
||||
if (!empty($riepilogo['dicitura'])) {
|
||||
$iva['RiferimentoNormativo'] = $riepilogo['dicitura'];
|
||||
}
|
||||
|
||||
$result[] = [
|
||||
'DatiRiepilogo' => [
|
||||
'AliquotaIVA' => $riepilogo['percentuale'],
|
||||
'ImponibileImporto' => $riepilogo['totale'],
|
||||
'Imposta' => $riepilogo['iva'],
|
||||
'EsigibilitaIVA' => 'I',
|
||||
],
|
||||
'DatiRiepilogo' => $iva
|
||||
];
|
||||
}
|
||||
|
||||
// Riepiloghi per IVA per natura
|
||||
$riepiloghi_natura = $database->fetchArray('SELECT SUM(`co_righe_documenti`.`subtotale` - `co_righe_documenti`.`sconto`) as totale, SUM(`co_righe_documenti`.`iva`) as iva, `co_iva`.`codice_natura_fe` FROM `co_righe_documenti` INNER JOIN `co_iva` ON `co_iva`.`id` = `co_righe_documenti`.`idiva` WHERE `co_righe_documenti`.`iddocumento` = '.prepare($documento['id']).' AND
|
||||
`co_iva`.`codice_natura_fe` IS NOT NULL GROUP BY `co_iva`.`codice_natura_fe`');
|
||||
foreach ($riepiloghi_natura as $riepilogo) {
|
||||
$iva = [
|
||||
'AliquotaIVA' => 0,
|
||||
'Natura' => $riepilogo['codice_natura_fe'],
|
||||
'ImponibileImporto' => $riepilogo['totale'],
|
||||
'Imposta' => $riepilogo['iva'],
|
||||
'EsigibilitaIVA' => $riepilogo['esigibilita'],
|
||||
];
|
||||
|
||||
$result[] = [
|
||||
'DatiRiepilogo' => [
|
||||
'AliquotaIVA' => 0,
|
||||
'Natura' => $riepilogo['codice_natura_fe'],
|
||||
'ImponibileImporto' => $riepilogo['totale'],
|
||||
'Imposta' => $riepilogo['iva'],
|
||||
'EsigibilitaIVA' => 'I',
|
||||
],
|
||||
'DatiRiepilogo' => $iva
|
||||
];
|
||||
}
|
||||
|
||||
@ -597,6 +610,10 @@ class FatturaElettronica
|
||||
{
|
||||
$documento = $fattura->getDocumento();
|
||||
|
||||
if (!setting('Aggiungere stampa nella Fattura Elettronica')) {
|
||||
return [];
|
||||
}
|
||||
|
||||
$id_module = Modules::get('Fatture di vendita')['id'];
|
||||
$dir = Uploads::getDirectory($id_module, Plugins::get('Fatturazione Elettronica')['id']);
|
||||
|
||||
@ -649,9 +666,13 @@ class FatturaElettronica
|
||||
'DatiGenerali' => static::getDatiGenerali($fattura),
|
||||
'DatiBeniServizi' => static::getDatiBeniServizi($fattura),
|
||||
'DatiPagamento' => static::getDatiPagamento($fattura),
|
||||
'Allegati' => static::getAllegati($fattura),
|
||||
];
|
||||
|
||||
$allegati = static::getAllegati($fattura);
|
||||
if (!empty($allegati)) {
|
||||
$result['Allegati'] = $allegati;
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
@ -734,8 +755,8 @@ class FatturaElettronica
|
||||
return null;
|
||||
}
|
||||
|
||||
// Localhost: ['curl' => [CURLOPT_SSL_VERIFYPEER => false]]
|
||||
$client = new Client();
|
||||
// Localhost:
|
||||
$client = new Client(['curl' => [CURLOPT_SSL_VERIFYPEER => false]]);
|
||||
|
||||
$response = $client->request('POST', 'https://www.indicepa.gov.it/public-ws/WS01_SFE_CF.php', [
|
||||
'form_params' => [
|
||||
@ -832,8 +853,7 @@ class FatturaElettronica
|
||||
$cliente = $this->getCliente();
|
||||
|
||||
// Inizializzazione libreria per la generazione della fattura in XML
|
||||
//, ['stylesheet' => 'http://www.fatturapa.gov.it/export/fatturazione/sdi/fatturapa/v1.2.1/fatturaPA_v1.2.1.xsl']
|
||||
$fattura = new FluidXml(null);
|
||||
$fattura = new FluidXml(null, ['stylesheet' => 'http://www.fatturapa.gov.it/export/fatturazione/sdi/fatturapa/v1.2.1/fatturaPA_v1.2.1.xsl']);
|
||||
|
||||
// Generazione dell'elemento root
|
||||
$fattura->namespace('p', 'http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2');
|
||||
|
@ -29,6 +29,8 @@ UPDATE `zz_modules` `t1` INNER JOIN `zz_modules` `t2` ON (`t1`.`name` = 'Categor
|
||||
ALTER TABLE `an_nazioni` ADD `name` VARCHAR(255);
|
||||
ALTER TABLE `co_documenti` ADD `codice_xml` VARCHAR(255);
|
||||
|
||||
INSERT INTO `zz_settings` (`idimpostazione`, `nome`, `valore`, `tipo`, `editable`, `sezione`, `order`) VALUES (NULL, 'Aggiungere stampa nella Fattura Elettronica', '0', 'boolean', 1, 'Generali', 20);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `fe_regime_fiscale` (
|
||||
`codice` varchar(4) NOT NULL,
|
||||
`descrizione` varchar(255) NOT NULL,
|
||||
@ -163,7 +165,7 @@ INSERT INTO `fe_natura` (`codice`, `descrizione`) VALUES
|
||||
('N6','Inversione contabile (per le operazioni in reverse charge ovvero nei casi di autofatturazione per acquisti extra UE di servizi ovvero per importazioni di beni nei soli casi previsti)'),
|
||||
('N7','IVA assolta in altro stato UE (vendite a distanza ex art. 40 c. 3 e 4 e art. 41 c. 1 lett. b, DL 331/93; prestazione di servizi di telecomunicazioni, tele-radiodiffusione ed elettronici ex art. 7-sexies lett. f, g, art. 74-sexies DPR 633/72)');
|
||||
|
||||
ALTER TABLE `co_iva` ADD `codice_natura_fe` varchar(4), ADD `deleted_at` timestamp NULL DEFAULT NULL, ADD `codice` int(11), ADD `default` boolean NOT NULL DEFAULT 0, ADD FOREIGN KEY (`codice_natura_fe`) REFERENCES `fe_natura`(`codice`) ON DELETE CASCADE;
|
||||
ALTER TABLE `co_iva` ADD `codice_natura_fe` varchar(4), ADD `deleted_at` timestamp NULL DEFAULT NULL, ADD `codice` int(11), ADD `esigibilita` enum('I', 'D', 'S') NOT NULL DEFAULT 'I', ADD `default` boolean NOT NULL DEFAULT 0, ADD FOREIGN KEY (`codice_natura_fe`) REFERENCES `fe_natura`(`codice`) ON DELETE CASCADE;
|
||||
UPDATE `co_iva` SET `deleted_at` = NOW();
|
||||
|
||||
UPDATE `zz_modules` SET `options` = 'SELECT |select| FROM `co_iva` WHERE 1=1 AND deleted_at IS NULL HAVING 2=2' WHERE `name` = 'IVA';
|
||||
|
Loading…
Reference in New Issue
Block a user