Aggiunti DatiTrasporto FE

This commit is contained in:
Thomas Zilio 2018-09-24 11:24:48 +02:00
parent e10266d808
commit 50c9083473
4 changed files with 131 additions and 59 deletions

View File

@ -153,40 +153,7 @@ if ($dir == 'entrata') {
</div> </div>
<?php <?php
if ($tipodoc == 'Fattura accompagnatoria di vendita') {
?>
<div class="row">
<div class="col-md-3">
{[ "type": "select", "label": "<?php echo tr('Aspetto beni'); ?>", "name": "idaspettobeni", "placeholder": "-", "values": "query=SELECT id, descrizione FROM dt_aspettobeni ORDER BY descrizione ASC", "value": "$idaspettobeni$" ]}
</div>
<div class="col-md-3">
{[ "type": "select", "label": "<?php echo tr('Causale trasporto'); ?>", "name": "idcausalet", "placeholder": "-", "values": "query=SELECT id, descrizione FROM dt_causalet ORDER BY descrizione ASC", "value": "$idcausalet$" ]}
</div>
<div class="col-md-3">
{[ "type": "select", "label": "<?php echo tr('Porto'); ?>", "name": "idporto", "placeholder": "-", "values": "query=SELECT id, descrizione FROM dt_porto ORDER BY descrizione ASC", "value": "$idporto$" ]}
</div>
<div class="col-md-3">
{[ "type": "text", "label": "<?php echo tr('Num. colli'); ?>", "name": "n_colli", "value": "$n_colli$" ]}
</div>
</div>
<div class="row">
<div class="col-md-3">
{[ "type": "select", "label": "<?php echo tr('Tipo di spedizione'); ?>", "name": "idspedizione", "values": "query=SELECT id, descrizione FROM dt_spedizione ORDER BY descrizione ASC", "value": "$idspedizione$" ]}
</div>
<div class="col-md-3">
{[ "type": "select", "label": "<?php echo tr('Vettore'); ?>", "name": "idvettore", "values": "query=SELECT DISTINCT an_anagrafiche.idanagrafica AS id, an_anagrafiche.ragione_sociale AS descrizione FROM an_anagrafiche INNER JOIN an_tipianagrafiche_anagrafiche ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica WHERE an_tipianagrafiche_anagrafiche.idtipoanagrafica=(SELECT idtipoanagrafica FROM an_tipianagrafiche WHERE descrizione='Vettore') ORDER BY descrizione ASC", "value": "$idvettore$" ]}
</div>
</div>
<?php
}
if ($dir == 'uscita') { if ($dir == 'uscita') {
?> ?>
@ -249,6 +216,48 @@ if ($record['stato'] == 'Emessa') {
</div> </div>
</div> </div>
</div> </div>
<?php
if ($tipodoc == 'Fattura accompagnatoria di vendita') {
echo '
<div class="box box-info">
<div class="box-header with-border">
<h3 class="box-title"><i class="fa fa-edit"></i> '.tr('Dati Fattura accompagnatoria').'</h3>
</div>
<div class="box-body">
<div class="row">
<div class="col-md-3">
{[ "type": "select", "label": "'.tr('Aspetto beni').'", "name": "idaspettobeni", "placeholder": "-", "values": "query=SELECT id, descrizione FROM dt_aspettobeni ORDER BY descrizione ASC", "value": "$idaspettobeni$" ]}
</div>
<div class="col-md-3">
{[ "type": "select", "label": "'.tr('Causale trasporto').'", "name": "idcausalet", "placeholder": "-", "values": "query=SELECT id, descrizione FROM dt_causalet ORDER BY descrizione ASC", "value": "$idcausalet$" ]}
</div>
<div class="col-md-3">
{[ "type": "select", "label": "'.tr('Porto').'", "name": "idporto", "placeholder": "-", "values": "query=SELECT id, descrizione FROM dt_porto ORDER BY descrizione ASC", "value": "$idporto$" ]}
</div>
<div class="col-md-3">
{[ "type": "text", "label": "'.tr('Num. colli').'", "name": "n_colli", "value": "$n_colli$" ]}
</div>
</div>
<div class="row">
<div class="col-md-3">
{[ "type": "select", "label": "'.tr('Tipo di spedizione').'", "name": "idspedizione", "values": "query=SELECT id, descrizione FROM dt_spedizione ORDER BY descrizione ASC", "value": "$idspedizione$" ]}
</div>
<div class="col-md-3">
{[ "type": "select", "label": "'.tr('Vettore').'", "name": "idvettore", "values": "query=SELECT DISTINCT an_anagrafiche.idanagrafica AS id, an_anagrafiche.ragione_sociale AS descrizione FROM an_anagrafiche INNER JOIN an_tipianagrafiche_anagrafiche ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica WHERE an_tipianagrafiche_anagrafiche.idtipoanagrafica=(SELECT idtipoanagrafica FROM an_tipianagrafiche WHERE descrizione=\'Vettore\') ORDER BY descrizione ASC", "value": "$idvettore$" ]}
</div>
</div>
</div>
</div>';
}
?>
</form> </form>

View File

@ -7,6 +7,12 @@ if (!empty($fattura_pa)) {
$disabled = false; $disabled = false;
$generated = file_exists($upload_dir.'/'.$fattura_pa->getFilename()); $generated = file_exists($upload_dir.'/'.$fattura_pa->getFilename());
} else { } else {
echo '
<div class="alert alert-warning">
<i class="fa fa-warning"></i>
<b>'.tr('Attenzione!').'</b> '.tr('Per generare la fattura elettronica è necessario che sia in stato "Emessa"').'.
</div>';
$disabled = true; $disabled = true;
$generated = false; $generated = false;
} }

View File

@ -38,7 +38,10 @@ class FatturaElettronica
$database = database(); $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 `co_documenti`.*, `co_tipidocumento`.`descrizione` AS `tipo`, `co_tipidocumento`.`codice_tipo_documento_fe` AS `tipo_documento`, `co_statidocumento`.`descrizione` AS `stato` FROM `co_documenti`
INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento`
INNER JOIN `co_statidocumento` ON `co_statidocumento`.`id` = `co_documenti`.`idstatodocumento`
WHERE `co_documenti`.`id` = '.prepare($id_documento));
// Controllo sulla possibilità di creare la fattura elettronica // Controllo sulla possibilità di creare la fattura elettronica
if ($this->documento['stato'] != 'Emessa' || $this->getCliente()['tipo'] == 'Privato') { if ($this->documento['stato'] != 'Emessa' || $this->getCliente()['tipo'] == 'Privato') {
@ -54,9 +57,7 @@ class FatturaElettronica
public static function getAzienda() public static function getAzienda()
{ {
if (empty(static::$azienda)) { if (empty(static::$azienda)) {
$database = database(); static::$azienda = static::getAnagrafica(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 static::$azienda; return static::$azienda;
@ -70,14 +71,24 @@ class FatturaElettronica
public function getCliente() public function getCliente()
{ {
if (empty($this->cliente)) { if (empty($this->cliente)) {
$database = database(); $this->cliente = static::getAnagrafica($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']));
} }
return $this->cliente; return $this->cliente;
} }
/**
* Restituisce le informazioni riguardanti un anagrafica sulla base dell'identificativo fornito.
*
* @param int $id
*
* @return array
*/
protected static function getAnagrafica($id)
{
return database()->fetchOne('SELECT *, (SELECT `iso2` FROM `an_nazioni` WHERE `an_nazioni`.`id` = `an_anagrafiche`.`id_nazione`) AS nazione FROM `an_anagrafiche` WHERE `idanagrafica` = '.prepare($id));
}
/** /**
* Restituisce le informazioni relative al documento. * Restituisce le informazioni relative al documento.
* *
@ -107,8 +118,12 @@ class FatturaElettronica
* *
* @return array * @return array
*/ */
protected static function getDatiTrasmissione($documento, $azienda, $cliente) protected static function getDatiTrasmissione($fattura)
{ {
$azienda = static::getAzienda();
$documento = $fattura->getDocumento();
$cliente = $fattura->getCliente();
$default_code = ($cliente['tipo'] == 'Ente pubblico') ? '999999' : '0000000'; $default_code = ($cliente['tipo'] == 'Ente pubblico') ? '999999' : '0000000';
// Generazione dell'header // Generazione dell'header
@ -208,8 +223,10 @@ class FatturaElettronica
* *
* @return array * @return array
*/ */
protected static function getCedentePrestatore($azienda) protected static function getCedentePrestatore($fattura)
{ {
$azienda = static::getAzienda();
$result = [ $result = [
'DatiAnagrafici' => static::getDatiAnagrafici($azienda, true), 'DatiAnagrafici' => static::getDatiAnagrafici($azienda, true),
'Sede' => static::getSede($azienda), 'Sede' => static::getSede($azienda),
@ -259,8 +276,10 @@ class FatturaElettronica
* *
* @return array * @return array
*/ */
protected static function getCessionarioCommittente($cliente) protected static function getCessionarioCommittente($fattura)
{ {
$cliente = $fattura->getCliente();
$result = [ $result = [
'DatiAnagrafici' => static::getDatiAnagrafici($cliente), 'DatiAnagrafici' => static::getDatiAnagrafici($cliente),
'Sede' => static::getSede($cliente), 'Sede' => static::getSede($cliente),
@ -275,8 +294,10 @@ class FatturaElettronica
* *
* @return array * @return array
*/ */
protected static function getDatiGeneraliDocumento($documento) protected static function getDatiGeneraliDocumento($fattura)
{ {
$documento = $fattura->getDocumento();
$result = [ $result = [
'TipoDocumento' => $documento['tipo_documento'], 'TipoDocumento' => $documento['tipo_documento'],
'Divisa' => 'EUR', 'Divisa' => 'EUR',
@ -304,18 +325,50 @@ class FatturaElettronica
return $result; return $result;
} }
/**
* Restituisce l'array responsabile per la generazione del tag DatiTrasporto.
*
* @return array
*/
protected static function getDatiTrasporto($fattura)
{
$documento = $fattura->getDocumento();
$database = database();
$vettore = static::getAnagrafica($documento['idvettore']);
$causale = $database->fetchOne('SELECT descrizione FROM dt_causalet WHERE id = '.prepare($documento['idcausalet']))['descrizione'];
$aspetto = $database->fetchOne('SELECT descrizione FROM dt_aspettobeni WHERE id = '.prepare($documento['idaspettobeni']))['descrizione'];
$result = [
'DatiAnagraficiVettore' => static::getDatiAnagrafici($vettore),
'CausaleTrasporto' => $causale,
'NumeroColli' => $documento['n_colli'],
'Descrizione' => $aspetto,
];
return $result;
}
/** /**
* Restituisce l'array responsabile per la generazione del tag DatiDocumento. * Restituisce l'array responsabile per la generazione del tag DatiDocumento.
* *
* @return array * @return array
*/ */
protected static function getDatiGenerali($documento) protected static function getDatiGenerali($fattura)
{ {
$documento = $fattura->getDocumento();
$result = [ $result = [
'DatiGeneraliDocumento' => static::getDatiGeneraliDocumento($documento), 'DatiGeneraliDocumento' => static::getDatiGeneraliDocumento($fattura),
// TODO: DatiOrdineAcquisto, DatiContratto, DatiConvenzione, DatiRicezione, DatiFattureCollegate, DatiSAL, DatiDDT, DatiTrasporto, FatturaPrincipale // TODO: DatiOrdineAcquisto, DatiContratto, DatiConvenzione, DatiRicezione, DatiFattureCollegate, DatiSAL, DatiDDT, DatiTrasporto, FatturaPrincipale
]; ];
if ($documento['tipo'] == 'Fattura accompagnatoria di vendita') {
$result['DatiTrasporto'] = static::getDatiTrasporto($fattura);
}
return $result; return $result;
} }
@ -324,8 +377,10 @@ class FatturaElettronica
* *
* @return array * @return array
*/ */
protected static function getDatiBeniServizi($documento) protected static function getDatiBeniServizi($fattura)
{ {
$documento = $fattura->getDocumento();
$database = database(); $database = database();
$result = []; $result = [];
@ -399,8 +454,10 @@ class FatturaElettronica
* *
* @return array * @return array
*/ */
protected static function getDatiPagamento($documento) protected static function getDatiPagamento($fattura)
{ {
$documento = $fattura->getDocumento();
$database = database(); $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']));
@ -429,8 +486,10 @@ class FatturaElettronica
* *
* @return array * @return array
*/ */
protected static function getAllegati($documento) protected static function getAllegati($fattura)
{ {
$documento = $fattura->getDocumento();
$id_module = Modules::get('Fatture di vendita')['id']; $id_module = Modules::get('Fatture di vendita')['id'];
$dir = Uploads::getDirectory($id_module, Plugins::get('Fatturazione Elettronica')['id']); $dir = Uploads::getDirectory($id_module, Plugins::get('Fatturazione Elettronica')['id']);
@ -464,9 +523,9 @@ class FatturaElettronica
$cliente = $fattura->getCliente(); $cliente = $fattura->getCliente();
$result = [ $result = [
'DatiTrasmissione' => static::getDatiTrasmissione($documento, $azienda, $cliente), 'DatiTrasmissione' => static::getDatiTrasmissione($fattura),
'CedentePrestatore' => static::getCedentePrestatore($azienda), 'CedentePrestatore' => static::getCedentePrestatore($fattura),
'CessionarioCommittente' => static::getCessionarioCommittente($cliente), 'CessionarioCommittente' => static::getCessionarioCommittente($fattura),
]; ];
return $result; return $result;
@ -479,13 +538,11 @@ class FatturaElettronica
*/ */
protected static function getBody($fattura) protected static function getBody($fattura)
{ {
$documento = $fattura->getDocumento();
$result = [ $result = [
'DatiGenerali' => static::getDatiGenerali($documento), 'DatiGenerali' => static::getDatiGenerali($fattura),
'DatiBeniServizi' => static::getDatiBeniServizi($documento), 'DatiBeniServizi' => static::getDatiBeniServizi($fattura),
'DatiPagamento' => static::getDatiPagamento($documento), 'DatiPagamento' => static::getDatiPagamento($fattura),
'Allegati' => static::getAllegati($documento), 'Allegati' => static::getAllegati($fattura),
]; ];
return $result; return $result;

View File

@ -111,7 +111,7 @@ echo '
</th> </th>
<th class="small"> <th class="small">
'.tr('Volume', [], ['upper' => true]).' '.tr('Volume', [], ['upper' => true]).'
</th> </th>
<th class="small"> <th class="small">