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
//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
if( count($rs_operations)>0 ){
foreach ($rs_operations as $operation){
echo "
<span class='label label-success pull-right'>".tr('_TIPO_ inviata il _DATA_ alle _ORA_ da _USER_.', [
'_TIPO_' => $operation['tipo_email'],
'_DATA_' => $operation['data'],
'_ORA_' => $operation['ora'],
'_USER_' => $operation['user'],
]).'</span><br>';
// Visualizzo il log delle operazioni di invio email
$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');
}
}else{
echo "<span class='label label-warning pull-right'>".tr("nessuna email inviata al cliente.")."</span>\n";
}
// Se la mail è stata inviata, mostro la data
if (!empty($operations)) {
foreach ($operations as $operation) {
echo '
<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'],
]).'
</span><br>';
}
} 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">

View File

@ -28,7 +28,7 @@ class FatturaElettronica
public function __construct($id_documento)
{
$database = \Database::getConnection();
$database = database();
// 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()
{
if (empty(self::$azienda)) {
$database = \Database::getConnection();
if (empty(static::$azienda)) {
$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()
{
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']));
}
@ -204,8 +204,8 @@ class FatturaElettronica
protected static function getCedentePrestatore($azienda)
{
$result = [
'DatiAnagrafici' => self::getDatiAnagrafici($azienda, true),
'Sede' => self::getSede($azienda),
'DatiAnagrafici' => static::getDatiAnagrafici($azienda, true),
'Sede' => static::getSede($azienda),
// TODO: StabileOrganizzazione,
];
@ -253,8 +253,8 @@ class FatturaElettronica
protected static function getCessionarioCommittente($cliente)
{
$result = [
'DatiAnagrafici' => self::getDatiAnagrafici($cliente),
'Sede' => self::getSede($cliente),
'DatiAnagrafici' => static::getDatiAnagrafici($cliente),
'Sede' => static::getSede($cliente),
// TODO: StabileOrganizzazione, RappresentanteFiscale
];
@ -287,7 +287,7 @@ class FatturaElettronica
protected static function getDatiDocumento($documento)
{
$result = [
'DatiGeneraliDocumento' => self::getDatiGeneraliDocumento($documento),
'DatiGeneraliDocumento' => static::getDatiGeneraliDocumento($documento),
];
return $result;
@ -300,12 +300,12 @@ class FatturaElettronica
*/
protected static function getDatiBeniServizi($documento)
{
$database = \Database::getConnection();
$database = database();
$result = [];
// 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) {
$prezzo_unitario = $riga['subtotale'] / $riga['qta'];
$prezzo_totale = $riga['subtotale'] - $riga['sconto'];
@ -369,7 +369,7 @@ class FatturaElettronica
*/
protected static function getDatiPagamento($documento)
{
$database = \Database::getConnection();
$database = database();
$pagamento = $database->fetchOne('SELECT * FROM `co_pagamenti` WHERE `id` = '.prepare($documento['idpagamento']));
@ -398,14 +398,14 @@ class FatturaElettronica
*/
protected static function getHeader($fattura)
{
$azienda = self::getAzienda();
$azienda = static::getAzienda();
$documento = $fattura->getDocumento();
$cliente = $fattura->getCliente();
$result = [
'DatiTrasmissione' => self::getDatiTrasmissione($documento, $azienda, $cliente),
'CedentePrestatore' => self::getCedentePrestatore($azienda),
'CessionarioCommittente' => self::getCessionarioCommittente($cliente),
'DatiTrasmissione' => static::getDatiTrasmissione($documento, $azienda, $cliente),
'CedentePrestatore' => static::getCedentePrestatore($azienda),
'CessionarioCommittente' => static::getCessionarioCommittente($cliente),
];
return $result;
@ -421,9 +421,9 @@ class FatturaElettronica
$documento = $fattura->getDocumento();
$result = [
'DatiGenerali' => self::getDatiDocumento($documento),
'DatiBeniServizi' => self::getDatiBeniServizi($documento),
'DatiPagamento' => self::getDatiPagamento($documento),
'DatiGenerali' => static::getDatiDocumento($documento),
'DatiBeniServizi' => static::getDatiBeniServizi($documento),
'DatiPagamento' => static::getDatiPagamento($documento),
];
return $result;
@ -446,7 +446,7 @@ class FatturaElettronica
$output[$key] = $this->prepareForXML($value, $key);
}
} elseif (!is_null($input)) {
$info = self::$validators[$key];
$info = static::$validators[$key];
$size = isset($info['size']) ? $info['size'] : null;
$output = $input;
@ -521,9 +521,22 @@ class FatturaElettronica
$filename = $this->getFilename();
// 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
$this->register($filename);
return ($result === false) ? null : $filename;
}
/**
* Registra il file XML come allegato.
*
* @param string $filename
*/
public function register($filename)
{
$data = [
'original' => $filename,
'category' => tr('Fattura elettronica'),
@ -538,8 +551,6 @@ class FatturaElettronica
if (!$registered) {
\Uploads::register($data);
}
return ($result === false) ? null : $filename;
}
/**
@ -549,11 +560,11 @@ class FatturaElettronica
*/
public function getFilename()
{
$azienda = self::getAzienda();
$azienda = static::getAzienda();
$codice = 'IT'.(empty($azienda['piva']) ? $azienda['codice_fiscale'] : $azienda['piva']);
if (empty($this->documento['codice_xml'])) {
$database = \Database::getConnection();
$database = database();
do {
$code = date('y').secure_random_string(3);
@ -599,9 +610,9 @@ class FatturaElettronica
}
// Generazione della fattura elettronica
$xml = self::prepareForXML([
'FatturaElettronicaHeader' => self::getHeader($this),
'FatturaElettronicaBody' => self::getBody($this),
$xml = static::prepareForXML([
'FatturaElettronicaHeader' => static::getHeader($this),
'FatturaElettronicaBody' => static::getBody($this),
]);
$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_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);
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_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');