Completamento #905
This commit is contained in:
parent
2fc5a7e092
commit
bfd7e27556
|
@ -68,26 +68,66 @@ include_once __DIR__.'/../../core.php';
|
|||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
<div class="col-md-6">
|
||||
{[ "type": "checkbox", "label": "<?php echo tr('Abilita serial number'); ?>", "name": "abilita_serial", "value": "$abilita_serial$", "help": "<?php echo tr('Abilita serial number in fase di aggiunta articolo in fattura o ddt'); ?>", "placeholder": "<?php echo tr('Serial number'); ?>", "extra": "<?php echo ($record['serial'] > 0) ? 'readonly' : ''; ?>" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
<div class="col-md-6">
|
||||
{[ "type": "checkbox", "label": "<?php echo tr('Attivo'); ?>", "name": "attivo", "help": "<?php echo tr('Seleziona per rendere attivo l\'articolo'); ?>", "value": "$attivo$", "placeholder": "<?php echo tr('Articolo attivo'); ?>" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-8">
|
||||
{[ "type": "text", "label": "<?php echo tr('Ubicazione'); ?>", "name": "ubicazione", "value": "$ubicazione$" ]}
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-4">
|
||||
{[ "type": "select", "label": "<?php echo tr('Unità di misura'); ?>", "name": "um", "value": "$um$", "ajax-source": "misure", "icon-after": "add|<?php echo Modules::get('Unità di misura')['id']; ?>" ]}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
{[ "type": "textarea", "label": "<?php echo tr('Note'); ?>", "name": "note", "value": "$note$" ]}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="panel panel-primary">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">
|
||||
<?php echo tr('Giacenza totale'); ?>
|
||||
</h3>
|
||||
</div>
|
||||
|
||||
<div class="panel-body">
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
{[ "type": "number", "label": "<?php echo tr('Quantità'); ?>", "name": "qta", "required": 1, "value": "$qta$", "readonly": 1, "decimals": "qta", "min-value": "undefined" ]}
|
||||
<input type="hidden" id="old_qta" value="<?php echo $record['qta']; ?>">
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
<div class="col-md-6">
|
||||
{[ "type": "checkbox", "label": "<?php echo tr('Modifica quantità'); ?>", "name": "qta_manuale", "value": 0, "help": "<?php echo tr('Seleziona per modificare manualmente la quantità'); ?>", "placeholder": "<?php echo tr('Quantità manuale'); ?>", "extra": "<?php echo ($record['servizio']) ? 'disabled' : ''; ?>" ]}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class='row' id="div_modifica_manuale" style="display:none;">
|
||||
<div class='col-md-8'>
|
||||
{[ "type": "text", "label": "<?php echo tr('Descrizione movimento'); ?>", "name": "descrizione_movimento" ]}
|
||||
</div>
|
||||
<div class='col-md-4'>
|
||||
{[ "type": "date", "label": "<?php echo tr('Data movimento'); ?>", "name": "data_movimento", "value": "-now-" ]}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="alert alert-info">
|
||||
<p><?php echo tr('Le modifiche alle quantità in questa schermata prevedono la generazione di un movimento relativo per la Sede legale'); ?>. <?php echo tr('Per effettuare movimenti in altre Sedi, utilizzare il modulo Movimenti relativo'); ?>.</p>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
$('#servizio').click(function() {
|
||||
|
@ -111,26 +151,6 @@ include_once __DIR__.'/../../core.php';
|
|||
|
||||
});
|
||||
</script>
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
{[ "type": "select", "label": "<?php echo tr('Unità di misura'); ?>", "name": "um", "value": "$um$", "ajax-source": "misure", "icon-after": "add|<?php echo Modules::get('Unità di misura')['id']; ?>" ]}
|
||||
</div>
|
||||
</div>
|
||||
<div class='row' id="div_modifica_manuale" style="display:none;">
|
||||
<div class='col-md-8'>
|
||||
{[ "type": "text", "label": "<?php echo tr('Descrizione movimento'); ?>", "name": "descrizione_movimento" ]}
|
||||
</div>
|
||||
<div class='col-md-4'>
|
||||
{[ "type": "date", "label": "<?php echo tr('Data movimento'); ?>", "name": "data_movimento", "value": "-now-" ]}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
{[ "type": "textarea", "label": "<?php echo tr('Note'); ?>", "name": "note", "value": "$note$" ]}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
|
@ -219,6 +219,7 @@ echo '
|
|||
</div>';
|
||||
|
||||
$sedi = $dbo->fetchArray('(SELECT "0" AS id, CONCAT_WS (" - ", "Sede legale", citta) AS nomesede FROM an_anagrafiche WHERE idanagrafica = '.prepare(setting('Azienda predefinita')).') UNION (SELECT id, CONCAT_WS(" - ", nomesede, citta ) AS nomesede FROM an_sedi WHERE idanagrafica='.prepare(setting('Azienda predefinita')).')');
|
||||
$giacenze = $articolo->getGiacenze();
|
||||
|
||||
echo '
|
||||
<div class="row">
|
||||
|
@ -240,13 +241,10 @@ echo '
|
|||
<tbody>';
|
||||
|
||||
foreach ($sedi as $sede) {
|
||||
// Lettura movimenti delle mie sedi
|
||||
$qta_azienda = $dbo->fetchOne("SELECT SUM(mg_movimenti.qta) AS qta, IF(mg_movimenti.idsede_azienda= 0,'Sede legale',(CONCAT_WS(' - ',an_sedi.nomesede,an_sedi.citta))) as sede FROM mg_movimenti LEFT JOIN an_sedi ON an_sedi.id = mg_movimenti.idsede_azienda WHERE mg_movimenti.idarticolo=".prepare($id_record).' AND idsede_azienda='.prepare($sede['id']).' GROUP BY idsede_azienda');
|
||||
|
||||
echo '
|
||||
<tr>
|
||||
<td>'.$sede['nomesede'].'</td>
|
||||
<td class="text-right">'.Translator::numberToLocale($qta_azienda['qta']).' '.$articolo->um.'</td>
|
||||
<td class="text-right">'.numberFormat($giacenze[$sede['id']]).' '.$articolo->um.'</td>
|
||||
</tr>';
|
||||
}
|
||||
|
||||
|
|
|
@ -195,6 +195,26 @@ class Articolo extends Model
|
|||
return $this->hasMany(Movimento::class, 'idarticolo');
|
||||
}
|
||||
|
||||
/**
|
||||
* Restituisce le giacenze per sede dell'articolo.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getGiacenze()
|
||||
{
|
||||
return $this->movimenti()
|
||||
->select(
|
||||
'idsede_azienda',
|
||||
database()->raw('SUM(qta) AS qta')
|
||||
)->groupBy(['idsede_azienda'])
|
||||
->get()
|
||||
->mapToGroups(function ($item, $key) {
|
||||
return [$item->idsede_azienda => (float) $item->attributes['qta']];
|
||||
})
|
||||
->flatten()
|
||||
->toArray();
|
||||
}
|
||||
|
||||
/**
|
||||
* Restituisce i movimenti di magazzino dell'articolo raggruppati per documento relativo.
|
||||
*
|
||||
|
|
|
@ -21,6 +21,7 @@ namespace Modules\Articoli\Import;
|
|||
|
||||
use Carbon\Carbon;
|
||||
use Importer\CSVImporter;
|
||||
use Modules\Anagrafiche\Sede;
|
||||
use Modules\Articoli\Articolo;
|
||||
use Modules\Articoli\Categoria;
|
||||
use Modules\Iva\Aliquota;
|
||||
|
@ -141,6 +142,7 @@ class CSV extends CSVImporter
|
|||
{
|
||||
$database = database();
|
||||
$primary_key = $this->getPrimaryKey();
|
||||
$anagrafica_azienda = Anagrafica::find(setting('Azienda predefinita'));
|
||||
|
||||
// Fix per campi con contenuti derivati da query implicite
|
||||
if (!empty($record['id_fornitore'])) {
|
||||
|
@ -203,13 +205,20 @@ class CSV extends CSVImporter
|
|||
$articolo->save();
|
||||
|
||||
// Movimentazione della quantità registrata
|
||||
$qta_movimento = $qta_registrata - (float) ($articolo->qta);
|
||||
$giacenze = $articolo->getGiacenze();
|
||||
$id_sede = 0;
|
||||
if (!empty($nome_sede)) {
|
||||
$sede = Sede::where('nomesede', $nome_sede)
|
||||
->where('idanagrafica', $anagrafica_azienda->id)
|
||||
->first();
|
||||
$id_sede = $sede->id;
|
||||
}
|
||||
|
||||
$qta_movimento = $qta_registrata - $giacenze[$id_sede];
|
||||
|
||||
$articolo->movimenta($qta_movimento, tr('Movimento da importazione'), new Carbon(), false, [
|
||||
/*
|
||||
'idsede_azienda' => $partenza,
|
||||
'idsede_controparte' => $arrivo,
|
||||
*/
|
||||
'idsede_azienda' => $id_sede,
|
||||
'idsede_controparte' => 0,
|
||||
]);
|
||||
}
|
||||
|
||||
|
|
|
@ -37,8 +37,8 @@ switch (post('op')) {
|
|||
$id_sede_azienda = $idsede_destinazione;
|
||||
$id_sede_controparte = 0;
|
||||
} elseif ($tipo_movimento == 'scarico') {
|
||||
$id_sede_controparte = 0;
|
||||
$id_sede_azienda = $idsede_partenza;
|
||||
$id_sede_controparte = 0;
|
||||
|
||||
$qta = -$qta;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue