Aggiunta la gestione della data inventario
This commit is contained in:
parent
94b5e76929
commit
db5e8f7dda
|
@ -162,8 +162,10 @@ switch (post('op')) {
|
||||||
Combinazione::sincronizzaVarianti($articolo);
|
Combinazione::sincronizzaVarianti($articolo);
|
||||||
|
|
||||||
// Leggo la quantità attuale per capire se l'ho modificata
|
// Leggo la quantità attuale per capire se l'ho modificata
|
||||||
$old_qta = $record['qta'];
|
// TODO: gestire la movimentazione manuale per sede
|
||||||
$movimento = $qta - $old_qta;
|
$id_sede = 0;
|
||||||
|
$old_qta = $articolo->getGiacenze(post('data_movimento'));
|
||||||
|
$movimento = $qta - $old_qta[$id_sede][0];
|
||||||
|
|
||||||
$qta_manuale = post('qta_manuale');
|
$qta_manuale = post('qta_manuale');
|
||||||
if (!empty($qta_manuale)) {
|
if (!empty($qta_manuale)) {
|
||||||
|
|
|
@ -285,20 +285,29 @@ class Articolo extends Model
|
||||||
/**
|
/**
|
||||||
* Restituisce le giacenze per sede dell'articolo.
|
* Restituisce le giacenze per sede dell'articolo.
|
||||||
*
|
*
|
||||||
|
* @param $data Indica la data fino alla quale calcolare le giacenze totali. Di default tutte
|
||||||
|
*
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
public function getGiacenze()
|
public function getGiacenze($data = null)
|
||||||
{
|
{
|
||||||
return $this->movimenti()
|
$movimenti = $this->movimenti()
|
||||||
->select(
|
->select(
|
||||||
'idsede',
|
'idsede',
|
||||||
database()->raw('SUM(qta) AS qta')
|
database()->raw('SUM(qta) AS qta')
|
||||||
)->groupBy(['idsede'])
|
)->groupBy(['idsede']);
|
||||||
->get()
|
|
||||||
|
if (!empty($data)) {
|
||||||
|
$movimenti = $movimenti->where('data', '<=', \Carbon\Carbon::parse($data)->format('Y-m-d'));
|
||||||
|
}
|
||||||
|
|
||||||
|
$movimenti = $movimenti->get()
|
||||||
->mapToGroups(function ($item, $key) {
|
->mapToGroups(function ($item, $key) {
|
||||||
return [$item->idsede => (float) $item->attributes['qta']];
|
return [$item->idsede => (float) $item->attributes['qta']];
|
||||||
})
|
})
|
||||||
->toArray();
|
->toArray();
|
||||||
|
|
||||||
|
return $movimenti;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -67,6 +67,10 @@ class CSV extends CSVImporter
|
||||||
'field' => 'qta',
|
'field' => 'qta',
|
||||||
'label' => 'Quantità',
|
'label' => 'Quantità',
|
||||||
],
|
],
|
||||||
|
[
|
||||||
|
'field' => 'data_qta',
|
||||||
|
'label' => 'Data inventario',
|
||||||
|
],
|
||||||
[
|
[
|
||||||
'field' => 'um',
|
'field' => 'um',
|
||||||
'label' => 'Unità di misura',
|
'label' => 'Unità di misura',
|
||||||
|
@ -309,7 +313,7 @@ class CSV extends CSVImporter
|
||||||
$articolo->attivo = 1;
|
$articolo->attivo = 1;
|
||||||
|
|
||||||
// Esportazione della quantità indicata
|
// Esportazione della quantità indicata
|
||||||
$qta_registrata = (float) ($record['qta']);
|
$nuova_qta = (float) ($record['qta']);
|
||||||
$nome_sede = $record['nome_sede'];
|
$nome_sede = $record['nome_sede'];
|
||||||
|
|
||||||
// Aggiornamento dettaglio prezzi
|
// Aggiornamento dettaglio prezzi
|
||||||
|
@ -406,10 +410,10 @@ class CSV extends CSVImporter
|
||||||
}
|
}
|
||||||
|
|
||||||
if( isset($record['qta']) ) {
|
if( isset($record['qta']) ) {
|
||||||
$giacenze = $articolo->getGiacenze();
|
$giacenze = $articolo->getGiacenze($record['data_qta']);
|
||||||
$qta_movimento = $qta_registrata - $giacenze[$id_sede][0];
|
$qta_movimento = $nuova_qta - $giacenze[$id_sede][0];
|
||||||
|
|
||||||
$articolo->movimenta($qta_movimento, tr('Movimento da importazione'), new Carbon(), false, [
|
$articolo->movimenta($qta_movimento, tr('Movimento da importazione'), new Carbon($record['data_qta']), true, [
|
||||||
'idsede' => $id_sede,
|
'idsede' => $id_sede,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue