2018-02-19 17:57:27 +01: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 />.
*/
2018-02-19 17:57:27 +01:00
2019-03-29 12:46:17 +01:00
use Modules\Fatture\Fattura ;
2018-02-19 17:57:27 +01:00
2019-03-29 12:46:17 +01:00
include_once __DIR__ . '/../../core.php' ;
2018-06-26 14:30:26 +02:00
2019-03-29 12:46:17 +01:00
$documento = Fattura :: find ( $id_record );
2019-05-24 20:42:15 +02:00
$dir = $documento -> direzione ;
2018-02-19 17:57:27 +01:00
// Impostazioni per la gestione
$options = [
2018-10-04 17:25:42 +02:00
'op' => 'manage_riga' ,
2018-02-19 17:57:27 +01:00
'action' => 'add' ,
2019-03-29 12:46:17 +01:00
'dir' => $documento -> direzione ,
2019-05-24 20:34:39 +02:00
'conti' => $documento -> direzione == 'entrata' ? 'conti-vendite' : 'conti-acquisti' ,
'idanagrafica' => $documento [ 'idanagrafica' ],
2019-03-29 12:46:17 +01:00
'show-ritenuta-contributi' => ! empty ( $documento [ 'id_ritenuta_contributi' ]),
2020-09-29 15:27:00 +02:00
'totale_imponibile_documento' => $documento -> totale_imponibile ,
'totale_documento' => $documento -> totale ,
2022-04-08 16:54:31 +02:00
'is_nota' => $documento -> isNota (),
2020-08-17 16:25:01 +02:00
'select-options' => [
'articoli' => [
'idanagrafica' => $documento -> idanagrafica ,
'dir' => $documento -> direzione ,
'idsede_partenza' => $documento -> idsede_partenza ,
'idsede_destinazione' => $documento -> idsede_destinazione ,
2020-08-18 09:53:58 +02:00
'permetti_movimento_a_zero' => intval ( $documento -> direzione == 'uscita' ),
2022-05-19 17:42:41 +02:00
'idagente' => $documento -> idagente ,
2020-08-17 16:25:01 +02:00
],
'iva' => [
'split_payment' => $documento [ 'split_payment' ],
],
],
2018-02-19 17:57:27 +01:00
];
2019-03-29 12:46:17 +01:00
// Conto dalle impostazioni
if ( empty ( $idconto )) {
$idconto = ( $dir == 'entrata' ) ? setting ( 'Conto predefinito fatture di vendita' ) : setting ( 'Conto predefinito fatture di acquisto' );
}
2018-02-19 17:57:27 +01:00
// Dati di default
$result = [
'descrizione' => '' ,
'qta' => 1 ,
'um' => '' ,
'prezzo' => 0 ,
2020-07-07 17:15:47 +02:00
'prezzo_acquisto' => 0 ,
2018-02-19 17:57:27 +01:00
'sconto_unitario' => 0 ,
2023-09-21 16:26:22 +02:00
'tipo_sconto' => ( setting ( 'Tipo di sconto predefinito' ) == '%' ? 'PRC' : 'UNT' ),
2018-02-19 17:57:27 +01:00
'idiva' => '' ,
2018-05-24 18:41:43 +02:00
'idconto' => $idconto ,
2019-02-15 12:12:44 +01:00
'ritenuta_contributi' => true ,
2022-05-19 17:42:41 +02:00
'provvigione_default' => 0 ,
'tipo_provvigione_default' => 'PRC' ,
2018-02-19 17:57:27 +01:00
];
2022-05-19 17:42:41 +02:00
// Leggo la provvigione predefinita per l'anagrafica
2023-08-04 14:54:28 +02:00
$result [ 'provvigione_default' ] = $dbo -> fetchOne ( 'SELECT provvigione_default FROM an_anagrafiche WHERE idanagrafica=' . prepare ( $documento -> idagente ))[ 'provvigione_default' ];
2022-05-19 17:42:41 +02:00
2018-02-19 17:57:27 +01:00
// Leggo l'iva predefinita per l'anagrafica e se non c'è leggo quella predefinita generica
2019-05-24 20:34:39 +02:00
$iva = $dbo -> fetchArray ( 'SELECT idiva_' . ( $dir == 'uscita' ? 'acquisti' : 'vendite' ) . ' AS idiva FROM an_anagrafiche WHERE idanagrafica=' . prepare ( $documento [ 'idanagrafica' ]));
2018-07-08 18:11:17 +02:00
$result [ 'idiva' ] = $iva [ 0 ][ 'idiva' ] ? : setting ( 'Iva predefinita' );
2018-02-19 17:57:27 +01:00
2019-09-13 11:29:45 +02:00
if ( ! empty ( $documento -> dichiarazione )) {
$result [ 'idiva' ] = setting ( " Iva per lettere d'intento " );
}
2018-09-26 10:54:57 +02:00
// Leggo la ritenuta d'acconto predefinita per l'anagrafica e se non c'è leggo quella predefinita generica
2019-02-18 09:25:18 +01:00
// id_ritenuta_acconto_vendite oppure id_ritenuta_acconto_acquisti
2019-05-24 20:34:39 +02:00
$ritenuta_acconto = $dbo -> fetchOne ( 'SELECT id_ritenuta_acconto_' . ( $dir == 'uscita' ? 'acquisti' : 'vendite' ) . ' AS id_ritenuta_acconto FROM an_anagrafiche WHERE idanagrafica=' . prepare ( $documento [ 'idanagrafica' ]));
2019-02-20 12:47:00 +01:00
$id_ritenuta_acconto = $ritenuta_acconto [ 'id_ritenuta_acconto' ];
if ( $dir == 'entrata' && empty ( $id_ritenuta_acconto )) {
2022-01-15 18:21:48 +01:00
$id_ritenuta_acconto = setting ( " Ritenuta d'acconto predefinita " );
2019-02-20 12:47:00 +01:00
}
$options [ 'id_ritenuta_acconto_predefined' ] = $id_ritenuta_acconto ;
2018-09-26 10:54:57 +02:00
2018-02-19 17:57:27 +01:00
// Importazione della gestione dedicata
$file = 'riga' ;
2024-04-12 09:12:45 +02:00
if ( ! empty ( get ( 'is_descrizione' ))) {
2018-02-19 17:57:27 +01:00
$file = 'descrizione' ;
2018-09-26 15:37:46 +02:00
2018-10-04 17:25:42 +02:00
$options [ 'op' ] = 'manage_descrizione' ;
2024-04-12 09:12:45 +02:00
} elseif ( ! empty ( get ( 'is_articolo' ))) {
2018-02-19 17:57:27 +01:00
$file = 'articolo' ;
2019-07-11 17:20:58 +02:00
// Aggiunta sconto di default da listino per le vendite
2023-07-31 17:26:06 +02:00
$join = ( $dir == 'entrata' ? 'id_piano_sconto_vendite' : 'id_piano_sconto_acquisti' );
$listino = $dbo -> fetchOne ( 'SELECT prc_guadagno FROM an_anagrafiche INNER JOIN mg_piani_sconto ON an_anagrafiche.' . $join . '=mg_piani_sconto.id WHERE idanagrafica=' . prepare ( $documento [ 'idanagrafica' ]));
2019-07-11 17:20:58 +02:00
if ( ! empty ( $listino [ 'prc_guadagno' ])) {
2020-02-15 14:11:44 +01:00
$result [ 'sconto_percentuale' ] = $listino [ 'prc_guadagno' ];
2019-07-11 17:20:58 +02:00
$result [ 'tipo_sconto' ] = 'PRC' ;
}
2018-10-04 17:25:42 +02:00
$options [ 'op' ] = 'manage_articolo' ;
2024-04-12 09:12:45 +02:00
} elseif ( ! empty ( get ( 'is_sconto' ))) {
2019-03-29 12:46:17 +01:00
$file = 'sconto' ;
$options [ 'op' ] = 'manage_sconto' ;
2018-02-19 17:57:27 +01:00
}
echo App :: load ( $file . '.php' , $result , $options );