1
0
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:
Thomas Zilio 2018-11-09 10:49:21 +01:00
parent cd4729a091
commit 42b4d351a9
5 changed files with 79 additions and 29 deletions

View File

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

View File

@ -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!", [

View File

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

View File

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

View File

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