mirror of
https://github.com/devcode-it/openstamanager.git
synced 2025-06-05 22:09:38 +02:00
Terminata gestione xml con Terzo intermediario
This commit is contained in:
@ -410,6 +410,6 @@ function operationLog($operation, array $ids = [], array $options = [])
|
|||||||
*
|
*
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
function clean($string, $permitted) {
|
function clean($string, $permitted = '') {
|
||||||
return preg_replace('/[^A-Za-z0-9'.$permitted.']/', '', $string); // Removes special chars.
|
return preg_replace('/[^A-Za-z0-9'.$permitted.']/', '', $string); // Removes special chars.
|
||||||
}
|
}
|
||||||
|
@ -38,8 +38,8 @@ $d1 = new DateTime($start);
|
|||||||
$d2 = new DateTime($end);
|
$d2 = new DateTime($end);
|
||||||
$count = $d1->diff($d2)->m + ($d1->diff($d2)->y * 12) + 1;
|
$count = $d1->diff($d2)->m + ($d1->diff($d2)->y * 12) + 1;
|
||||||
|
|
||||||
$fatturato = $dbo->fetchArray("SELECT SUM(co_righe_documenti.subtotale - co_righe_documenti.sconto) AS totale, YEAR(co_documenti.data) AS year, MONTH(co_documenti.data) AS month FROM co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id INNER JOIN co_righe_documenti ON co_righe_documenti.iddocumento=co_documenti.id WHERE co_tipidocumento.dir='entrata' AND co_tipidocumento.descrizione!='Bozza' AND co_documenti.data BETWEEN ".prepare($start).' AND '.prepare($end).' GROUP BY YEAR(co_documenti.data), MONTH(co_documenti.data) ORDER BY YEAR(co_documenti.data) ASC, MONTH(co_documenti.data) ASC');
|
$fatturato = $dbo->fetchArray("SELECT ROUND(SUM(co_righe_documenti.subtotale - co_righe_documenti.sconto), 2) AS totale, YEAR(co_documenti.data) AS year, MONTH(co_documenti.data) AS month FROM co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id INNER JOIN co_righe_documenti ON co_righe_documenti.iddocumento=co_documenti.id WHERE co_tipidocumento.dir='entrata' AND co_tipidocumento.descrizione!='Bozza' AND co_documenti.data BETWEEN ".prepare($start).' AND '.prepare($end).' GROUP BY YEAR(co_documenti.data), MONTH(co_documenti.data) ORDER BY YEAR(co_documenti.data) ASC, MONTH(co_documenti.data) ASC');
|
||||||
$acquisti = $dbo->fetchArray("SELECT SUM(co_righe_documenti.subtotale - co_righe_documenti.sconto) AS totale, YEAR(co_documenti.data) AS year, MONTH(co_documenti.data) AS month FROM co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id INNER JOIN co_righe_documenti ON co_righe_documenti.iddocumento=co_documenti.id WHERE co_tipidocumento.dir='uscita' AND co_tipidocumento.descrizione!='Bozza' AND co_documenti.data BETWEEN ".prepare($start).' AND '.prepare($end).' GROUP BY YEAR(co_documenti.data), MONTH(co_documenti.data) ORDER BY YEAR(co_documenti.data) ASC, MONTH(co_documenti.data) ASC');
|
$acquisti = $dbo->fetchArray("SELECT ROUND(SUM(co_righe_documenti.subtotale - co_righe_documenti.sconto), 2) AS totale, YEAR(co_documenti.data) AS year, MONTH(co_documenti.data) AS month FROM co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id INNER JOIN co_righe_documenti ON co_righe_documenti.iddocumento=co_documenti.id WHERE co_tipidocumento.dir='uscita' AND co_tipidocumento.descrizione!='Bozza' AND co_documenti.data BETWEEN ".prepare($start).' AND '.prepare($end).' GROUP BY YEAR(co_documenti.data), MONTH(co_documenti.data) ORDER BY YEAR(co_documenti.data) ASC, MONTH(co_documenti.data) ASC');
|
||||||
|
|
||||||
$month = intval($d1->format('m')) - 1;
|
$month = intval($d1->format('m')) - 1;
|
||||||
for ($i = 0; $i < $count; ++$i) {
|
for ($i = 0; $i < $count; ++$i) {
|
||||||
@ -85,14 +85,14 @@ $(document).ready(function() {
|
|||||||
labels: months,
|
labels: months,
|
||||||
datasets: [
|
datasets: [
|
||||||
{
|
{
|
||||||
label: "'.tr('Fatturato').'",
|
label: "'.tr('Fatturato (iva esclusa)').'",
|
||||||
backgroundColor: "#63E360",
|
backgroundColor: "#63E360",
|
||||||
data: [
|
data: [
|
||||||
'.implode(',', array_column($fatturato, 'totale')).'
|
'.implode(',', array_column($fatturato, 'totale')).'
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: "'.tr('Acquisti').'",
|
label: "'.tr('Acquisti (iva esclusa)').'",
|
||||||
backgroundColor: "#EE4B4B",
|
backgroundColor: "#EE4B4B",
|
||||||
data: [
|
data: [
|
||||||
'.implode(',', array_column($acquisti, 'totale')).'
|
'.implode(',', array_column($acquisti, 'totale')).'
|
||||||
@ -105,6 +105,16 @@ $(document).ready(function() {
|
|||||||
legend: {
|
legend: {
|
||||||
position: "bottom",
|
position: "bottom",
|
||||||
},
|
},
|
||||||
|
scales: {
|
||||||
|
yAxes: [{
|
||||||
|
ticks: {
|
||||||
|
// Include a dollar sign in the ticks
|
||||||
|
callback: function(value, index, values) {
|
||||||
|
return \'€ \' + value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
},
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -286,8 +286,13 @@ class FatturaElettronica
|
|||||||
*/
|
*/
|
||||||
public function getFilename($new = false)
|
public function getFilename($new = false)
|
||||||
{
|
{
|
||||||
$azienda = static::getAzienda();
|
|
||||||
$prefix = 'IT'.(!empty($azienda['codice_fiscale']) ? $azienda['codice_fiscale'] : $azienda['piva']);
|
if (!empty(setting('Terzo intermediario')))
|
||||||
|
$anagrafica = Anagrafica::find(setting('Terzo intermediario'));
|
||||||
|
else
|
||||||
|
$anagrafica = static::getAzienda();
|
||||||
|
|
||||||
|
$prefix = 'IT'.(!empty($anagrafica['codice_fiscale']) ? $anagrafica['codice_fiscale'] : $anagrafica['piva']);
|
||||||
|
|
||||||
if (empty($this->documento['progressivo_invio']) || !empty($new)) {
|
if (empty($this->documento['progressivo_invio']) || !empty($new)) {
|
||||||
$database = database();
|
$database = database();
|
||||||
@ -355,7 +360,12 @@ class FatturaElettronica
|
|||||||
*/
|
*/
|
||||||
protected static function getDatiTrasmissione($fattura)
|
protected static function getDatiTrasmissione($fattura)
|
||||||
{
|
{
|
||||||
$azienda = static::getAzienda();
|
// Se in impostazioni ho definito un terzo intermediario (es. Aruba, Teamsystem)
|
||||||
|
if (!empty(setting('Terzo intermediario')))
|
||||||
|
$anagrafica = Anagrafica::find(setting('Terzo intermediario'));
|
||||||
|
else
|
||||||
|
$anagrafica = static::getAzienda();
|
||||||
|
|
||||||
$documento = $fattura->getDocumento();
|
$documento = $fattura->getDocumento();
|
||||||
$cliente = $fattura->getCliente();
|
$cliente = $fattura->getCliente();
|
||||||
|
|
||||||
@ -372,25 +382,28 @@ class FatturaElettronica
|
|||||||
$default_code = ($cliente->nazione->iso2 != 'IT') ? 'XXXXXXX' : $default_code;
|
$default_code = ($cliente->nazione->iso2 != 'IT') ? 'XXXXXXX' : $default_code;
|
||||||
|
|
||||||
// Generazione dell'header
|
// Generazione dell'header
|
||||||
// Se all'Anagrafe Tributaria il trasmittente è censito con il codice fiscale
|
// Se all'Anagrafe Tributaria il trasmittente è censito con il codice fiscale, es. ditte individuali
|
||||||
$result = [
|
$result = [
|
||||||
'IdTrasmittente' => [
|
'IdTrasmittente' => [
|
||||||
'IdPaese' => $azienda->nazione->iso2,
|
'IdPaese' => $anagrafica->nazione->iso2,
|
||||||
'IdCodice' => (!empty($azienda['codice_fiscale'])) ? $azienda['codice_fiscale'] : $azienda['piva'],
|
'IdCodice' => (!empty($anagrafica['codice_fiscale'])) ? $anagrafica['codice_fiscale'] : $anagrafica['piva'],
|
||||||
],
|
]
|
||||||
|
];
|
||||||
|
|
||||||
|
$result[] = [
|
||||||
'ProgressivoInvio' => $documento['progressivo_invio'],
|
'ProgressivoInvio' => $documento['progressivo_invio'],
|
||||||
'FormatoTrasmissione' => ($cliente['tipo'] == 'Ente pubblico') ? 'FPA12' : 'FPR12',
|
'FormatoTrasmissione' => ($cliente['tipo'] == 'Ente pubblico') ? 'FPA12' : 'FPR12',
|
||||||
'CodiceDestinatario' => !empty($cliente['codice_destinatario']) ? $cliente['codice_destinatario'] : $default_code,
|
'CodiceDestinatario' => !empty($cliente['codice_destinatario']) ? $cliente['codice_destinatario'] : $default_code,
|
||||||
];
|
];
|
||||||
|
|
||||||
// Telefono di contatto
|
// Telefono di contatto
|
||||||
if (!empty($azienda['telefono'])) {
|
if (!empty($anagrafica['telefono'])) {
|
||||||
$result['ContattiTrasmittente']['Telefono'] = $azienda['telefono'];
|
$result['ContattiTrasmittente']['Telefono'] = $anagrafica['telefono'];
|
||||||
}
|
}
|
||||||
|
|
||||||
// Email di contatto
|
// Email di contatto
|
||||||
if (!empty($azienda['email'])) {
|
if (!empty($anagrafica['email'])) {
|
||||||
$result['ContattiTrasmittente']['Email'] = $azienda['email'];
|
$result['ContattiTrasmittente']['Email'] = $anagrafica['email'];
|
||||||
}
|
}
|
||||||
|
|
||||||
// Inizializzazione PEC solo se anagrafica azienda e codice destinatario non compilato, per privato e PA la PEC non serve
|
// Inizializzazione PEC solo se anagrafica azienda e codice destinatario non compilato, per privato e PA la PEC non serve
|
||||||
|
@ -77,3 +77,6 @@ CREATE TABLE IF NOT EXISTS `co_ritenuta_contributi` (
|
|||||||
UPDATE `zz_views` SET `query` = '(SELECT GROUP_CONCAT(DISTINCT `name` SEPARATOR \'\r\n \') FROM zz_operations INNER JOIN zz_emails ON zz_operations.id_email = zz_emails.id WHERE zz_operations.id_module = (SELECT id FROM zz_modules WHERE `name` = \'Fatture di vendita\') AND op = \'send-email\' AND id_record = co_documenti.id ORDER BY zz_operations.created_at DESC LIMIT 1)' WHERE `zz_views`.`name` = 'icon_title_Inviata' AND id_module = (SELECT id FROM zz_modules WHERE name = 'Fatture di vendita');
|
UPDATE `zz_views` SET `query` = '(SELECT GROUP_CONCAT(DISTINCT `name` SEPARATOR \'\r\n \') FROM zz_operations INNER JOIN zz_emails ON zz_operations.id_email = zz_emails.id WHERE zz_operations.id_module = (SELECT id FROM zz_modules WHERE `name` = \'Fatture di vendita\') AND op = \'send-email\' AND id_record = co_documenti.id ORDER BY zz_operations.created_at DESC LIMIT 1)' WHERE `zz_views`.`name` = 'icon_title_Inviata' AND id_module = (SELECT id FROM zz_modules WHERE name = 'Fatture di vendita');
|
||||||
|
|
||||||
UPDATE `zz_views` SET `query` = 'IF((SELECT GROUP_CONCAT(DISTINCT `name` SEPARATOR \'\r\n \') FROM zz_operations INNER JOIN zz_emails ON zz_operations.id_email = zz_emails.id WHERE zz_operations.id_module = (SELECT id FROM zz_modules WHERE `name` = \'Fatture di vendita\') AND op = \'send-email\' AND id_record = co_documenti.id ORDER BY zz_operations.created_at DESC LIMIT 1) IS NOT NULL, \'fa fa-envelope text-success\', \'\') ' WHERE `zz_views`.`name` = 'icon_Inviata' AND id_module = (SELECT id FROM zz_modules WHERE name = 'Fatture di vendita');
|
UPDATE `zz_views` SET `query` = 'IF((SELECT GROUP_CONCAT(DISTINCT `name` SEPARATOR \'\r\n \') FROM zz_operations INNER JOIN zz_emails ON zz_operations.id_email = zz_emails.id WHERE zz_operations.id_module = (SELECT id FROM zz_modules WHERE `name` = \'Fatture di vendita\') AND op = \'send-email\' AND id_record = co_documenti.id ORDER BY zz_operations.created_at DESC LIMIT 1) IS NOT NULL, \'fa fa-envelope text-success\', \'\') ' WHERE `zz_views`.`name` = 'icon_Inviata' AND id_module = (SELECT id FROM zz_modules WHERE name = 'Fatture di vendita');
|
||||||
|
|
||||||
|
-- Limitato il controllo numeri fattura duplicati all'anno in corso
|
||||||
|
UPDATE `zz_views` SET `query` = 'IF((SELECT COUNT(t.numero_esterno) FROM co_documenti AS t WHERE t.numero_esterno = co_documenti.numero_esterno AND t.numero_esterno != '''' AND t.id_segment = co_documenti.id_segment AND idtipodocumento IN (SELECT id FROM co_tipidocumento WHERE dir = ''entrata'') AND t.data >= ''|period_start|'' AND t.data <= ''|period_end|'' AND YEAR(t.data) = YEAR(co_documenti.data) ) > 1, ''red'', '''') ' WHERE `zz_views`.`name` = '_bg_' AND id_module = (SELECT id FROM zz_modules WHERE name = 'Fatture di vendita');
|
||||||
|
Reference in New Issue
Block a user