#779 Ottimizzazione suggerimento prezzi di acquisto e vendita

This commit is contained in:
loviuz 2020-04-15 16:25:44 +02:00
parent 7d97096801
commit 70322be957
2 changed files with 50 additions and 45 deletions

View File

@ -16,10 +16,11 @@ if (empty($result['idarticolo'])) {
</div>'; </div>';
} else { } else {
$database = database(); $database = database();
$articolo = $database->fetchArray('SELECT codice, descrizione FROM mg_articoli WHERE id = '.prepare($result['idarticolo']))[0]; $articolo = $database->fetchArray('SELECT id, codice, descrizione FROM mg_articoli WHERE id = '.prepare($result['idarticolo']))[0];
echo ' echo '
<p><strong>'.tr('Articolo').':</strong> '.$articolo['codice'].' - '.$articolo['descrizione'].'.</p>'; <p><strong>'.tr('Articolo').':</strong> '.$articolo['codice'].' - '.$articolo['descrizione'].'.</p>
<input type="hidden" name="idarticolo" id="idarticolo" value="'.$articolo['id'].'">';
} }
// Selezione impianto per gli Interventi // Selezione impianto per gli Interventi
@ -41,22 +42,22 @@ if ($module['name'] != 'Contratti' && $module['name'] != 'Preventivi') {
echo ' echo '
<div class="row" id="prezzi_articolo"> <div class="row" id="prezzi_articolo">
<div class="col-md-4 text-center"> <div class="col-md-4 text-center">
<button type="button" class="btn btn-sm btn-info btn-block '.($disabled ? 'disabled' : '').'" '.($disabled ? 'disabled' : '').' onclick="$(\'#prezzi\').toggleClass(\'hide\'); $(\'#prezzi\').load(\''.ROOTDIR."/ajax_complete.php?module=Articoli&op=getprezzi&idarticolo=' + $('#idarticolo option:selected').val() + '&idanagrafica=".$options['idanagrafica'].'\');"> <button type="button" class="btn btn-sm btn-info btn-block '.($disabled ? 'disabled' : '').'" '.($disabled ? 'disabled' : '').' onclick="$(\'#prezziacquisto\').toggleClass(\'hide\'); $(\'#prezziacquisto\').load(\''.ROOTDIR."/ajax_complete.php?module=Articoli&op=getprezziacquisto&idarticolo=' + ( $('#idarticolo option:selected').val() || $('#idarticolo').val()) + '&idanagrafica=".$options['idanagrafica'].'\');">
<i class="fa fa-search"></i> '.tr('Visualizza ultimi prezzi (cliente)').' <i class="fa fa-search"></i> '.tr('Ultimi prezzi di acquisto').'
</button>
<div id="prezzi" class="hide"></div>
</div>
<div class="col-md-4 text-center">
<button type="button" class="btn btn-sm btn-info btn-block '.($disabled ? 'disabled' : '').'" '.($disabled ? 'disabled' : '').' onclick="$(\'#prezziacquisto\').toggleClass(\'hide\'); $(\'#prezziacquisto\').load(\''.ROOTDIR."/ajax_complete.php?module=Articoli&op=getprezziacquisto&idarticolo=' + $('#idarticolo option:selected').val() + '&idanagrafica=".$options['idanagrafica'].'\');">
<i class="fa fa-search"></i> '.tr('Visualizza ultimi prezzi (acquisto)').'
</button> </button>
<div id="prezziacquisto" class="hide"></div> <div id="prezziacquisto" class="hide"></div>
</div> </div>
<div class="col-md-4 text-center"> <div class="col-md-4 text-center">
<button type="button" class="btn btn-sm btn-info btn-block '.($disabled ? 'disabled' : '').'" '.($disabled ? 'disabled' : '').' onclick="$(\'#prezzivendita\').toggleClass(\'hide\'); $(\'#prezzivendita\').load(\''.ROOTDIR."/ajax_complete.php?module=Articoli&op=getprezzivendita&idarticolo=' + $('#idarticolo option:selected').val() + '&idanagrafica=".$options['idanagrafica'].'\');"> <button type="button" class="btn btn-sm btn-info btn-block '.($disabled ? 'disabled' : '').'" '.($disabled ? 'disabled' : '').' onclick="$(\'#prezzi\').toggleClass(\'hide\'); $(\'#prezzi\').load(\''.ROOTDIR."/ajax_complete.php?module=Articoli&op=getprezzi&idarticolo=' + ( $('#idarticolo option:selected').val() || $('#idarticolo').val()) + '&idanagrafica=".$options['idanagrafica'].'\');">
<i class="fa fa-search"></i> '.tr('Visualizza ultimi prezzi (vendita)').' <i class="fa fa-search"></i> '.tr('Ultimi prezzi al cliente').'
</button>
<div id="prezzi" class="hide"></div>
</div>
<div class="col-md-4 text-center">
<button type="button" class="btn btn-sm btn-info btn-block '.($disabled ? 'disabled' : '').'" '.($disabled ? 'disabled' : '').' onclick="$(\'#prezzivendita\').toggleClass(\'hide\'); $(\'#prezzivendita\').load(\''.ROOTDIR."/ajax_complete.php?module=Articoli&op=getprezzivendita&idarticolo=' + ( $('#idarticolo option:selected').val() || $('#idarticolo').val()) + '&idanagrafica=".$options['idanagrafica'].'\');">
<i class="fa fa-search"></i> '.tr('Ultimi prezzi di vendita').'
</button> </button>
<div id="prezzivendita" class="hide"></div> <div id="prezzivendita" class="hide"></div>
</div> </div>

View File

@ -13,24 +13,26 @@ switch ($resource) {
echo '<small>'; echo '<small>';
if (!empty($idarticolo)) { if (!empty($idarticolo)) {
// Ultime 5 vendite al cliente // Ultime 5 vendite al cliente
$fatture = $dbo->fetchArray('SELECT iddocumento, (subtotale-sconto)/qta AS costo_unitario, (SELECT numero FROM co_documenti WHERE id=iddocumento) AS n_fattura, (SELECT numero_esterno FROM co_documenti WHERE id=iddocumento) AS n2_fattura, (SELECT data FROM co_documenti WHERE id=iddocumento) AS data_fattura FROM co_righe_documenti WHERE idarticolo="'.$idarticolo."\" AND iddocumento IN(SELECT id FROM co_documenti WHERE idtipodocumento IN(SELECT id FROM co_tipidocumento WHERE dir='entrata') AND idanagrafica=\"".$idanagrafica.'") LIMIT 0,5'); $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
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).') LIMIT 0,5');
if (sizeof($fatture) > 0) { if (sizeof($documenti) > 0) {
echo "<br/><table cellspacing='0' class='table-striped table-bordered' >\n"; echo "<br/><table cellspacing='0' class='table-striped table-bordered' >\n";
echo "<tr><th width='180'>Documento</th>\n"; echo "<tr><th width='180'>Documento</th>\n";
echo "<th width='100' class='text-right' >Totale</th></tr>\n"; echo "<th width='100' class='text-right' >Totale</th></tr>\n";
for ($i = 0; $i < sizeof($fatture); ++$i) { for ($i = 0; $i < sizeof($documenti); ++$i) {
($fatture[$i]['n2_fattura'] != '') ? $n_fattura = $fatture[$i]['n2_fattura'] : $n_fattura = $fatture[$i]['n_fattura']; ($documenti[$i]['n2_documento'] != '') ? $n_documento = $documenti[$i]['n2_documento'] : $n_documento = $documenti[$i]['n_documento'];
$link_id = Modules::get('Fatture di vendita')['id']; $link_id = Modules::get($documenti[$i]['modulo'])['id'];
echo "<tr><td class='first_cell text-left'><a href='".ROOTDIR.'/editor.php?id_module='.$link_id.'&id_record='.$fatture[$i]['iddocumento']."' target=\"_blank\" title=\"Apri il documento su una nuova finestra\">Fatt. n. ".$n_fattura.' del '.Translator::dateToLocale($fatture[$i]['data_fattura'])." </a></td>\n"; echo "<tr><td class='first_cell text-left'><a href='".ROOTDIR.'/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";
echo "<td class='table_cell text-right'>".moneyFormat($fatture[$i]['costo_unitario'])."</td></tr>\n"; echo "<td class='table_cell text-right'>".moneyFormat($documenti[$i]['costo_unitario'])."</td></tr>\n";
array_push($ids, '"'.$fatture[$i]['iddocumento'].'"'); array_push($ids, '"'.$documenti[$i]['id'].'"');
} }
echo "</table>\n"; echo "</table>\n";
} else { } else {
echo '<br/>'.tr('Nessuna vendita di questo articolo al cliente selezionato')."...<br/>\n"; echo '<br/>'.tr('Nessuna vendita trovata di questo articolo al cliente')."...<br/>\n";
} }
} }
echo '</small>'; echo '</small>';
@ -40,53 +42,55 @@ switch ($resource) {
case 'getprezzivendita': case 'getprezzivendita':
echo '<small>'; echo '<small>';
// Ultime 5 vendite totali // Ultime 5 vendite totali
$fatture = $dbo->fetchArray("SELECT DISTINCT iddocumento, (subtotale-sconto)/qta AS costo_unitario, (SELECT numero FROM co_documenti WHERE id=iddocumento) AS n_fattura, (SELECT numero_esterno FROM co_documenti WHERE id=iddocumento) AS n2_fattura, (SELECT data FROM co_documenti WHERE id=iddocumento) AS data_fattura FROM co_righe_documenti WHERE idarticolo='".$idarticolo."' AND iddocumento IN(SELECT id FROM co_documenti WHERE idtipodocumento IN(SELECT id FROM co_tipidocumento WHERE dir='entrata') ) ORDER BY data_fattura DESC, n_fattura DESC LIMIT 0,5"); $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"))
UNION
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='.prepare($idarticolo).' AND idddt IN(SELECT id FROM dt_ddt WHERE idtipoddt IN(SELECT id FROM dt_tipiddt WHERE dir="entrata")) LIMIT 0,5');
if (sizeof($fatture) > 0) { if (sizeof($documenti) > 0) {
echo "<br/><table cellspacing='0' class='table-striped table-bordered' >\n"; echo "<br/><table cellspacing='0' class='table-striped table-bordered' >\n";
echo "<tr><th width='180'>Documento</th>\n"; echo "<tr><th width='180'>Documento</th>\n";
echo "<th width='100' class='text-right' >Totale</th></tr>\n"; echo "<th width='100' class='text-right' >Totale</th></tr>\n";
for ($i = 0; $i < sizeof($fatture); ++$i) { for ($i = 0; $i < sizeof($documenti); ++$i) {
($fatture[$i]['n2_fattura'] != '') ? $n_fattura = $fatture[$i]['n2_fattura'] : $n_fattura = $fatture[$i]['n_fattura']; ($documenti[$i]['n2_documento'] != '') ? $n_documento = $documenti[$i]['n2_documento'] : $n_documento = $documenti[$i]['n_documento'];
$link_id = Modules::get('Fatture di vendita')['id']; $link_id = Modules::get($documenti[$i]['modulo'])['id'];
echo "<tr><td class='first_cell text-left'><a href='".ROOTDIR.'/editor.php?id_module='.$link_id.'&id_record='.$fatture[$i]['iddocumento']."' target=\"_blank\" title=\"Apri il documento su una nuova finestra\">Fatt. n. ".$n_fattura.' del '.Translator::dateToLocale($fatture[$i]['data_fattura'])."</a></td>\n"; echo "<tr><td class='first_cell text-left'><a href='".ROOTDIR.'/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";
echo "<td class='table_cell text-right'>".moneyFormat($fatture[$i]['costo_unitario'])."</td></tr>\n"; echo "<td class='table_cell text-right'>".moneyFormat($documenti[$i]['costo_unitario'])."</td></tr>\n";
array_push($ids, '"'.$documenti[$i]['id'].'"');
} }
echo "</table>\n"; echo "</table>\n";
} else { } else {
echo '<br/>'.tr('Questo articolo non è mai stato venduto')."...<br/>\n"; echo '<br/>'.tr('Nessuna vendita trovata di questo articolo')."...<br/>\n";
} }
echo '</small>';
echo '<br/>';
break; break;
// Legge gli ultimi prezzi di vendita di un determinato articolo e li visualizza per suggerire il prezzo di vendita // Legge gli ultimi prezzi di acquisto di un determinato articolo e li visualizza per suggerire il prezzo di acquisto
case 'getprezziacquisto': case 'getprezziacquisto':
echo '<small>'; echo '<small>';
// Ultime 5 vendite totali // Ultimi 5 acquisti totali
$fatture = $dbo->fetchArray("SELECT DISTINCT iddocumento, (subtotale-sconto)/qta AS costo_unitario, (SELECT numero FROM co_documenti WHERE id=iddocumento) AS n_fattura, (SELECT numero_esterno FROM co_documenti WHERE id=iddocumento) AS n2_fattura, (SELECT data FROM co_documenti WHERE id=iddocumento) AS data_fattura FROM co_righe_documenti WHERE idarticolo='".$idarticolo."' AND iddocumento IN(SELECT id FROM co_documenti WHERE idtipodocumento IN(SELECT id FROM co_tipidocumento WHERE dir='uscita') ) ORDER BY data_fattura DESC, n_fattura DESC LIMIT 0,5"); $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="uscita"))
UNION
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='.prepare($idarticolo).' AND idddt IN(SELECT id FROM dt_ddt WHERE idtipoddt IN(SELECT id FROM dt_tipiddt WHERE dir="uscita")) LIMIT 0,5');
if (sizeof($fatture) > 0) { if (sizeof($documenti) > 0) {
echo "<br/><table cellspacing='0' class='table-striped table-bordered' >\n"; echo "<br/><table cellspacing='0' class='table-striped table-bordered' >\n";
echo "<tr><th width='180'>Documento</th>\n"; echo "<tr><th width='180'>Documento</th>\n";
echo "<th width='100' class='text-right'>Totale</th></tr>\n"; echo "<th width='100' class='text-right' >Totale</th></tr>\n";
for ($i = 0; $i < sizeof($fatture); ++$i) { for ($i = 0; $i < sizeof($documenti); ++$i) {
($fatture[$i]['n2_fattura'] != '') ? $n_fattura = $fatture[$i]['n2_fattura'] : $n_fattura = $fatture[$i]['n_fattura']; ($documenti[$i]['n2_documento'] != '') ? $n_documento = $documenti[$i]['n2_documento'] : $n_documento = $documenti[$i]['n_documento'];
$link_id = Modules::get('Fatture di acquisto')['id']; $link_id = Modules::get($documenti[$i]['modulo'])['id'];
echo "<tr><td class='first_cell text-left'><a href='".ROOTDIR.'/editor.php?id_module='.$link_id.'&id_record='.$fatture[$i]['iddocumento']."' target=\"_blank\" title=\"Apri il documento su una nuova finestra\">Fatt. n. ".$n_fattura.' del '.Translator::dateToLocale($fatture[$i]['data_fattura'])."</a></td>\n"; echo "<tr><td class='first_cell text-left'><a href='".ROOTDIR.'/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";
echo "<td class='table_cell text-right'>".moneyFormat($fatture[$i]['costo_unitario'])."</td></tr>\n"; echo "<td class='table_cell text-right'>".moneyFormat($documenti[$i]['costo_unitario'])."</td></tr>\n";
array_push($ids, '"'.$documenti[$i]['id'].'"');
} }
echo "</table>\n"; echo "</table>\n";
} else { } else {
echo '<br/>'.tr('Questo articolo non è mai stato acquistato')."...<br/>\n"; echo '<br/>'.tr('Nessun acquisto trovato di questo articolo')."...<br/>\n";
} }
echo '</small>';
echo '<br/>';
break; break;
} }