2018-02-03 16:29:53 +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-03 16:29:53 +01:00
include_once __DIR__ . '/../../../core.php' ;
$idarticolo = get ( 'idarticolo' );
2021-12-17 13:36:12 +01:00
$limit = get ( 'limit' );
2018-02-03 16:29:53 +01:00
switch ( $resource ) {
// Legge gli ultimi prezzi di vendita di un determinato cliente e un determinato articolo e li visualizza per suggerire il prezzo di vendita
case 'getprezzi' :
2022-07-24 22:48:30 +02:00
$ids = [];
2018-02-03 16:29:53 +01:00
$idanagrafica = get ( 'idanagrafica' );
$ids = [ '""' ];
echo '<small>' ;
if ( ! empty ( $idarticolo )) {
// Ultime 5 vendite al cliente
2020-04-15 16:25:44 +02:00
$documenti = $dbo -> fetchArray ( 'SELECT iddocumento AS id, "Fattura" AS tipo, "Fatture di vendita" AS modulo, (subtotale-sconto)/qta AS costo_unitario, (SELECT numero FROM co_documenti WHERE id=iddocumento) AS n_documento, (SELECT numero_esterno FROM co_documenti WHERE id=iddocumento) AS n2_documento, (SELECT data FROM co_documenti WHERE id=iddocumento) AS data_documento FROM co_righe_documenti WHERE idarticolo=' . prepare ( $idarticolo ) . ' AND iddocumento IN(SELECT id FROM co_documenti WHERE idtipodocumento IN(SELECT id FROM co_tipidocumento WHERE dir="entrata") AND idanagrafica=' . prepare ( $idanagrafica ) . ' )
UNION
2022-05-09 12:08:09 +02:00
SELECT idddt AS id , " Ddt " AS tipo , " Ddt di vendita " AS modulo , ( subtotale - sconto ) / qta AS costo_unitario , ( SELECT numero FROM dt_ddt WHERE id = idddt ) AS n_documento , ( SELECT numero_esterno FROM dt_ddt WHERE id = idddt ) AS n2_documento , ( SELECT data FROM dt_ddt WHERE id = idddt ) AS data_documento FROM dt_righe_ddt WHERE idarticolo = '.$idarticolo.' AND idddt IN ( SELECT id FROM dt_ddt WHERE idtipoddt IN ( SELECT id FROM dt_tipiddt WHERE dir = " entrata " ) AND idanagrafica = '.prepare($idanagrafica).' ) ORDER BY id DESC LIMIT 0 , 5 ' );
2018-02-03 16:29:53 +01:00
2020-04-15 16:25:44 +02:00
if ( sizeof ( $documenti ) > 0 ) {
2021-10-26 10:29:30 +02:00
echo " <br/><table class='table table-striped table-bordered table-extra-condensed' > \n " ;
2020-03-27 13:48:55 +01:00
echo " <tr><th width='180'>Documento</th> \n " ;
echo " <th width='100' class='text-right' >Totale</th></tr> \n " ;
2018-02-03 16:29:53 +01:00
2020-04-15 16:25:44 +02:00
for ( $i = 0 ; $i < sizeof ( $documenti ); ++ $i ) {
( $documenti [ $i ][ 'n2_documento' ] != '' ) ? $n_documento = $documenti [ $i ][ 'n2_documento' ] : $n_documento = $documenti [ $i ][ 'n_documento' ];
2018-02-03 16:29:53 +01:00
2020-04-15 16:25:44 +02:00
$link_id = Modules :: get ( $documenti [ $i ][ 'modulo' ])[ 'id' ];
2020-09-23 17:53:19 +02:00
echo " <tr><td class='first_cell text-left'><a href=' " . base_path () . '/editor.php?id_module=' . $link_id . '&id_record=' . $documenti [ $i ][ 'id' ] . " ' target= \" _blank \" title= \" Apri il documento su una nuova finestra \" > " . $documenti [ $i ][ 'tipo' ] . '. n. ' . $n_documento . ' del ' . Translator :: dateToLocale ( $documenti [ $i ][ 'data_documento' ]) . " </a></td> \n " ;
2020-04-15 16:25:44 +02:00
echo " <td class='table_cell text-right'> " . moneyFormat ( $documenti [ $i ][ 'costo_unitario' ]) . " </td></tr> \n " ;
2022-07-24 22:48:30 +02:00
$ids [] = '"' . $documenti [ $i ][ 'id' ] . '"' ;
2018-02-03 16:29:53 +01:00
}
echo " </table> \n " ;
} else {
2020-04-15 16:25:44 +02:00
echo '<br/>' . tr ( 'Nessuna vendita trovata di questo articolo al cliente' ) . " ...<br/> \n " ;
2018-02-03 16:29:53 +01:00
}
}
echo '</small>' ;
break ;
2024-01-15 15:30:45 +01:00
// Legge gli ultimi prezzi di vendita di un determinato articolo e li visualizza per suggerire il prezzo di vendita
2018-02-03 16:29:53 +01:00
case 'getprezzivendita' :
2022-07-24 22:48:30 +02:00
$ids = [];
2018-02-03 16:29:53 +01:00
echo '<small>' ;
// Ultime 5 vendite totali
2023-06-05 12:16:05 +02:00
$documenti = $dbo -> fetchArray ( '
SELECT
iddocumento AS id ,
co_tipidocumento . descrizione AS tipo ,
" Fatture di vendita " AS modulo ,
(( subtotale - sconto ) / qta * IF ( co_tipidocumento . reversed , - 1 , 1 )) AS costo_unitario ,
co_documenti . numero AS n_documento ,
co_documenti . numero_esterno AS n2_documento ,
co_documenti . data AS data_documento
FROM
co_righe_documenti
INNER JOIN co_documenti ON co_documenti . id = co_righe_documenti . iddocumento
INNER JOIN co_tipidocumento ON co_tipidocumento . id = co_documenti . idtipodocumento
WHERE
idarticolo = '.prepare($idarticolo).' AND dir = " entrata "
2020-04-15 16:25:44 +02:00
UNION
2023-06-05 12:16:05 +02:00
SELECT
idddt AS id ,
dt_tipiddt . descrizione AS tipo ,
" Ddt di vendita " AS modulo ,
( subtotale - sconto ) / qta AS costo_unitario ,
dt_ddt . numero AS n_documento ,
dt_ddt . numero_esterno AS n2_documento ,
dt_ddt . data AS data_documento
FROM
dt_righe_ddt
INNER JOIN dt_ddt ON dt_ddt . id = dt_righe_ddt . idddt
INNER JOIN dt_tipiddt ON dt_tipiddt . id = dt_ddt . idtipoddt
WHERE
idarticolo = '.prepare($idarticolo).' AND dir = " entrata "
ORDER BY
id
DESC ' );
2018-02-03 16:29:53 +01:00
2020-04-15 16:25:44 +02:00
if ( sizeof ( $documenti ) > 0 ) {
2021-12-17 13:36:12 +01:00
echo " <table class='table table-striped table-bordered table-extra-condensed' > \n " ;
2020-03-27 13:48:55 +01:00
echo " <tr><th width='180'>Documento</th> \n " ;
echo " <th width='100' class='text-right' >Totale</th></tr> \n " ;
2018-02-03 16:29:53 +01:00
2020-04-15 16:25:44 +02:00
for ( $i = 0 ; $i < sizeof ( $documenti ); ++ $i ) {
( $documenti [ $i ][ 'n2_documento' ] != '' ) ? $n_documento = $documenti [ $i ][ 'n2_documento' ] : $n_documento = $documenti [ $i ][ 'n_documento' ];
2018-02-03 16:29:53 +01:00
2020-04-15 16:25:44 +02:00
$link_id = Modules :: get ( $documenti [ $i ][ 'modulo' ])[ 'id' ];
2023-06-05 12:16:05 +02:00
echo " <tr><td class='first_cell text-left'><a href=' " . base_path () . '/editor.php?id_module=' . $link_id . '&id_record=' . $documenti [ $i ][ 'id' ] . " ' target= \" _blank \" title= \" Apri il documento su una nuova finestra \" > " . $documenti [ $i ][ 'tipo' ] . ' n. ' . $n_documento . ' del ' . Translator :: dateToLocale ( $documenti [ $i ][ 'data_documento' ]) . " </a></td> \n " ;
2020-04-15 16:25:44 +02:00
echo " <td class='table_cell text-right'> " . moneyFormat ( $documenti [ $i ][ 'costo_unitario' ]) . " </td></tr> \n " ;
2022-07-24 22:48:30 +02:00
$ids [] = '"' . $documenti [ $i ][ 'id' ] . '"' ;
2018-02-03 16:29:53 +01:00
}
echo " </table> \n " ;
} else {
2021-12-17 13:36:12 +01:00
echo '' . tr ( 'Nessuna vendita trovata di questo articolo' ) . " ...<br/> \n " ;
2018-02-03 16:29:53 +01:00
}
break ;
2024-01-15 15:30:45 +01:00
// Legge gli ultimi prezzi di acquisto di un determinato articolo e li visualizza per suggerire il prezzo di acquisto
2018-02-03 16:29:53 +01:00
case 'getprezziacquisto' :
2022-07-24 22:48:30 +02:00
$ids = [];
2018-02-03 16:29:53 +01:00
echo '<small>' ;
2020-04-15 16:25:44 +02:00
// Ultimi 5 acquisti totali
2023-06-05 12:16:05 +02:00
$documenti = $dbo -> fetchArray ( '
SELECT
iddocumento AS id ,
co_tipidocumento . descrizione AS tipo ,
" Fatture di acquisto " AS modulo ,
(( subtotale - sconto ) / qta * IF ( co_tipidocumento . reversed , - 1 , 1 )) AS costo_unitario ,
co_documenti . numero AS n_documento ,
co_documenti . numero_esterno AS n2_documento ,
co_documenti . data AS data_documento
FROM
co_righe_documenti
INNER JOIN co_documenti ON co_documenti . id = co_righe_documenti . iddocumento
INNER JOIN co_tipidocumento ON co_tipidocumento . id = co_documenti . idtipodocumento
WHERE
idarticolo = '.prepare($idarticolo).' AND dir = " uscita "
2020-04-15 16:25:44 +02:00
UNION
2023-06-05 12:16:05 +02:00
SELECT
idddt AS id ,
dt_tipiddt . descrizione AS tipo ,
" Ddt di acquisto " AS modulo ,
( subtotale - sconto ) / qta AS costo_unitario ,
dt_ddt . numero AS n_documento ,
dt_ddt . numero_esterno AS n2_documento ,
dt_ddt . data AS data_documento
FROM
dt_righe_ddt
INNER JOIN dt_ddt ON dt_ddt . id = dt_righe_ddt . idddt
INNER JOIN dt_tipiddt ON dt_tipiddt . id = dt_ddt . idtipoddt
WHERE
idarticolo = '.prepare($idarticolo).' AND dir = " uscita "
ORDER BY
id
DESC ' );
2018-02-03 16:29:53 +01:00
2020-04-15 16:25:44 +02:00
if ( sizeof ( $documenti ) > 0 ) {
2021-12-17 13:36:12 +01:00
echo " <table class='table table-striped table-bordered table-extra-condensed' > \n " ;
2020-03-27 13:48:55 +01:00
echo " <tr><th width='180'>Documento</th> \n " ;
2020-04-15 16:25:44 +02:00
echo " <th width='100' class='text-right' >Totale</th></tr> \n " ;
2018-02-03 16:29:53 +01:00
2020-04-15 16:25:44 +02:00
for ( $i = 0 ; $i < sizeof ( $documenti ); ++ $i ) {
( $documenti [ $i ][ 'n2_documento' ] != '' ) ? $n_documento = $documenti [ $i ][ 'n2_documento' ] : $n_documento = $documenti [ $i ][ 'n_documento' ];
2018-02-03 16:29:53 +01:00
2020-04-15 16:25:44 +02:00
$link_id = Modules :: get ( $documenti [ $i ][ 'modulo' ])[ 'id' ];
2023-06-05 12:16:05 +02:00
echo " <tr><td class='first_cell text-left'><a href=' " . base_path () . '/editor.php?id_module=' . $link_id . '&id_record=' . $documenti [ $i ][ 'id' ] . " ' target= \" _blank \" title= \" Apri il documento su una nuova finestra \" > " . $documenti [ $i ][ 'tipo' ] . ' n. ' . $n_documento . ' del ' . Translator :: dateToLocale ( $documenti [ $i ][ 'data_documento' ]) . " </a></td> \n " ;
2020-04-15 16:25:44 +02:00
echo " <td class='table_cell text-right'> " . moneyFormat ( $documenti [ $i ][ 'costo_unitario' ]) . " </td></tr> \n " ;
2022-07-24 22:48:30 +02:00
$ids [] = '"' . $documenti [ $i ][ 'id' ] . '"' ;
2018-02-03 16:29:53 +01:00
}
echo " </table> \n " ;
} else {
2021-12-17 13:36:12 +01:00
echo '' . tr ( 'Nessun acquisto trovato di questo articolo' ) . " ...<br/> \n " ;
2018-02-03 16:29:53 +01:00
}
2020-08-27 09:15:30 +02:00
break ;
2024-01-15 15:30:45 +01:00
/*
* Opzioni utilizzate :
* - id_articolo
* - id_anagrafica
*/
2020-10-30 14:19:02 +01:00
case 'dettagli_articolo' :
2020-08-27 09:15:30 +02:00
$id_articolo = get ( 'id_articolo' );
$id_anagrafica = get ( 'id_anagrafica' );
$direzione = get ( 'dir' ) == 'uscita' ? 'uscita' : 'entrata' ;
if ( empty ( $id_articolo ) || empty ( $id_anagrafica )) {
return ;
}
$prezzi_ivati = setting ( 'Utilizza prezzi di vendita comprensivi di IVA' );
2022-11-17 12:47:29 +01:00
// Prezzi netti clienti / listino fornitore
2020-10-30 14:19:02 +01:00
$query = ' SELECT minimo , massimo ,
sconto_percentuale ,
2020-08-27 09:15:30 +02:00
'.($prezzi_ivati ? ' prezzo_unitario_ivato ' : ' prezzo_unitario ').' AS prezzo_unitario
FROM mg_prezzi_articoli
WHERE id_articolo = '.prepare($id_articolo).' AND dir = '.prepare($direzione).' | where |
ORDER BY minimo ASC , massimo DESC ' ;
$query_anagrafica = replace ( $query , [
'|where|' => ' AND id_anagrafica = ' . prepare ( $id_anagrafica ),
]);
2022-11-15 17:38:42 +01:00
$prezzi = $database -> fetchArray ( $query_anagrafica );
2022-11-17 12:47:29 +01:00
// Prezzi listini clienti
2022-11-15 17:38:42 +01:00
$query = ' SELECT sconto_percentuale AS sconto_percentuale_listino ,
'.($prezzi_ivati ? ' prezzo_unitario_ivato ' : ' prezzo_unitario ').' AS prezzo_unitario_listino
FROM mg_listini
LEFT JOIN mg_listini_articoli ON mg_listini . id = mg_listini_articoli . id_listino
LEFT JOIN an_anagrafiche ON mg_listini . id = an_anagrafiche . id_listino
2023-12-29 16:15:38 +01:00
WHERE mg_listini . data_attivazione <= NOW ()
AND ( mg_listini_articoli . data_scadenza >= NOW () OR ( mg_listini_articoli . data_scadenza IS NULL AND mg_listini . data_scadenza_predefinita >= NOW ()))
AND mg_listini . attivo = 1
AND id_articolo = '.prepare($id_articolo).'
AND dir = '.prepare($direzione).'
AND idanagrafica = ' . prepare ( $id_anagrafica );
$listino = $database -> fetchArray ( $query );
2020-08-27 09:15:30 +02:00
2022-11-17 12:47:29 +01:00
// Prezzi listini clienti sempre visibili
$query = ' SELECT mg_listini . nome , sconto_percentuale AS sconto_percentuale_listino_visibile ,
'.($prezzi_ivati ? ' prezzo_unitario_ivato ' : ' prezzo_unitario ').' AS prezzo_unitario_listino_visibile
FROM mg_listini
LEFT JOIN mg_listini_articoli ON mg_listini . id = mg_listini_articoli . id_listino
2023-12-29 16:15:38 +01:00
WHERE mg_listini . data_attivazione <= NOW ()
AND ( mg_listini_articoli . data_scadenza >= NOW () OR ( mg_listini_articoli . data_scadenza IS NULL AND mg_listini . data_scadenza_predefinita >= NOW ()))
AND mg_listini . attivo = 1
AND mg_listini . is_sempre_visibile = 1
AND id_articolo = '.prepare($id_articolo).'
AND dir = ' . prepare ( $direzione );
2022-11-17 12:47:29 +01:00
$listini_sempre_visibili = $database -> fetchArray ( $query );
// Prezzi scheda articolo
2022-11-15 17:38:42 +01:00
if ( $direzione == 'uscita' ) {
$prezzo_articolo = $database -> fetchArray ( 'SELECT prezzo_acquisto AS prezzo_scheda FROM mg_articoli WHERE id = ' . prepare ( $id_articolo ));
} else {
$prezzo_articolo = $database -> fetchArray ( 'SELECT ' . ( $prezzi_ivati ? 'prezzo_vendita_ivato' : 'prezzo_vendita' ) . ' AS prezzo_scheda FROM mg_articoli WHERE id = ' . prepare ( $id_articolo ));
2020-08-27 09:15:30 +02:00
}
2022-11-15 17:38:42 +01:00
// Ultimo prezzo al cliente
$ultimo_prezzo = $dbo -> fetchArray ( 'SELECT ' . ( $prezzi_ivati ? '(prezzo_unitario_ivato-sconto_unitario_ivato)' : '(prezzo_unitario-sconto_unitario)' ) . ' AS prezzo_ultimo FROM co_righe_documenti LEFT JOIN co_documenti ON co_documenti.id=co_righe_documenti.iddocumento WHERE idarticolo=' . prepare ( $id_articolo ) . ' AND idanagrafica=' . prepare ( $id_anagrafica ) . ' AND idtipodocumento IN(SELECT id FROM co_tipidocumento WHERE dir=' . prepare ( $direzione ) . ') ORDER BY data DESC LIMIT 0,1' );
2022-11-17 12:47:29 +01:00
$results = array_merge ( $prezzi , $listino , $listini_sempre_visibili , $prezzo_articolo , $ultimo_prezzo );
2022-11-15 17:38:42 +01:00
2020-08-27 09:15:30 +02:00
echo json_encode ( $results );
2018-02-03 16:29:53 +01:00
break ;
}