2017-09-07 16:51:14 +02:00
< ? php
2020-09-07 15:04:06 +02:00
/*
* OpenSTAManager : il software gestionale open source per l ' assistenza tecnica e la fatturazione
2021-01-20 15:08:51 +01:00
* Copyright ( C ) DevCode s . r . l .
2020-09-07 15:04:06 +02:00
*
* This program is free software : you can redistribute it and / or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation , either version 3 of the License , or
* ( at your option ) any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with this program . If not , see < https :// www . gnu . org / licenses />.
*/
2017-09-07 16:51:14 +02:00
include_once __DIR__ . '/../../core.php' ;
2024-02-05 17:07:33 +01:00
use Modules\Anagrafiche\Nazione ;
2019-05-02 14:27:30 +02:00
use Modules\Fatture\Fattura ;
2019-07-12 12:40:13 +02:00
$documento = Fattura :: find ( $id_record );
$banca = $documento -> getBanca ();
2023-12-06 15:06:49 +01:00
$d_qta = ( int ) setting ( 'Cifre decimali per quantità in stampa' );
$d_importi = ( int ) setting ( 'Cifre decimali per importi in stampa' );
$d_totali = ( int ) setting ( 'Cifre decimali per totali in stampa' );
2023-12-06 10:06:36 +01:00
2017-09-07 16:51:14 +02:00
// Lettura info fattura
2024-03-20 11:13:28 +01:00
$record = $dbo -> fetchOne ( ' SELECT
`co_documenti` .* ,
2024-04-18 17:44:05 +02:00
`co_statidocumento_lang` . `title` AS stato_doc ,
`co_tipidocumento_lang` . `title` AS tipo_doc ,
2024-02-26 15:53:39 +01:00
`co_tipidocumento` . `dir` AS dir ,
2024-04-18 17:44:05 +02:00
`co_pagamenti_lang` . `title` AS pagamento ,
`dt_causalet_lang` . `title` AS causalet ,
`dt_porto_lang` . `title` AS porto ,
`dt_aspettobeni_lang` . `title` AS aspettobeni ,
`dt_spedizione_lang` . `title` AS spedizione ,
2024-02-08 13:10:46 +01:00
`vettore` . `ragione_sociale` AS vettore ,
`co_banche` . `id` AS id_banca ,
`zz_segments` . `is_fiscale` AS is_fiscale ,
2024-05-23 16:05:30 +02:00
`an_anagrafiche` . `tipo` AS tipo_cliente ,
`an_anagrafiche` . `codice_destinatario` as codice_destinatario
2024-02-08 13:10:46 +01:00
FROM
`co_documenti`
INNER JOIN `an_anagrafiche` ON `an_anagrafiche` . `idanagrafica` = `co_documenti` . `idanagrafica`
2024-02-27 11:10:40 +01:00
LEFT JOIN `an_anagrafiche` AS vettore ON `vettore` . `idanagrafica` = `co_documenti` . `idvettore`
2024-02-26 15:53:39 +01:00
INNER JOIN `co_statidocumento` ON `co_documenti` . `idstatodocumento` = `co_statidocumento` . `id`
2024-03-22 15:52:24 +01:00
LEFT JOIN `co_statidocumento_lang` ON ( `co_statidocumento_lang` . `id_record` = `co_statidocumento` . `id` AND `co_statidocumento_lang` . `id_lang` = '.prepare(Models\Locale::getDefault()->id).' )
2024-02-08 13:10:46 +01:00
INNER JOIN `co_tipidocumento` ON `co_documenti` . `idtipodocumento` = `co_tipidocumento` . `id`
2024-03-22 15:52:24 +01:00
LEFT JOIN `co_tipidocumento_lang` ON ( `co_tipidocumento_lang` . `id_record` = `co_tipidocumento` . `id` AND `co_tipidocumento_lang` . `id_lang` = '.prepare(Models\Locale::getDefault()->id).' )
2024-02-08 13:10:46 +01:00
LEFT JOIN `co_pagamenti` ON `co_documenti` . `idpagamento` = `co_pagamenti` . `id`
2024-03-22 15:52:24 +01:00
LEFT JOIN `co_pagamenti_lang` ON ( `co_pagamenti_lang` . `id_record` = `co_pagamenti` . `id` AND `co_pagamenti_lang` . `id_lang` = '.prepare(Models\Locale::getDefault()->id).' )
2024-02-08 13:10:46 +01:00
LEFT JOIN `co_banche` ON `co_banche` . `id` = `co_documenti` . `id_banca_azienda`
INNER JOIN `zz_segments` ON `co_documenti` . `id_segment` = `zz_segments` . `id`
LEFT JOIN `dt_causalet` ON `dt_causalet` . `id` = `co_documenti` . `idcausalet`
2024-03-22 15:52:24 +01:00
LEFT JOIN `dt_causalet_lang` ON ( `dt_causalet_lang` . `id_record` = `dt_causalet` . `id` AND `dt_causalet_lang` . `id_lang` = '.prepare(Models\Locale::getDefault()->id).' )
2024-02-08 13:10:46 +01:00
LEFT JOIN `dt_porto` ON `dt_porto` . `id` = `co_documenti` . `idporto`
2024-03-22 15:52:24 +01:00
LEFT JOIN `dt_porto_lang` ON ( `dt_porto_lang` . `id_record` = `dt_porto` . `id` AND `dt_porto_lang` . `id_lang` = '.prepare(Models\Locale::getDefault()->id).' )
2024-02-08 13:10:46 +01:00
LEFT JOIN `dt_aspettobeni` ON `dt_aspettobeni` . `id` = `co_documenti` . `idaspettobeni`
2024-03-22 15:52:24 +01:00
LEFT JOIN `dt_aspettobeni_lang` ON ( `dt_aspettobeni_lang` . `id_record` = `dt_aspettobeni` . `id` AND `dt_aspettobeni_lang` . `id_lang` = '.prepare(Models\Locale::getDefault()->id).' )
2024-02-08 13:10:46 +01:00
LEFT JOIN `dt_spedizione` ON `dt_spedizione` . `id` = `co_documenti` . `idspedizione`
2024-03-22 15:52:24 +01:00
LEFT JOIN `dt_spedizione_lang` ON ( `dt_spedizione_lang` . `id_record` = `dt_spedizione` . `id` AND `dt_spedizione_lang` . `id_lang` = '.prepare(Models\Locale::getDefault()->id).' )
2024-02-08 13:10:46 +01:00
WHERE
`co_documenti` . `id` = ' . prepare ( $id_record ));
2017-09-07 16:51:14 +02:00
2018-09-27 16:19:25 +02:00
$record [ 'rivalsainps' ] = floatval ( $record [ 'rivalsainps' ]);
$record [ 'ritenutaacconto' ] = floatval ( $record [ 'ritenutaacconto' ]);
$record [ 'bollo' ] = floatval ( $record [ 'bollo' ]);
2017-12-20 14:05:14 +01:00
2020-09-09 16:55:45 +02:00
$nome_banca = $banca -> nome ;
$iban_banca = $banca -> iban ;
$bic_banca = $banca -> bic ;
2018-04-23 12:10:23 +02:00
2018-09-27 16:19:25 +02:00
$module_name = ( $record [ 'dir' ] == 'entrata' ) ? 'Fatture di vendita' : 'Fatture di acquisto' ;
2017-09-07 16:51:14 +02:00
2018-09-27 16:19:25 +02:00
$id_cliente = $record [ 'idanagrafica' ];
2021-04-28 09:33:26 +02:00
$tipo_cliente = $record [ 'tipo_cliente' ];
2017-09-07 16:51:14 +02:00
2018-09-27 16:19:25 +02:00
$tipo_doc = $record [ 'tipo_doc' ];
$numero = ! empty ( $record [ 'numero_esterno' ]) ? $record [ 'numero_esterno' ] : $record [ 'numero' ];
2022-02-21 11:17:21 +01:00
// Fix per le fattura accompagnatorie
$fattura_accompagnatoria = ( $record [ 'tipo_doc' ] == 'Fattura accompagnatoria di vendita' );
2018-09-27 16:19:25 +02:00
// Caso particolare per le fatture pro forma
if ( empty ( $record [ 'is_fiscale' ])) {
2017-09-15 15:03:27 +02:00
$tipo_doc = tr ( 'Fattura pro forma' );
2017-09-07 16:51:14 +02:00
}
// Leggo i dati della destinazione (se 0=sede legale, se!=altra sede da leggere da tabella an_sedi)
$destinazione = '' ;
2019-05-29 19:17:57 +02:00
if ( ! empty ( $record [ 'idsede_destinazione' ])) {
2024-05-23 16:05:30 +02:00
$rsd = $dbo -> fetchArray ( 'SELECT (SELECT `codice` FROM `an_anagrafiche` WHERE `idanagrafica`=`an_sedi`.`idanagrafica`) AS codice, (SELECT `ragione_sociale` FROM `an_anagrafiche` WHERE `idanagrafica`=`an_sedi`.`idanagrafica`) AS ragione_sociale, `nomesede`, `indirizzo`, `indirizzo2`, `cap`, `citta`, `provincia`, `piva`, `codice_fiscale`, `id_nazione`, `codice_destinatario` FROM `an_sedi` WHERE `idanagrafica`=' . prepare ( $id_cliente ) . ' AND id=' . prepare ( $record [ 'idsede_destinazione' ]));
2018-05-24 18:47:15 +02:00
2019-05-29 19:17:57 +02:00
if ( ! empty ( $rsd [ 0 ][ 'nomesede' ])) {
$destinazione .= $rsd [ 0 ][ 'nomesede' ] . '<br/>' ;
}
if ( ! empty ( $rsd [ 0 ][ 'indirizzo' ])) {
$destinazione .= $rsd [ 0 ][ 'indirizzo' ] . '<br/>' ;
}
if ( ! empty ( $rsd [ 0 ][ 'indirizzo2' ])) {
$destinazione .= $rsd [ 0 ][ 'indirizzo2' ] . '<br/>' ;
}
if ( ! empty ( $rsd [ 0 ][ 'cap' ])) {
$destinazione .= $rsd [ 0 ][ 'cap' ] . ' ' ;
}
if ( ! empty ( $rsd [ 0 ][ 'citta' ])) {
$destinazione .= $rsd [ 0 ][ 'citta' ];
}
if ( ! empty ( $rsd [ 0 ][ 'provincia' ])) {
$destinazione .= ' (' . $rsd [ 0 ][ 'provincia' ] . ')' ;
}
2020-10-04 10:13:23 +02:00
if ( ! empty ( $rsd [ 0 ][ 'id_nazione' ])) {
2024-02-05 17:07:33 +01:00
$nazione = Nazione :: find ( $rsd [ 0 ][ 'id_nazione' ]);
2020-10-16 08:31:10 +02:00
if ( $nazione [ 'iso2' ] != 'IT' ) {
2024-04-18 17:44:05 +02:00
$destinazione .= ' - ' . $nazione -> getTranslation ( 'title' );
2020-10-04 10:13:23 +02:00
}
}
2024-05-23 16:05:30 +02:00
if ( ! empty ( $rsd [ 0 ][ 'codice_destinatario' ])) {
$codice_destinatario = $rsd [ 0 ][ 'codice_destinatario' ];
}
2019-05-29 19:17:57 +02:00
}
2019-07-10 11:53:35 +02:00
2017-09-07 16:51:14 +02:00
// Sostituzioni specifiche
2017-09-08 18:19:39 +02:00
$custom = [
2017-09-15 15:03:27 +02:00
'tipo_doc' => Stringy\Stringy :: create ( $tipo_doc ) -> toUpperCase (),
2019-07-10 11:53:35 +02:00
'numero' => $numero ,
2021-02-24 16:38:16 +01:00
'tipo_documento' => $tipo_doc ,
2018-09-27 16:19:25 +02:00
'data' => Translator :: dateToLocale ( $record [ 'data' ]),
2023-11-27 11:18:54 +01:00
'pagamento' => $record [ 'id_pagamento' ],
2017-09-07 16:51:14 +02:00
'c_destinazione' => $destinazione ,
2018-09-27 16:19:25 +02:00
'aspettobeni' => $record [ 'aspettobeni' ],
'causalet' => $record [ 'causalet' ],
'porto' => $record [ 'porto' ],
'n_colli' => ! empty ( $record [ 'n_colli' ]) ? $record [ 'n_colli' ] : '' ,
'spedizione' => $record [ 'spedizione' ],
'vettore' => $record [ 'vettore' ],
2018-04-23 12:10:23 +02:00
'appoggiobancario' => $nome_banca ,
'codiceiban' => $iban_banca ,
'bic' => $bic_banca ,
2017-09-07 16:51:14 +02:00
];
2018-02-16 11:36:38 +01:00
// Accesso solo a:
2018-03-24 13:56:49 +01:00
// - cliente se è impostato l'idanagrafica di un Cliente
2018-03-27 16:46:22 +02:00
// - utente qualsiasi con permessi almeno in lettura sul modulo
// - admin
2018-07-08 15:41:38 +02:00
if (( Auth :: user ()[ 'gruppo' ] == 'Clienti' && $id_cliente != Auth :: user ()[ 'idanagrafica' ] && ! Auth :: admin ()) || Modules :: getPermission ( $module_name ) == '-' ) {
2021-02-18 18:48:44 +01:00
exit ( tr ( 'Non hai i permessi per questa stampa!' ));
2017-09-07 16:51:14 +02:00
}
2018-03-29 18:20:36 +02:00
if ( $fattura_accompagnatoria ) {
$settings [ 'footer-height' ] += 40 ;
}