mirror of
https://github.com/devcode-it/openstamanager.git
synced 2025-02-18 12:30:35 +01:00
Miglioramento grafico su gestione prezzi specifici
This commit is contained in:
parent
9e03d4c031
commit
1703e4ceb0
@ -256,4 +256,21 @@ switch ($resource) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'fornitori-articolo':
|
||||||
|
$query = 'SELECT an_anagrafiche.idanagrafica AS id, an_anagrafiche.ragione_sociale AS descrizione, (mg_prezzi_articoli.prezzo_unitario-(mg_prezzi_articoli.prezzo_unitario*mg_prezzi_articoli.sconto_percentuale)/100) AS prezzo_unitario FROM mg_prezzi_articoli LEFT JOIN an_anagrafiche ON mg_prezzi_articoli.id_anagrafica=an_anagrafiche.idanagrafica |where| ORDER BY an_anagrafiche.ragione_sociale';
|
||||||
|
|
||||||
|
foreach ($elements as $element) {
|
||||||
|
$filter[] = 'an_anagrafiche.idanagrafica='.prepare($element);
|
||||||
|
}
|
||||||
|
|
||||||
|
$where[] = 'dir="uscita"';
|
||||||
|
$where[] = 'minimo IS NULL';
|
||||||
|
$where[] = 'massimo IS NULL';
|
||||||
|
$where[] = 'id_articolo='.prepare($superselect['id_articolo']);
|
||||||
|
|
||||||
|
if (!empty($search)) {
|
||||||
|
$search_fields[] = 'an_anagrafiche.ragione_sociale LIKE '.prepare('%'.$search.'%');
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
@ -175,7 +175,7 @@ include_once __DIR__.'/../../core.php';
|
|||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-12">
|
<div class="col-md-12">
|
||||||
{[ "type": "select", "label": "<?php echo tr('Fornitore predefinito'); ?>", "name": "id_fornitore", "value": "$id_fornitore$", "ajax-source": "fornitori", "icon-after": "add|<?php echo Modules::get('Anagrafiche')['id']; ?>|tipoanagrafica=Fornitore&readonly_tipo=1", "help": "<?php echo tr('Fornitore predefinito, utilizzato dal gestionale per funzioni più avanzate della gestione magazzino'); ?>." ]}
|
{[ "type": "select", "label": "<?php echo tr('Fornitore predefinito'); ?>", "name": "id_fornitore", "ajax-source": "fornitori-articolo", "select-options": <?php echo json_encode(['id_articolo' => $id_record]); ?>, "value":"$id_fornitore$", "help": "<?php echo tr('Fornitore predefinito, utilizzato dal gestionale per funzioni più avanzate della gestione magazzino'); ?>." ]}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -457,3 +457,21 @@ if (!empty($elementi)) {
|
|||||||
<a class="btn btn-danger ask" data-backto="record-list">
|
<a class="btn btn-danger ask" data-backto="record-list">
|
||||||
<i class="fa fa-trash"></i> <?php echo tr('Elimina'); ?>
|
<i class="fa fa-trash"></i> <?php echo tr('Elimina'); ?>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
input('id_fornitore').change(function(){
|
||||||
|
let prezzo_unitario = $(this).selectData() ? $(this).selectData().prezzo_unitario : "";
|
||||||
|
if(input('id_fornitore').get()){
|
||||||
|
input('prezzo_acquisto').set(prezzo_unitario);
|
||||||
|
input('prezzo_acquisto').disable();
|
||||||
|
} else {
|
||||||
|
input('prezzo_acquisto').enable();
|
||||||
|
input('prezzo_acquisto').set('0');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
$(document).ready(function(){
|
||||||
|
if(input('id_fornitore').get()){
|
||||||
|
input('prezzo_acquisto').disable();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
@ -64,26 +64,30 @@ switch (filter('op')) {
|
|||||||
|
|
||||||
$modifica_prezzi = filter('modifica_prezzi');
|
$modifica_prezzi = filter('modifica_prezzi');
|
||||||
if (empty($modifica_prezzi)) {
|
if (empty($modifica_prezzi)) {
|
||||||
$dbo->query('DELETE FROM mg_prezzi_articoli WHERE id_articolo='.$id_articolo.' AND id_anagrafica='.$id_anagrafica);
|
$dbo->query('DELETE FROM mg_prezzi_articoli WHERE id_articolo='.prepare($id_articolo).' AND id_anagrafica='.prepare($id_anagrafica).' AND minimo IS NULL AND massimo IS NULL');
|
||||||
return;
|
} else {
|
||||||
|
// Salvataggio del prezzo predefinito
|
||||||
|
$prezzo_unitario = filter('prezzo_unitario_fisso');
|
||||||
|
$sconto = filter('sconto_fisso');
|
||||||
|
$dettaglio_predefinito = DettaglioPrezzo::dettaglioPredefinito($id_articolo, $id_anagrafica, $direzione)
|
||||||
|
->first();
|
||||||
|
if (empty($dettaglio_predefinito)) {
|
||||||
|
$dettaglio_predefinito = DettaglioPrezzo::build($articolo, $anagrafica, $direzione);
|
||||||
|
}
|
||||||
|
$dettaglio_predefinito->sconto_percentuale = $sconto;
|
||||||
|
$dettaglio_predefinito->setPrezzoUnitario($prezzo_unitario);
|
||||||
|
$dettaglio_predefinito->save();
|
||||||
|
if($articolo->id_fornitore==$anagrafica->idanagrafica && $direzione=='uscita'){
|
||||||
|
$prezzo_unitario = $prezzo_unitario-($prezzo_unitario*$sconto/100);
|
||||||
|
$articolo->prezzo_acquisto=$prezzo_unitario;
|
||||||
|
$articolo->save();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Salvataggio del prezzo predefinito
|
|
||||||
$prezzo_unitario = filter('prezzo_unitario_fisso');
|
|
||||||
$sconto = filter('sconto_fisso');
|
|
||||||
$dettaglio_predefinito = DettaglioPrezzo::dettaglioPredefinito($id_articolo, $id_anagrafica, $direzione)
|
|
||||||
->first();
|
|
||||||
if (empty($dettaglio_predefinito)) {
|
|
||||||
$dettaglio_predefinito = DettaglioPrezzo::build($articolo, $anagrafica, $direzione);
|
|
||||||
}
|
|
||||||
$dettaglio_predefinito->sconto_percentuale = $sconto;
|
|
||||||
$dettaglio_predefinito->setPrezzoUnitario($prezzo_unitario);
|
|
||||||
$dettaglio_predefinito->save();
|
|
||||||
|
|
||||||
// Salvataggio dei prezzi variabili
|
// Salvataggio dei prezzi variabili
|
||||||
$prezzo_fisso = filter('prezzo_fisso');
|
$prezzo_qta = filter('prezzo_qta');
|
||||||
$dettagli = DettaglioPrezzo::dettagli($id_articolo, $id_anagrafica, $direzione);
|
$dettagli = DettaglioPrezzo::dettagli($id_articolo, $id_anagrafica, $direzione);
|
||||||
if (!empty($prezzo_fisso)) {
|
if (!empty($prezzo_qta)) {
|
||||||
$prezzi_unitari = (array) filter('prezzo_unitario');
|
$prezzi_unitari = (array) filter('prezzo_unitario');
|
||||||
$minimi = filter('minimo');
|
$minimi = filter('minimo');
|
||||||
$massimi = filter('massimo');
|
$massimi = filter('massimo');
|
||||||
|
@ -34,24 +34,49 @@ $direzione = get('direzione') == 'uscita' ? 'uscita' : 'entrata';
|
|||||||
$articolo = Articolo::find($id_articolo);
|
$articolo = Articolo::find($id_articolo);
|
||||||
$anagrafica = Anagrafica::find($id_anagrafica);
|
$anagrafica = Anagrafica::find($id_anagrafica);
|
||||||
|
|
||||||
$prezzo_predefinito = $prezzi_ivati ? $articolo->prezzo_vendita_ivato : $articolo->prezzo_vendita;
|
if($direzione=='entrata'){
|
||||||
|
$prezzo_predefinito = $prezzi_ivati ? $articolo->prezzo_vendita_ivato : $articolo->prezzo_vendita;
|
||||||
|
} else{
|
||||||
|
$prezzo_predefinito = $articolo->prezzo_acquisto;
|
||||||
|
}
|
||||||
// Individuazione dei prezzi registrati
|
// Individuazione dei prezzi registrati
|
||||||
$dettagli = DettaglioPrezzo::dettagli($id_articolo, $id_anagrafica, $direzione)
|
$dettagli = DettaglioPrezzo::dettagli($id_articolo, $id_anagrafica, $direzione)
|
||||||
->get();
|
->get();
|
||||||
|
|
||||||
$dettaglio_predefinito = DettaglioPrezzo::dettaglioPredefinito($id_articolo, $id_anagrafica, $direzione)
|
$dettaglio_predefinito = DettaglioPrezzo::dettaglioPredefinito($id_articolo, $id_anagrafica, $direzione)
|
||||||
->first();
|
->first();
|
||||||
$prezzo_dettaglio_predefinito = $prezzo_predefinito;
|
if($articolo->id_fornitore==$anagrafica->idanagrafica){
|
||||||
if (!empty($dettaglio_predefinito)) {
|
$color='success';
|
||||||
$prezzo_dettaglio_predefinito = $prezzi_ivati ? $dettaglio_predefinito->prezzo_unitario_ivato : $dettaglio_predefinito->prezzo_unitario;
|
$icon='check';
|
||||||
|
$text= tr('Sì');
|
||||||
|
} else {
|
||||||
|
$color='danger';
|
||||||
|
$icon='times';
|
||||||
|
$text= tr('No');
|
||||||
}
|
}
|
||||||
|
|
||||||
echo '
|
echo '
|
||||||
<p>'.tr('Informazioni relative al _TIPO_', [
|
<table class="table table-striped table-condensed table-bordered">
|
||||||
'_TIPO_' => $direzione=='entrata' ? 'cliente:' : 'fornitore:' ,
|
<tr>
|
||||||
]).'
|
<th class="text-center col-md-4">'.($direzione=='entrata' ? tr('Cliente') : tr('Fornitore')).'</th>
|
||||||
<br><b><big>'.$anagrafica->ragione_sociale.'</big></b></p>
|
<th class="text-center col-md-4">'.tr('Prezzo predefinito').'</th>';
|
||||||
|
if($direzione=='uscita'){
|
||||||
|
echo '<th class="text-center col-md-4">'.tr('Fornitore predefinito').'</th>';
|
||||||
|
} else{
|
||||||
|
echo '<th class="text-center col-md-4"></th>';
|
||||||
|
}
|
||||||
|
echo '
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="text-center">'.$anagrafica->ragione_sociale.'</td>
|
||||||
|
<td class="text-center">'.moneyFormat($prezzo_predefinito).'</td>';
|
||||||
|
if($direzione=='uscita'){
|
||||||
|
echo '<td class="text-center"><i class="fa fa-'.$icon.' text-'.$color.'"></i> '.$text.'</td>';
|
||||||
|
} else{
|
||||||
|
echo '<td></td>';
|
||||||
|
}
|
||||||
|
echo '
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
<form action="" method="post">
|
<form action="" method="post">
|
||||||
<input type="hidden" name="backto" value="record-edit">
|
<input type="hidden" name="backto" value="record-edit">
|
||||||
@ -64,23 +89,25 @@ echo '
|
|||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-4">
|
<div class="col-md-4">
|
||||||
{[ "type": "checkbox", "label": "'.tr("Imposta prezzo per questa anagrafica").'", "name": "modifica_prezzi", "value": "'.intval(!$dettagli->isEmpty() || !empty($dettaglio_predefinito)).'" ]}
|
{[ "type": "checkbox", "label": "'.tr("Imposta prezzo per questa anagrafica").'", "name": "modifica_prezzi", "value": "'.intval(!empty($dettaglio_predefinito)).'" ]}
|
||||||
</div>
|
|
||||||
<div id="imposta_prezzo_qta" class="col-md-4">
|
|
||||||
{[ "type": "checkbox", "label": "'.tr('Imposta un prezzo in base alla quantità').'", "name": "prezzo_fisso", "value": "'.intval($dettagli->count() != 0).'" ]}
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="info_prezzi" class="row">
|
<div class="row">
|
||||||
<div class="col-md-4">
|
<div class="info_prezzi">
|
||||||
{[ "type": "number", "label": "'.tr('Prezzo predefinito').'", "name": "prezzo_predefinito", "value": "'.$prezzo_predefinito.'", "disabled":"1"]}
|
<div class="col-md-4">
|
||||||
</div>
|
{[ "type": "number", "label": "'.tr('Prezzo specifico').'", "name": "prezzo_unitario_fisso", "value": "'.($prezzi_ivati ? $dettaglio_predefinito->prezzo_unitario_ivato : $dettaglio_predefinito->prezzo_unitario).'", "icon-after": "'.currency().'", "help": "'.($prezzi_ivati ? tr('Importo IVA inclusa') : '').'" ]}
|
||||||
<div class="col-md-4">
|
</div>
|
||||||
{[ "type": "number", "label": "'.tr('Prezzo specifico').'", "name": "prezzo_unitario_fisso", "value": "'.($prezzi_ivati ? $dettaglio_predefinito->prezzo_unitario_ivato : $dettaglio_predefinito->prezzo_unitario).'", "icon-after": "'.currency().'", "help": "'.($prezzi_ivati ? tr('Importo IVA inclusa') : '').'" ]}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-md-4">
|
<div class="col-md-4">
|
||||||
{[ "type": "number", "label": "'.tr('Sconto specifico').'", "name": "sconto_fisso", "value": "'.$dettaglio_predefinito->sconto_percentuale.'", "icon-after": "%"]}
|
{[ "type": "number", "label": "'.tr('Sconto specifico').'", "name": "sconto_fisso", "value": "'.$dettaglio_predefinito->sconto_percentuale.'", "icon-after": "%"]}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div id="imposta_prezzo_qta" class="col-md-4">
|
||||||
|
{[ "type": "checkbox", "label": "'.tr('Imposta un prezzo in base alla quantità').'", "name": "prezzo_qta", "value": "'.intval($dettagli->count() != 0).'" ]}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -211,21 +238,19 @@ function rimuoviPrezzo(button) {
|
|||||||
|
|
||||||
function cambioImpostazioni() {
|
function cambioImpostazioni() {
|
||||||
let modifica_prezzi = input("modifica_prezzi");
|
let modifica_prezzi = input("modifica_prezzi");
|
||||||
let prezzo_fisso = input("prezzo_fisso");
|
let prezzo_qta = input("prezzo_qta");
|
||||||
let prezzo_unitario_fisso = input("prezzo_unitario_fisso");
|
let prezzo_unitario_fisso = input("prezzo_unitario_fisso");
|
||||||
let sconto_fisso = input("sconto_fisso");
|
let sconto_fisso = input("sconto_fisso");
|
||||||
|
|
||||||
let prezzi_variabili = $("#prezzi");
|
let prezzi_variabili = $("#prezzi");
|
||||||
|
|
||||||
if (!modifica_prezzi.get()){
|
if (!modifica_prezzi.get()){
|
||||||
$("#imposta_prezzo_qta").hide();
|
$(".info_prezzi").hide();
|
||||||
$("#info_prezzi").hide();
|
|
||||||
} else {
|
} else {
|
||||||
$("#imposta_prezzo_qta").show();
|
$(".info_prezzi").show();
|
||||||
$("#info_prezzi").show();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (prezzo_fisso.get() && modifica_prezzi.get()) {
|
if (prezzo_qta.get()) {
|
||||||
prezzi_variabili.removeClass("hidden");
|
prezzi_variabili.removeClass("hidden");
|
||||||
} else {
|
} else {
|
||||||
prezzi_variabili.addClass("hidden");
|
prezzi_variabili.addClass("hidden");
|
||||||
@ -236,7 +261,7 @@ input("modifica_prezzi").change(function () {
|
|||||||
cambioImpostazioni();
|
cambioImpostazioni();
|
||||||
})
|
})
|
||||||
|
|
||||||
input("prezzo_fisso").change(function () {
|
input("prezzo_qta").change(function () {
|
||||||
cambioImpostazioni();
|
cambioImpostazioni();
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -23,12 +23,7 @@ use Plugins\DettagliArticolo\DettaglioPrezzo;
|
|||||||
include_once __DIR__.'/../../core.php';
|
include_once __DIR__.'/../../core.php';
|
||||||
|
|
||||||
$id_articolo = $id_record;
|
$id_articolo = $id_record;
|
||||||
|
|
||||||
echo '
|
echo '
|
||||||
<p>'.tr("In questa sezione è possibile definire dei dettagli aggiuntivi per l'articolo in relazione ad una specifica anagrafica del gestionale").'.</p>
|
|
||||||
<p>'.tr("Per i Clienti è possibile definire un prezzo personalizzato per la vendita dell'articolo, fisso oppure in relazione a una specifica quantità").'. '.tr("Per i Fornitori sono disponibili maggiori informazioni relative a codice, descrizione e quantità minime richieste per l'acquisto").'.</p>
|
|
||||||
<p>'.tr("Queste informazioni sono integrate con il resto del gestionale per garantire una maggiore flessibilità all'utente finale").'.</p>
|
|
||||||
|
|
||||||
<div class="nav-tabs-custom">
|
<div class="nav-tabs-custom">
|
||||||
<ul class="nav-tabs-li nav nav-tabs nav-justified">
|
<ul class="nav-tabs-li nav nav-tabs nav-justified">
|
||||||
<li class="active"><a href="#tab_'.$id_plugin.'" onclick="apriTab(this)" data-tab="clienti" id="clienti-tab">'.tr('Clienti').'</a></li>
|
<li class="active"><a href="#tab_'.$id_plugin.'" onclick="apriTab(this)" data-tab="clienti" id="clienti-tab">'.tr('Clienti').'</a></li>
|
||||||
@ -95,16 +90,7 @@ if (!$clienti->isEmpty()) {
|
|||||||
</button>
|
</button>
|
||||||
</td>
|
</td>
|
||||||
</tr>';
|
</tr>';
|
||||||
|
|
||||||
/*
|
|
||||||
$dettaglio_predefinito = $prezzi->whereStrict('minimo', null)
|
|
||||||
->whereStrict('massimo', null)
|
|
||||||
->first();
|
|
||||||
|
|
||||||
$prezzi = $prezzi->reject(function ($item, $key) use ($dettaglio_predefinito) {
|
|
||||||
return $item->id == $dettaglio_predefinito->id;
|
|
||||||
});
|
|
||||||
*/
|
|
||||||
foreach ($prezzi as $key => $dettaglio) {
|
foreach ($prezzi as $key => $dettaglio) {
|
||||||
echo '
|
echo '
|
||||||
<tr>
|
<tr>
|
||||||
@ -153,8 +139,6 @@ echo '
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="tab-pane" id="fornitori">
|
<div class="tab-pane" id="fornitori">
|
||||||
<p>'.tr("In questa sezione è possibile definire le caratteristiche di base dell'articolo in relazione fornitore di origine, come codice e prezzo di acquisto predefinito").'. '.tr("Queste informazioni saranno utilizzate in automatico per la compilazione dell'articolo al momento dell'inserimento in un documento di acquisto relativo al fornitore indicato, sovrascrivendo le impostazioni predefinite della sezione Acquisto per l'articolo").'.</p>
|
|
||||||
|
|
||||||
<div class="box">
|
<div class="box">
|
||||||
<div class="box-header">
|
<div class="box-header">
|
||||||
<h3 class="box-title">'.tr('Informazioni specifiche per fornitore').'</h3>
|
<h3 class="box-title">'.tr('Informazioni specifiche per fornitore').'</h3>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user