1
0
mirror of https://github.com/devcode-it/openstamanager.git synced 2025-02-27 00:37:38 +01:00

Miglioramenti vari

This commit is contained in:
Thomas Zilio 2018-07-10 16:19:38 +02:00
parent 1e5c050314
commit f851b7c3cb
3 changed files with 68 additions and 51 deletions

View File

@ -401,24 +401,29 @@ if (!empty($note_accredito)) {
?> ?>
<?php <?php
//Visualizzo il log delle operazioni di invio email
$rs_operations = $dbo->fetchArray('SELECT DATE_FORMAT(created_at,"%d/%m/%Y") AS data , DATE_FORMAT(created_at,"%H:%i") AS ora, (SELECT name FROM zz_emails WHERE id = id_email) AS tipo_email, (SELECT username FROM zz_users WHERE id = id_utente) AS user FROM zz_operations WHERE id_record = '.prepare($id_record).' AND op = "send-email" ORDER BY created_at DESC');
//Se la mail è stata inviata, mostro la data // Visualizzo il log delle operazioni di invio email
if( count($rs_operations)>0 ){ $operations = $dbo->fetchArray('SELECT created_at, (SELECT name FROM zz_emails WHERE id = id_email) AS email, (SELECT username FROM zz_users WHERE id = id_utente) AS user FROM zz_operations WHERE id_record = '.prepare($id_record).' AND op = "send-email" ORDER BY created_at DESC');
foreach ($rs_operations as $operation){
echo " // Se la mail è stata inviata, mostro la data
<span class='label label-success pull-right'>".tr('_TIPO_ inviata il _DATA_ alle _ORA_ da _USER_.', [ if (!empty($operations)) {
'_TIPO_' => $operation['tipo_email'], foreach ($operations as $operation) {
'_DATA_' => $operation['data'], echo '
'_ORA_' => $operation['ora'], <span class="label label-success pull-right">
'.tr('_EMAIL_ inviata il _DATE_ alle _HOUR_ da _USER_.', [
'_EMAIL_' => $operation['email'],
'_DATE_' => Translator::dateToLocale($operation['data']),
'_HOUR_' => Translator::timeToLocale($operation['ora']),
'_USER_' => $operation['user'], '_USER_' => $operation['user'],
]).'</span><br>'; ]).'
</span><br>';
}
}else{
echo "<span class='label label-warning pull-right'>".tr("nessuna email inviata al cliente.")."</span>\n";
} }
} else {
echo '
<span class="label label-warning pull-right">
'.tr('Nessuna email inviata al cliente.').'
</span>';
}
?> ?>
<a class="btn btn-danger ask" data-backto="record-list"> <a class="btn btn-danger ask" data-backto="record-list">

View File

@ -28,7 +28,7 @@ class FatturaElettronica
public function __construct($id_documento) public function __construct($id_documento)
{ {
$database = \Database::getConnection(); $database = database();
// Documento // Documento
$this->documento = $database->fetchOne('SELECT *, (SELECT `codice_tipo_documento_fe` FROM `co_tipidocumento` WHERE `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento`) AS `tipo_documento`, (SELECT `descrizione` FROM `co_statidocumento` WHERE `co_documenti`.`idstatodocumento` = `co_statidocumento`.`id`) AS `stato` FROM `co_documenti` WHERE `id` = '.prepare($id_documento)); $this->documento = $database->fetchOne('SELECT *, (SELECT `codice_tipo_documento_fe` FROM `co_tipidocumento` WHERE `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento`) AS `tipo_documento`, (SELECT `descrizione` FROM `co_statidocumento` WHERE `co_documenti`.`idstatodocumento` = `co_statidocumento`.`id`) AS `stato` FROM `co_documenti` WHERE `id` = '.prepare($id_documento));
@ -46,13 +46,13 @@ class FatturaElettronica
*/ */
public static function getAzienda() public static function getAzienda()
{ {
if (empty(self::$azienda)) { if (empty(static::$azienda)) {
$database = \Database::getConnection(); $database = database();
self::$azienda = $database->fetchOne('SELECT *, (SELECT `iso2` FROM `an_nazioni` WHERE `an_nazioni`.`id` = `an_anagrafiche`.`id_nazione`) AS nazione FROM `an_anagrafiche` WHERE `idanagrafica` = '.prepare(setting('Azienda predefinita'))); static::$azienda = $database->fetchOne('SELECT *, (SELECT `iso2` FROM `an_nazioni` WHERE `an_nazioni`.`id` = `an_anagrafiche`.`id_nazione`) AS nazione FROM `an_anagrafiche` WHERE `idanagrafica` = '.prepare(setting('Azienda predefinita')));
} }
return self::$azienda; return static::$azienda;
} }
/** /**
@ -63,7 +63,7 @@ class FatturaElettronica
public function getCliente() public function getCliente()
{ {
if (empty($this->cliente)) { if (empty($this->cliente)) {
$database = \Database::getConnection(); $database = database();
$this->cliente = $database->fetchOne('SELECT *, (SELECT `iso2` FROM `an_nazioni` WHERE `an_nazioni`.`id` = `an_anagrafiche`.`id_nazione`) AS nazione FROM `an_anagrafiche` WHERE `idanagrafica` = '.prepare($this->getDocumento()['idanagrafica'])); $this->cliente = $database->fetchOne('SELECT *, (SELECT `iso2` FROM `an_nazioni` WHERE `an_nazioni`.`id` = `an_anagrafiche`.`id_nazione`) AS nazione FROM `an_anagrafiche` WHERE `idanagrafica` = '.prepare($this->getDocumento()['idanagrafica']));
} }
@ -204,8 +204,8 @@ class FatturaElettronica
protected static function getCedentePrestatore($azienda) protected static function getCedentePrestatore($azienda)
{ {
$result = [ $result = [
'DatiAnagrafici' => self::getDatiAnagrafici($azienda, true), 'DatiAnagrafici' => static::getDatiAnagrafici($azienda, true),
'Sede' => self::getSede($azienda), 'Sede' => static::getSede($azienda),
// TODO: StabileOrganizzazione, // TODO: StabileOrganizzazione,
]; ];
@ -253,8 +253,8 @@ class FatturaElettronica
protected static function getCessionarioCommittente($cliente) protected static function getCessionarioCommittente($cliente)
{ {
$result = [ $result = [
'DatiAnagrafici' => self::getDatiAnagrafici($cliente), 'DatiAnagrafici' => static::getDatiAnagrafici($cliente),
'Sede' => self::getSede($cliente), 'Sede' => static::getSede($cliente),
// TODO: StabileOrganizzazione, RappresentanteFiscale // TODO: StabileOrganizzazione, RappresentanteFiscale
]; ];
@ -287,7 +287,7 @@ class FatturaElettronica
protected static function getDatiDocumento($documento) protected static function getDatiDocumento($documento)
{ {
$result = [ $result = [
'DatiGeneraliDocumento' => self::getDatiGeneraliDocumento($documento), 'DatiGeneraliDocumento' => static::getDatiGeneraliDocumento($documento),
]; ];
return $result; return $result;
@ -300,12 +300,12 @@ class FatturaElettronica
*/ */
protected static function getDatiBeniServizi($documento) protected static function getDatiBeniServizi($documento)
{ {
$database = \Database::getConnection(); $database = database();
$result = []; $result = [];
// Righe del documento // Righe del documento
$righe_documento = $database->select('co_righe_documenti', '*', ['iddocumento' => $documento['id']]); $righe_documento = $database->fetchArray('SELECT * FROM `co_righe_documenti` WHERE `iddocumento` = '.prepare($documento['id']));
foreach ($righe_documento as $numero => $riga) { foreach ($righe_documento as $numero => $riga) {
$prezzo_unitario = $riga['subtotale'] / $riga['qta']; $prezzo_unitario = $riga['subtotale'] / $riga['qta'];
$prezzo_totale = $riga['subtotale'] - $riga['sconto']; $prezzo_totale = $riga['subtotale'] - $riga['sconto'];
@ -369,7 +369,7 @@ class FatturaElettronica
*/ */
protected static function getDatiPagamento($documento) protected static function getDatiPagamento($documento)
{ {
$database = \Database::getConnection(); $database = database();
$pagamento = $database->fetchOne('SELECT * FROM `co_pagamenti` WHERE `id` = '.prepare($documento['idpagamento'])); $pagamento = $database->fetchOne('SELECT * FROM `co_pagamenti` WHERE `id` = '.prepare($documento['idpagamento']));
@ -398,14 +398,14 @@ class FatturaElettronica
*/ */
protected static function getHeader($fattura) protected static function getHeader($fattura)
{ {
$azienda = self::getAzienda(); $azienda = static::getAzienda();
$documento = $fattura->getDocumento(); $documento = $fattura->getDocumento();
$cliente = $fattura->getCliente(); $cliente = $fattura->getCliente();
$result = [ $result = [
'DatiTrasmissione' => self::getDatiTrasmissione($documento, $azienda, $cliente), 'DatiTrasmissione' => static::getDatiTrasmissione($documento, $azienda, $cliente),
'CedentePrestatore' => self::getCedentePrestatore($azienda), 'CedentePrestatore' => static::getCedentePrestatore($azienda),
'CessionarioCommittente' => self::getCessionarioCommittente($cliente), 'CessionarioCommittente' => static::getCessionarioCommittente($cliente),
]; ];
return $result; return $result;
@ -421,9 +421,9 @@ class FatturaElettronica
$documento = $fattura->getDocumento(); $documento = $fattura->getDocumento();
$result = [ $result = [
'DatiGenerali' => self::getDatiDocumento($documento), 'DatiGenerali' => static::getDatiDocumento($documento),
'DatiBeniServizi' => self::getDatiBeniServizi($documento), 'DatiBeniServizi' => static::getDatiBeniServizi($documento),
'DatiPagamento' => self::getDatiPagamento($documento), 'DatiPagamento' => static::getDatiPagamento($documento),
]; ];
return $result; return $result;
@ -446,7 +446,7 @@ class FatturaElettronica
$output[$key] = $this->prepareForXML($value, $key); $output[$key] = $this->prepareForXML($value, $key);
} }
} elseif (!is_null($input)) { } elseif (!is_null($input)) {
$info = self::$validators[$key]; $info = static::$validators[$key];
$size = isset($info['size']) ? $info['size'] : null; $size = isset($info['size']) ? $info['size'] : null;
$output = $input; $output = $input;
@ -521,9 +521,22 @@ class FatturaElettronica
$filename = $this->getFilename(); $filename = $this->getFilename();
// Salvataggio del file // Salvataggio del file
$result = directory($directory) && file_put_contents(rtrim($directory, '/').'/'.$filename, $this->__toString()); $file = rtrim($directory, '/').'/'.$filename;
$result = directory($directory) && file_put_contents($file, $this->__toString());
// Registrazione come allegato // Registrazione come allegato
$this->register($filename);
return ($result === false) ? null : $filename;
}
/**
* Registra il file XML come allegato.
*
* @param string $filename
*/
public function register($filename)
{
$data = [ $data = [
'original' => $filename, 'original' => $filename,
'category' => tr('Fattura elettronica'), 'category' => tr('Fattura elettronica'),
@ -538,8 +551,6 @@ class FatturaElettronica
if (!$registered) { if (!$registered) {
\Uploads::register($data); \Uploads::register($data);
} }
return ($result === false) ? null : $filename;
} }
/** /**
@ -549,11 +560,11 @@ class FatturaElettronica
*/ */
public function getFilename() public function getFilename()
{ {
$azienda = self::getAzienda(); $azienda = static::getAzienda();
$codice = 'IT'.(empty($azienda['piva']) ? $azienda['codice_fiscale'] : $azienda['piva']); $codice = 'IT'.(empty($azienda['piva']) ? $azienda['codice_fiscale'] : $azienda['piva']);
if (empty($this->documento['codice_xml'])) { if (empty($this->documento['codice_xml'])) {
$database = \Database::getConnection(); $database = database();
do { do {
$code = date('y').secure_random_string(3); $code = date('y').secure_random_string(3);
@ -599,9 +610,9 @@ class FatturaElettronica
} }
// Generazione della fattura elettronica // Generazione della fattura elettronica
$xml = self::prepareForXML([ $xml = static::prepareForXML([
'FatturaElettronicaHeader' => self::getHeader($this), 'FatturaElettronicaHeader' => static::getHeader($this),
'FatturaElettronicaBody' => self::getBody($this), 'FatturaElettronicaBody' => static::getBody($this),
]); ]);
$fattura->add($xml); $fattura->add($xml);

View File

@ -204,12 +204,13 @@ età svizzere che possiedono i requisiti di cui all''art. 15, c. 2 dellAccord
INSERT INTO `zz_settings` (`idimpostazione`, `nome`, `valore`, `tipo`, `editable`, `sezione`, `order`) VALUES (NULL, 'Causale ritenuta d''acconto', '', 'query=SELECT codice AS id, descrizione FROM fe_causali_pagamento_ritenuta', 1, 'Fatturazione', 0); INSERT INTO `zz_settings` (`idimpostazione`, `nome`, `valore`, `tipo`, `editable`, `sezione`, `order`) VALUES (NULL, 'Causale ritenuta d''acconto', '', 'query=SELECT codice AS id, descrizione FROM fe_causali_pagamento_ritenuta', 1, 'Fatturazione', 0);
INSERT INTO `zz_plugins` (`id`, `name`, `title`, `idmodule_from`, `idmodule_to`, `position`, `directory`, `options`) VALUES (NULL, 'Fatturazione Elettronica', 'Fatturazione Elettronica', (SELECT `id` FROM `zz_modules` WHERE `name`='Fatture di vendita'), (SELECT `id` FROM `zz_modules` WHERE `name`='Fatture di vendita'), 'tab', 'fatturazione', 'custom');
INSERT INTO `zz_settings` (`idimpostazione`, `nome`, `valore`, `tipo`, `editable`, `sezione`, `order`) VALUES (NULL, 'Authorization ID Indice PA', '', 'string', 1, 'Generali', 0); INSERT INTO `zz_settings` (`idimpostazione`, `nome`, `valore`, `tipo`, `editable`, `sezione`, `order`) VALUES (NULL, 'Authorization ID Indice PA', '', 'string', 1, 'Generali', 0);
ALTER TABLE `an_anagrafiche` ADD `codice_destinatario` varchar(7); ALTER TABLE `an_anagrafiche` ADD `codice_destinatario` varchar(7);
-- Plugin Fatturazione Elettronica
INSERT INTO `zz_plugins` (`id`, `name`, `title`, `idmodule_from`, `idmodule_to`, `position`, `directory`, `options`) VALUES (NULL, 'Fatturazione Elettronica', 'Fatturazione Elettronica', (SELECT `id` FROM `zz_modules` WHERE `name`='Fatture di vendita'), (SELECT `id` FROM `zz_modules` WHERE `name`='Fatture di vendita'), 'tab', 'fatturazione', 'custom');
INSERT INTO `zz_emails` (`id`, `id_module`, `id_smtp`, `name`, `icon`, `subject`, `reply_to`, `cc`, `bcc`, `body`, `read_notify`, `main`, `deleted`) VALUES (NULL, (SELECT `id` FROM `zz_modules` WHERE `name` = 'Fatture di vendita'), 1, 'Fattura Elettronica', 'fa fa-file', 'Invio fattura numero {numero} del {data}', '', 'sdi01@pec.fatturapa.it', '', '<p>Gentile Cliente,</p>\r\n<p>inviamo in allegato la fattura numero {numero} del {data}.</p>\r\n<p>&nbsp;</p>\r\n<p>Distinti saluti</p>\r\n', '0', '0', '0'); INSERT INTO `zz_emails` (`id`, `id_module`, `id_smtp`, `name`, `icon`, `subject`, `reply_to`, `cc`, `bcc`, `body`, `read_notify`, `main`, `deleted`) VALUES (NULL, (SELECT `id` FROM `zz_modules` WHERE `name` = 'Fatture di vendita'), 1, 'Fattura Elettronica', 'fa fa-file', 'Invio fattura numero {numero} del {data}', '', 'sdi01@pec.fatturapa.it', '', '<p>Gentile Cliente,</p>\r\n<p>inviamo in allegato la fattura numero {numero} del {data}.</p>\r\n<p>&nbsp;</p>\r\n<p>Distinti saluti</p>\r\n', '0', '0', '0');
INSERT INTO `zz_email_print` (`id`, `id_email`, `id_print`) VALUES (NULL, (SELECT `id` FROM `zz_emails` WHERE `name` = 'Fattura Elettronica' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Fatture di vendita')), (SELECT `id` FROM `zz_prints` WHERE `name` = 'Fattura di vendita')); INSERT INTO `zz_email_print` (`id`, `id_email`, `id_print`) VALUES (NULL, (SELECT `id` FROM `zz_emails` WHERE `name` = 'Fattura Elettronica' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Fatture di vendita')), (SELECT `id` FROM `zz_prints` WHERE `name` = 'Fattura di vendita'));
UPDATE `zz_emails` SET `main` = 1 WHERE `name` = 'Fattura' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Fatture di vendita'); UPDATE `zz_emails` SET `main` = 1 WHERE `name` = 'Fattura' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Fatture di vendita');