Aggiunta la gestione della data inventario

This commit is contained in:
loviuz 2023-01-24 18:30:45 +01:00
parent 94b5e76929
commit db5e8f7dda
3 changed files with 25 additions and 10 deletions

View File

@ -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)) {

View File

@ -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;
} }
/** /**

View File

@ -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&agrave; di misura', 'label' => 'Unit&agrave; 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,
]); ]);
} }