Eliminata colonna idsede_controparte e rinominata colonna idsede_azienda in mg_movimenti
This commit is contained in:
parent
091c290544
commit
fd49bbf101
|
@ -106,8 +106,8 @@ switch ($resource) {
|
|||
// Se c'è una sede settata, carico tutti gli articoli presenti in quella sede
|
||||
if (!$sedi_non_impostate) {
|
||||
$query .= '
|
||||
LEFT JOIN (SELECT idarticolo, idsede_azienda, idsede_controparte FROM mg_movimenti GROUP BY idarticolo) movimenti ON movimenti.idarticolo=mg_articoli.id
|
||||
LEFT JOIN an_sedi ON an_sedi.id = movimenti.idsede_azienda';
|
||||
LEFT JOIN (SELECT idarticolo, idsede FROM mg_movimenti GROUP BY idarticolo) movimenti ON movimenti.idarticolo=mg_articoli.id
|
||||
LEFT JOIN an_sedi ON an_sedi.id = movimenti.idsede';
|
||||
}
|
||||
|
||||
$query .= '
|
||||
|
@ -154,20 +154,11 @@ switch ($resource) {
|
|||
// IVA da impostazioni
|
||||
foreach ($rs as $k => $r) {
|
||||
// Lettura movimenti delle mie sedi
|
||||
$qta_azienda = $dbo->fetchOne('SELECT SUM(mg_movimenti.qta) AS qta FROM mg_movimenti LEFT JOIN an_sedi ON an_sedi.id = mg_movimenti.idsede_azienda WHERE mg_movimenti.idarticolo = '.prepare($r['id']).' AND idsede_azienda = '.prepare($superselect['idsede_partenza']));
|
||||
|
||||
// Lettura eventuali movimenti ad una propria sede (nel caso di movimenti fra sedi della mia azienda) per il calcolo corretto delle quantità
|
||||
if ($superselect['idsede_partenza'] != 0) {
|
||||
$qta_controparte = $dbo->fetchOne('SELECT SUM(mg_movimenti.qta) AS qta FROM mg_movimenti LEFT JOIN an_sedi ON an_sedi.id = mg_movimenti.idsede_controparte WHERE mg_movimenti.idarticolo = '.prepare($r['id']).' AND idsede_controparte = '.prepare($superselect['idsede_partenza']));
|
||||
} else {
|
||||
$qta_controparte = $dbo->fetchOne('SELECT SUM(mg_movimenti.qta) AS qta FROM ((( mg_movimenti LEFT JOIN an_sedi ON an_sedi.id = mg_movimenti.idsede_controparte ) LEFT JOIN dt_ddt ON mg_movimenti.idddt = dt_ddt.id ) LEFT JOIN co_documenti ON mg_movimenti.iddocumento = co_documenti.id ) WHERE mg_movimenti.idarticolo = '.prepare($r['id']).' AND idsede_controparte = '.prepare($superselect['idsede_partenza']).' AND IFNULL(dt_ddt.idanagrafica, co_documenti.idanagrafica) = '.prepare(setting('Azienda predefinita')));
|
||||
}
|
||||
|
||||
$qta = $qta_azienda['qta'] - $qta_controparte['qta'];
|
||||
$qta_sede = $dbo->fetchOne('SELECT SUM(mg_movimenti.qta) AS qta FROM mg_movimenti LEFT JOIN an_sedi ON an_sedi.id = mg_movimenti.idsede WHERE mg_movimenti.idarticolo = '.prepare($r['id']).' AND idsede = '.prepare($superselect['idsede_partenza']))['qta'];
|
||||
|
||||
$rs[$k] = array_merge($r, [
|
||||
'text' => $r['codice'].' - '.$r['descrizione'].' '.(!$r['servizio'] ? '('.Translator::numberToLocale($qta).(!empty($r['um']) ? ' '.$r['um'] : '').')' : ''),
|
||||
'disabled' => $r['qta'] <= 0 && !$permetti_movimenti_sotto_zero && !$r['servizio'],
|
||||
'text' => $r['codice'].' - '.$r['descrizione'].' '.(!$r['servizio'] ? '('.Translator::numberToLocale($qta_sede).(!empty($r['um']) ? ' '.$r['um'] : '').')' : ''),
|
||||
'disabled' => $qta_sede <= 0 && !$permetti_movimenti_sotto_zero && !$r['servizio'],
|
||||
]);
|
||||
}
|
||||
|
||||
|
|
|
@ -121,23 +121,20 @@ function aggiorna_sedi_movimenti($module, $id)
|
|||
if ($module == 'ddt') {
|
||||
$rs = $dbo->fetchArray('SELECT idsede_partenza, idsede_destinazione, dir FROM dt_ddt INNER JOIN dt_tipiddt ON dt_tipiddt.id = dt_ddt.idtipoddt WHERE dt_ddt.id='.prepare($id));
|
||||
|
||||
$idsede_azienda = ($rs[0]['dir'] == 'uscita') ? $rs[0]['idsede_destinazione'] : $rs[0]['idsede_partenza'];
|
||||
$idsede_controparte = ($rs[0]['dir'] == 'uscita') ? $rs[0]['idsede_partenza'] : $rs[0]['idsede_destinazione'];
|
||||
$idsede = ($rs[0]['dir'] == 'uscita') ? $rs[0]['idsede_destinazione'] : $rs[0]['idsede_partenza'];
|
||||
|
||||
$dbo->query('UPDATE mg_movimenti SET idsede_azienda='.prepare($idsede_azienda).', idsede_controparte='.prepare($idsede_controparte).' WHERE idddt='.prepare($id));
|
||||
$dbo->query('UPDATE mg_movimenti SET idsede='.prepare($idsede).' WHERE idddt='.prepare($id));
|
||||
} elseif ($module == 'documenti') {
|
||||
$rs = $dbo->fetchArray('SELECT idsede_partenza, idsede_destinazione, dir FROM co_documenti INNER JOIN co_tipidocumento ON co_tipidocumento.id = co_documenti.idtipodocumento WHERE co_documenti.id='.prepare($id));
|
||||
|
||||
$idsede_azienda = ($rs[0]['dir'] == 'uscita') ? $rs[0]['idsede_destinazione'] : $rs[0]['idsede_partenza'];
|
||||
$idsede_controparte = ($rs[0]['dir'] == 'uscita') ? $rs[0]['idsede_partenza'] : $rs[0]['idsede_destinazione'];
|
||||
$idsede = ($rs[0]['dir'] == 'uscita') ? $rs[0]['idsede_destinazione'] : $rs[0]['idsede_partenza'];
|
||||
|
||||
$dbo->query('UPDATE mg_movimenti SET idsede_azienda='.prepare($idsede_azienda).', idsede_controparte='.prepare($idsede_controparte).' WHERE iddocumento='.prepare($id));
|
||||
$dbo->query('UPDATE mg_movimenti SET idsede='.prepare($idsede).' WHERE iddocumento='.prepare($id));
|
||||
} elseif ($module == 'interventi') {
|
||||
$rs = $dbo->fetchArray('SELECT idsede_partenza, idsede_destinazione FROM in_interventi WHERE in_interventi.id='.prepare($id));
|
||||
|
||||
$idsede_azienda = $rs[0]['idsede_partenza'];
|
||||
$idsede_controparte = $rs[0]['idsede_destinazione'];
|
||||
$idsede = $rs[0]['idsede_partenza'];
|
||||
|
||||
$dbo->query('UPDATE mg_movimenti SET idsede_azienda='.prepare($idsede_azienda).', idsede_controparte='.prepare($idsede_controparte).' WHERE idintervento='.prepare($id));
|
||||
$dbo->query('UPDATE mg_movimenti SET idsede='.prepare($idsede).' WHERE idintervento='.prepare($id));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -204,12 +204,12 @@ class Articolo extends Model
|
|||
{
|
||||
return $this->movimenti()
|
||||
->select(
|
||||
'idsede_azienda',
|
||||
'idsede',
|
||||
database()->raw('SUM(qta) AS qta')
|
||||
)->groupBy(['idsede_azienda'])
|
||||
)->groupBy(['idsede'])
|
||||
->get()
|
||||
->mapToGroups(function ($item, $key) {
|
||||
return [$item->idsede_azienda => (float) $item->attributes['qta']];
|
||||
return [$item->idsede => (float) $item->attributes['qta']];
|
||||
})
|
||||
->flatten()
|
||||
->toArray();
|
||||
|
|
|
@ -291,8 +291,7 @@ class CSV extends CSVImporter
|
|||
$qta_movimento = $qta_registrata - $giacenze[$id_sede];
|
||||
|
||||
$articolo->movimenta($qta_movimento, tr('Movimento da importazione'), new Carbon(), false, [
|
||||
'idsede_azienda' => $id_sede,
|
||||
'idsede_controparte' => 0,
|
||||
'idsede' => $id_sede,
|
||||
]);
|
||||
}
|
||||
|
||||
|
|
|
@ -24,12 +24,6 @@ use Illuminate\Database\Eloquent\Model;
|
|||
|
||||
/*
|
||||
* Classe dedicata alla gestione dei movimenti di magazzino degli articoli.
|
||||
*
|
||||
* Alcuni appunti sull'utilizzo dei campi *idsede_azienda* e *idsede_controparte*
|
||||
* Il campo *idsede_azienda* è relativo alla sede dell'Azienda che è interessata dal movimento, mentre *idsede_controparte* indica la sede del Cliente/Fornitore controparte.
|
||||
* La natura effettiva del movimento (e di *idsede_controparte*) è quindi identificabile dal valore del campo *qta*: se positivo il magazzino è aumentatao (movimento da *idsede_controparte* a *idsede_azienda*), se negativo il magazzino è diminuito (movimento da *idsede_azienda* a *idsede_controparte*).
|
||||
*
|
||||
* Si noti che il valore "0" per i campi *idsede_* indica solitamente una Sede legale dell'Anagrafica di riferimento. Solo se il movimento non è associato ad alcun documento il campo *idsede_controparte* non segue questo significato, poichè il movimento in questo caso è considerato manuale.
|
||||
*/
|
||||
class Movimento extends Model
|
||||
{
|
||||
|
|
|
@ -45,20 +45,17 @@ switch (post('op')) {
|
|||
|
||||
// Registrazione del movimento con variazione della quantità
|
||||
$articolo->movimenta($qta, $descrizione, $data, 1, [
|
||||
'idsede_controparte' => $id_sede_controparte,
|
||||
'idsede_azienda' => $id_sede_azienda,
|
||||
'idsede' => $id_sede_azienda,
|
||||
]);
|
||||
} elseif ($tipo_movimento == 'spostamento') {
|
||||
// Registrazione del movimento verso la sede di destinazione
|
||||
$articolo->registra($qta, $descrizione, $data, 1, [
|
||||
'idsede_controparte' => 0,
|
||||
'idsede_azienda' => $idsede_destinazione,
|
||||
'idsede' => $idsede_destinazione,
|
||||
]);
|
||||
|
||||
// Registrazione del movimento dalla sede di origine
|
||||
$articolo->registra(-$qta, $descrizione, $data, 1, [
|
||||
'idsede_controparte' => 0,
|
||||
'idsede_azienda' => $idsede_partenza,
|
||||
'idsede' => $idsede_partenza,
|
||||
]);
|
||||
}
|
||||
|
||||
|
|
|
@ -277,8 +277,7 @@ abstract class Article extends Accounting
|
|||
$qta_movimento = $documento->direzione == 'uscita' ? $qta : -$qta;
|
||||
$movimento = Movimento::descrizioneMovimento($qta_movimento, $documento->direzione).' - '.$documento->getReference();
|
||||
|
||||
$partenza = $documento->direzione == 'uscita' ? $documento->idsede_destinazione : $documento->idsede_partenza;
|
||||
$arrivo = $documento->direzione == 'uscita' ? $documento->idsede_partenza : $documento->idsede_destinazione;
|
||||
$idsede = $documento->direzione == 'uscita' ? $documento->idsede_destinazione : $documento->idsede_partenza;
|
||||
|
||||
// Fix per valori di sede a NULL
|
||||
$partenza = $partenza ?: 0;
|
||||
|
@ -287,8 +286,7 @@ abstract class Article extends Accounting
|
|||
$this->articolo->movimenta($qta_movimento, $movimento, $data, false, [
|
||||
'reference_type' => get_class($documento),
|
||||
'reference_id' => $documento->id,
|
||||
'idsede_azienda' => $partenza,
|
||||
'idsede_controparte' => $arrivo,
|
||||
'idsede' => $idsede,
|
||||
]);
|
||||
}
|
||||
|
||||
|
|
|
@ -94,4 +94,8 @@ ALTER TABLE `co_documenti` ADD `is_ritenuta_pagata` BOOLEAN NOT NULL AFTER `id_r
|
|||
UPDATE `zz_modules` SET `options` = 'SELECT |select| FROM `co_scadenziario`\r\n LEFT JOIN `co_documenti` ON `co_scadenziario`.`iddocumento` = `co_documenti`.`id`\r\n LEFT JOIN `an_anagrafiche` ON `co_documenti`.`idanagrafica` = `an_anagrafiche`.`idanagrafica`\r\n LEFT JOIN `co_pagamenti` ON `co_documenti`.`idpagamento` = `co_pagamenti`.`id`\r\n LEFT JOIN `co_tipidocumento` ON `co_documenti`.`idtipodocumento` = `co_tipidocumento`.`id`\r\n LEFT JOIN `co_statidocumento` ON `co_documenti`.`idstatodocumento` = `co_statidocumento`.`id`\r\nWHERE 1=1 AND\r\n (`co_statidocumento`.`descrizione` IS NULL OR `co_statidocumento`.`descrizione` IN(\'Emessa\',\'Parzialmente pagato\',\'Pagato\'))\r\nHAVING 2=2\r\nORDER BY `scadenza` ASC' WHERE `zz_modules`.`id` = (SELECT `id` FROM `zz_modules` WHERE `name`='Scadenzario');
|
||||
|
||||
-- Modificato nome segmento
|
||||
UPDATE `zz_segments` SET `name` = 'Scadenzario completo per periodo' WHERE `zz_segments`.`name` = 'Scadenzario completo';
|
||||
UPDATE `zz_segments` SET `name` = 'Scadenzario completo per periodo' WHERE `zz_segments`.`name` = 'Scadenzario completo';
|
||||
|
||||
-- Eliminata colonna idsede_controparte e rinominata idsede_azienda in idsede
|
||||
ALTER TABLE `mg_movimenti` CHANGE `idsede_azienda` `idsede` INT(11) NOT NULL;
|
||||
ALTER TABLE `mg_movimenti` DROP `idsede_controparte`;
|
Loading…
Reference in New Issue