Ampliamento nodi FE

This commit is contained in:
Thomas Zilio 2018-11-23 16:48:30 +01:00
parent 0c0ff74a95
commit 0a83b4d4d6
7 changed files with 174 additions and 27 deletions

View File

@ -4,11 +4,6 @@ include_once __DIR__.'/../../core.php';
use Modules\Anagrafiche\Anagrafica;
$id_azienda = $dbo->fetchArray("SELECT idtipoanagrafica FROM an_tipianagrafiche WHERE descrizione='Azienda'")[0]['idtipoanagrafica'];
$id_cliente = $dbo->fetchArray("SELECT idtipoanagrafica FROM an_tipianagrafiche WHERE descrizione='Cliente'")[0]['idtipoanagrafica'];
$id_fornitore = $dbo->fetchArray("SELECT idtipoanagrafica FROM an_tipianagrafiche WHERE descrizione='Fornitore'")[0]['idtipoanagrafica'];
$id_tecnico = $dbo->fetchArray("SELECT idtipoanagrafica FROM an_tipianagrafiche WHERE descrizione='Tecnico'")[0]['idtipoanagrafica'];
switch (post('op')) {
case 'update':
// Informazioni sulla sede

View File

@ -4,6 +4,11 @@ include_once __DIR__.'/../../core.php';
use Modules\Anagrafiche\Anagrafica;
$id_azienda = $dbo->fetchArray("SELECT idtipoanagrafica FROM an_tipianagrafiche WHERE descrizione='Azienda'")[0]['idtipoanagrafica'];
$id_cliente = $dbo->fetchArray("SELECT idtipoanagrafica FROM an_tipianagrafiche WHERE descrizione='Cliente'")[0]['idtipoanagrafica'];
$id_fornitore = $dbo->fetchArray("SELECT idtipoanagrafica FROM an_tipianagrafiche WHERE descrizione='Fornitore'")[0]['idtipoanagrafica'];
$id_tecnico = $dbo->fetchArray("SELECT idtipoanagrafica FROM an_tipianagrafiche WHERE descrizione='Tecnico'")[0]['idtipoanagrafica'];
if (isset($id_record)) {
$anagrafica = Anagrafica::find($id_record);

View File

@ -90,6 +90,7 @@ switch (post('op')) {
'idconto' => post('idconto'),
'n_colli' => post('n_colli'),
'tipo_resa' => post('tipo_resa'),
'bollo' => 0,
'rivalsainps' => 0,
'ritenutaacconto' => 0,

View File

@ -265,8 +265,82 @@ if ($tipodoc == 'Fattura accompagnatoria di vendita') {
</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$", "required": 1 ]}
{[ "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$", "required": '.intval($record['idspedizione'] != 3).' ]}
</div>
<script>
$("#idspedizione").change( function(){
if ($(this).val() == 3) {
$("#idvettore").attr("required", false);
$("#idvettore").parent().find("label").text("'.tr('Vettore').'")
}else{
$("#idvettore").attr("required", true);
$("#idvettore").parent().find("label").text("'.tr('Vettore').'*")
}
});
</script>';
$tipo_resa = [
[
'id' => 'EXW',
'text' => 'EXW',
],
[
'id' => 'FCA',
'text' => 'FCA',
],
[
'id' => 'FAS',
'text' => 'FAS',
],
[
'id' => 'FOB',
'text' => 'FOB',
],
[
'id' => 'CFR',
'text' => 'CFR',
],
[
'id' => 'CIF',
'text' => 'CIF',
],
[
'id' => 'CPT',
'text' => 'CPT',
],
[
'id' => 'CIP',
'text' => 'CIP',
],
[
'id' => 'DAF',
'text' => 'DAF',
],
[
'id' => 'DES',
'text' => 'DES',
],
[
'id' => 'DEQ',
'text' => 'DEQ',
],
[
'id' => 'DDU',
'text' => 'DDU',
],
[
'id' => 'DDP',
'text' => 'DDP',
]
];
echo '
<div class="col-md-3">
{[ "type": "select", "label": "'.tr('Tipo Resa').'", "name": "tipo_resa", "values": '.json_encode($tipo_resa).', "readonly": '.intval($record['causale_desc'] != 'Reso').' ]}
</div>
</div>
</div>
</div>';

View File

@ -11,11 +11,24 @@ if ($module['name'] == 'Fatture di vendita') {
if (isset($id_record)) {
$fattura = Modules\Fatture\Fattura::with('tipo', 'stato')->find($id_record);
$record = $dbo->fetchOne('SELECT *, co_tipidocumento.reversed AS is_reversed, co_documenti.idagente AS idagente_fattura, co_documenti.note, co_documenti.note_aggiuntive, co_documenti.idpagamento, co_documenti.id AS iddocumento, co_statidocumento.descrizione AS `stato`, co_tipidocumento.descrizione AS `descrizione_tipodoc`,
(SELECT is_fiscale FROM zz_segments WHERE id = id_segment) AS is_fiscale,
(SELECT descrizione FROM co_ritenutaacconto WHERE id=idritenutaacconto) AS ritenutaacconto_desc,
(SELECT descrizione FROM co_rivalsainps WHERE id=idrivalsainps) AS rivalsainps_desc
FROM ((co_documenti LEFT OUTER JOIN co_statidocumento ON co_documenti.idstatodocumento=co_statidocumento.id) INNER JOIN an_anagrafiche ON co_documenti.idanagrafica=an_anagrafiche.idanagrafica) INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id WHERE co_tipidocumento.dir = '.prepare($dir).' AND co_documenti.id='.prepare($id_record));
$record = $dbo->fetchOne('SELECT *,
co_tipidocumento.reversed AS is_reversed,
co_documenti.idagente AS idagente_fattura,
co_documenti.note,
co_documenti.note_aggiuntive,
co_documenti.idpagamento,
co_documenti.id AS iddocumento,
co_statidocumento.descrizione AS `stato`,
co_tipidocumento.descrizione AS `descrizione_tipodoc`,
(SELECT is_fiscale FROM zz_segments WHERE id = id_segment) AS is_fiscale,
(SELECT descrizione FROM co_ritenutaacconto WHERE id=idritenutaacconto) AS ritenutaacconto_desc,
(SELECT descrizione FROM co_rivalsainps WHERE id=idrivalsainps) AS rivalsainps_desc,
(SELECT descrizione FROM dt_causalet WHERE id=idcausalet) AS causale_desc
FROM co_documenti
LEFT OUTER JOIN co_statidocumento ON co_documenti.idstatodocumento=co_statidocumento.id
INNER JOIN an_anagrafiche ON co_documenti.idanagrafica=an_anagrafiche.idanagrafica
INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id
WHERE co_tipidocumento.dir = '.prepare($dir).' AND co_documenti.id='.prepare($id_record));
$note_accredito = $dbo->fetchArray("SELECT co_documenti.id, IF(numero_esterno != '', numero_esterno, numero) AS numero, data FROM co_documenti JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id WHERE reversed = 1 AND ref_documento=".prepare($id_record));
}

View File

@ -153,6 +153,25 @@ class FatturaElettronica
return $this->ordini;
}
/**
* Restituisce le fatture collegaten al documento.
*
* @return array
*/
public function getFattureCollegate()
{
if (empty($this->fatture_collegate)) {
$documento = $this->getDocumento();
$database = database();
$note_accredito = $database->fetchArray("SELECT numero_esterno, data FROM co_documenti WHERE id=".prepare($documento['ref_documento']));
$this->fatture_collegate = $note_accredito;
}
return $this->fatture_collegate;
}
/**
* Restituisce le informazioni relative al documento.
*
@ -436,17 +455,23 @@ class FatturaElettronica
$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,
];
$result = [];
if ($documento['idvettore']) {
$vettore = static::getAnagrafica($documento['idvettore']);
$result['DatiAnagraficiVettore'] = static::getDatiAnagrafici($vettore);
}
$result['CausaleTrasporto'] = $causale;
$result['NumeroColli'] = $documento['n_colli'];
$result['Descrizione'] = $aspetto;
if ($documento['tipo_resa']) {
$result['TipoResa'] = $documento['tipo_resa'];
}
return $result;
}
@ -463,20 +488,20 @@ class FatturaElettronica
$result = [];
foreach ($ordini as $element) {
if (!empty($element['id_documento_fe'])) {
$dati_contratto = [
$dati = [
'IdDocumento' => $element['id_documento_fe'],
];
}
if (!empty($element['codice_cig'])) {
$dati_contratto['CodiceCIG'] = $element['codice_cig'];
$dati['CodiceCIG'] = $element['codice_cig'];
}
if (!empty($element['codice_cup'])) {
$dati_contratto['CodiceCUP'] = $element['codice_cup'];
$dati['CodiceCUP'] = $element['codice_cup'];
}
$result[] = $dati_contratto;
$result[] = $dati;
}
return $result;
@ -494,20 +519,40 @@ class FatturaElettronica
$result = [];
foreach ($contratti as $element) {
if (!empty($element['id_documento_fe'])) {
$dati_contratto = [
$dati = [
'IdDocumento' => $element['id_documento_fe'],
];
}
if (!empty($element['codice_cig'])) {
$dati_contratto['CodiceCIG'] = $element['codice_cig'];
$dati['CodiceCIG'] = $element['codice_cig'];
}
if (!empty($element['codice_cup'])) {
$dati_contratto['CodiceCUP'] = $element['codice_cup'];
$dati['CodiceCUP'] = $element['codice_cup'];
}
$result[] = $dati_contratto;
$result[] = $dati;
}
return $result;
}
/**
* Restituisce l'array responsabile per la generazione del tag DatiFattureCollegate.
*
* @return array
*/
protected static function getDatiFattureCollegate($fattura)
{
$fatture = $fattura->getFattureCollegate();
$result = [];
foreach ($fatture as $element) {
$result[] = [
'IdDocumento' => $element['numero_esterno'],
'Data' => $element['data'],
];
}
return $result;
@ -551,6 +596,18 @@ class FatturaElettronica
}
}
// Controllo le le righe per la fatturazione di contratti
$dati_fatture_collegate = static::getDatiFattureCollegate($fattura);
if (!empty($dati_fatture_collegate)) {
foreach ($dati_fatture_collegate as $dato) {
if (!empty($dato)) {
$result[] = [
'DatiFattureCollegate' => $dato,
];
}
}
}
if ($documento['tipo'] == 'Fattura accompagnatoria di vendita') {
$result['DatiTrasporto'] = static::getDatiTrasporto($fattura);
}

View File

@ -31,3 +31,5 @@ ALTER TABLE `co_documenti` CHANGE `codice_xml` `progressivo_invio` VARCHAR(255);
-- Aggiunto codice cig e codice cup per fatture e ordini
ALTER TABLE `or_ordini` ADD `codice_cig` VARCHAR(15) AFTER `tipo_sconto_globale`, ADD `codice_cup` VARCHAR(15) AFTER `codice_cig`, ADD `id_documento_fe` VARCHAR(20) AFTER `codice_cup`;
ALTER TABLE `co_righe_documenti` ADD `data_inizio_periodo` date, ADD `data_fine_periodo` date, ADD `riferimento_amministrazione` VARCHAR(20), ADD `tipo_cessione_prestazione` enum('SC', 'PR', 'AB', 'AC') DEFAULT NULL;
ALTER TABLE `co_documenti` ADD `tipo_resa` VARCHAR(3);