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);
// Leggo la quantità attuale per capire se l'ho modificata
$old_qta = $record['qta'];
$movimento = $qta - $old_qta;
// TODO: gestire la movimentazione manuale per sede
$id_sede = 0;
$old_qta = $articolo->getGiacenze(post('data_movimento'));
$movimento = $qta - $old_qta[$id_sede][0];
$qta_manuale = post('qta_manuale');
if (!empty($qta_manuale)) {

View File

@ -285,20 +285,29 @@ class Articolo extends Model
/**
* Restituisce le giacenze per sede dell'articolo.
*
* @param $data Indica la data fino alla quale calcolare le giacenze totali. Di default tutte
*
* @return array
*/
public function getGiacenze()
public function getGiacenze($data = null)
{
return $this->movimenti()
$movimenti = $this->movimenti()
->select(
'idsede',
database()->raw('SUM(qta) AS qta')
)->groupBy(['idsede'])
->get()
)->groupBy(['idsede']);
if (!empty($data)) {
$movimenti = $movimenti->where('data', '<=', \Carbon\Carbon::parse($data)->format('Y-m-d'));
}
$movimenti = $movimenti->get()
->mapToGroups(function ($item, $key) {
return [$item->idsede => (float) $item->attributes['qta']];
})
->toArray();
return $movimenti;
}
/**

View File

@ -67,6 +67,10 @@ class CSV extends CSVImporter
'field' => 'qta',
'label' => 'Quantità',
],
[
'field' => 'data_qta',
'label' => 'Data inventario',
],
[
'field' => 'um',
'label' => 'Unit&agrave; di misura',
@ -309,7 +313,7 @@ class CSV extends CSVImporter
$articolo->attivo = 1;
// Esportazione della quantità indicata
$qta_registrata = (float) ($record['qta']);
$nuova_qta = (float) ($record['qta']);
$nome_sede = $record['nome_sede'];
// Aggiornamento dettaglio prezzi
@ -406,10 +410,10 @@ class CSV extends CSVImporter
}
if( isset($record['qta']) ) {
$giacenze = $articolo->getGiacenze();
$qta_movimento = $qta_registrata - $giacenze[$id_sede][0];
$giacenze = $articolo->getGiacenze($record['data_qta']);
$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,
]);
}