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>
<?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') {
?>
@ -249,6 +216,48 @@ if ($record['stato'] == 'Emessa') {
</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>

View File

@ -7,6 +7,12 @@ if (!empty($fattura_pa)) {
$disabled = false;
$generated = file_exists($upload_dir.'/'.$fattura_pa->getFilename());
} 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;
$generated = false;
}

View File

@ -38,7 +38,10 @@ class FatturaElettronica
$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));
$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
if ($this->documento['stato'] != 'Emessa' || $this->getCliente()['tipo'] == 'Privato') {
@ -54,9 +57,7 @@ class FatturaElettronica
public static function getAzienda()
{
if (empty(static::$azienda)) {
$database = database();
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')));
static::$azienda = static::getAnagrafica(setting('Azienda predefinita'));
}
return static::$azienda;
@ -70,14 +71,24 @@ class FatturaElettronica
public function getCliente()
{
if (empty($this->cliente)) {
$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 = static::getAnagrafica($this->getDocumento()['idanagrafica']);
}
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.
*
@ -107,8 +118,12 @@ class FatturaElettronica
*
* @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';
// Generazione dell'header
@ -208,8 +223,10 @@ class FatturaElettronica
*
* @return array
*/
protected static function getCedentePrestatore($azienda)
protected static function getCedentePrestatore($fattura)
{
$azienda = static::getAzienda();
$result = [
'DatiAnagrafici' => static::getDatiAnagrafici($azienda, true),
'Sede' => static::getSede($azienda),
@ -259,8 +276,10 @@ class FatturaElettronica
*
* @return array
*/
protected static function getCessionarioCommittente($cliente)
protected static function getCessionarioCommittente($fattura)
{
$cliente = $fattura->getCliente();
$result = [
'DatiAnagrafici' => static::getDatiAnagrafici($cliente),
'Sede' => static::getSede($cliente),
@ -275,8 +294,10 @@ class FatturaElettronica
*
* @return array
*/
protected static function getDatiGeneraliDocumento($documento)
protected static function getDatiGeneraliDocumento($fattura)
{
$documento = $fattura->getDocumento();
$result = [
'TipoDocumento' => $documento['tipo_documento'],
'Divisa' => 'EUR',
@ -304,18 +325,50 @@ class FatturaElettronica
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.
*
* @return array
*/
protected static function getDatiGenerali($documento)
protected static function getDatiGenerali($fattura)
{
$documento = $fattura->getDocumento();
$result = [
'DatiGeneraliDocumento' => static::getDatiGeneraliDocumento($documento),
'DatiGeneraliDocumento' => static::getDatiGeneraliDocumento($fattura),
// TODO: DatiOrdineAcquisto, DatiContratto, DatiConvenzione, DatiRicezione, DatiFattureCollegate, DatiSAL, DatiDDT, DatiTrasporto, FatturaPrincipale
];
if ($documento['tipo'] == 'Fattura accompagnatoria di vendita') {
$result['DatiTrasporto'] = static::getDatiTrasporto($fattura);
}
return $result;
}
@ -324,8 +377,10 @@ class FatturaElettronica
*
* @return array
*/
protected static function getDatiBeniServizi($documento)
protected static function getDatiBeniServizi($fattura)
{
$documento = $fattura->getDocumento();
$database = database();
$result = [];
@ -399,8 +454,10 @@ class FatturaElettronica
*
* @return array
*/
protected static function getDatiPagamento($documento)
protected static function getDatiPagamento($fattura)
{
$documento = $fattura->getDocumento();
$database = database();
$pagamento = $database->fetchOne('SELECT * FROM `co_pagamenti` WHERE `id` = '.prepare($documento['idpagamento']));
@ -429,8 +486,10 @@ class FatturaElettronica
*
* @return array
*/
protected static function getAllegati($documento)
protected static function getAllegati($fattura)
{
$documento = $fattura->getDocumento();
$id_module = Modules::get('Fatture di vendita')['id'];
$dir = Uploads::getDirectory($id_module, Plugins::get('Fatturazione Elettronica')['id']);
@ -464,9 +523,9 @@ class FatturaElettronica
$cliente = $fattura->getCliente();
$result = [
'DatiTrasmissione' => static::getDatiTrasmissione($documento, $azienda, $cliente),
'CedentePrestatore' => static::getCedentePrestatore($azienda),
'CessionarioCommittente' => static::getCessionarioCommittente($cliente),
'DatiTrasmissione' => static::getDatiTrasmissione($fattura),
'CedentePrestatore' => static::getCedentePrestatore($fattura),
'CessionarioCommittente' => static::getCessionarioCommittente($fattura),
];
return $result;
@ -479,13 +538,11 @@ class FatturaElettronica
*/
protected static function getBody($fattura)
{
$documento = $fattura->getDocumento();
$result = [
'DatiGenerali' => static::getDatiGenerali($documento),
'DatiBeniServizi' => static::getDatiBeniServizi($documento),
'DatiPagamento' => static::getDatiPagamento($documento),
'Allegati' => static::getAllegati($documento),
'DatiGenerali' => static::getDatiGenerali($fattura),
'DatiBeniServizi' => static::getDatiBeniServizi($fattura),
'DatiPagamento' => static::getDatiPagamento($fattura),
'Allegati' => static::getAllegati($fattura),
];
return $result;

View File

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