fix: gestione movimentazioni e creazioni articoli fra sedi abilitate

This commit is contained in:
valentina 2024-10-15 15:21:12 +02:00
parent 9544ff1b5d
commit f4e0e373ec
5 changed files with 21 additions and 23 deletions

View File

@ -389,17 +389,12 @@ switch ($resource) {
$user = Auth::user(); $user = Auth::user();
$id_azienda = setting('Azienda predefinita'); $id_azienda = setting('Azienda predefinita');
$query = "SELECT * FROM (SELECT '0' AS id, 'Sede legale' AS `nomesede`, CONCAT_WS(' - ', \"".tr('Sede legale')."\" , (SELECT CONCAT (`citta`, IF(`indirizzo`!='',CONCAT(' (', `indirizzo`, ')'), ''),' (', `ragione_sociale`,')') FROM `an_anagrafiche` |where|)) AS descrizione UNION SELECT `id`, `nomesede`, CONCAT_WS(' - ', `nomesede`, CONCAT(`citta`, IF(`indirizzo`!='',CONCAT(' (', `indirizzo`, ')'), '')) ) FROM `an_sedi` |where|) AS tab |filter| ORDER BY descrizione"; $query = "SELECT * FROM (SELECT '0' AS id, 'Sede legale' AS `nomesede`, CONCAT_WS(' - ', \"".tr('Sede legale')."\" , (SELECT CONCAT (`citta`, IF(`indirizzo`!='',CONCAT(' (', `indirizzo`, ')'), ''),' (', `ragione_sociale`,')') FROM `an_anagrafiche` |where|)) AS descrizione UNION SELECT `id`, `nomesede`, CONCAT_WS(' - ', `nomesede`, CONCAT(`citta`, IF(`indirizzo`!='',CONCAT(' (', `indirizzo`, ')'), '')) ) FROM `an_sedi`) AS tab |filter| ORDER BY descrizione";
foreach ($elements as $element) {
$filter[] = '`id`='.prepare($element);
}
$where[] = '`idanagrafica`='.prepare($id_azienda); $where[] = '`idanagrafica`='.prepare($id_azienda);
// admin o utente senza una sede prefissata, avrà accesso a tutte le sedi
if (!empty($user->sedi) and !$user->is_admin) { // filtro in base alle sedi abilitate all'anagrafica
$where[] = '`id` IN('.implode(',', $user->sedi).')'; $filter[] = '`id` IN('.implode(',', $user->sedi).')';
}
if (!empty($search)) { if (!empty($search)) {
$search_fields[] = '`nomesede` LIKE '.prepare('%'.$search.'%'); $search_fields[] = '`nomesede` LIKE '.prepare('%'.$search.'%');

View File

@ -83,7 +83,8 @@ switch (post('op')) {
if (!empty(post('qta'))) { if (!empty(post('qta'))) {
$data_movimento = new Carbon(); $data_movimento = new Carbon();
$articolo->movimenta(post('qta'), tr('Carico manuale'), $data_movimento->format('Y-m-d'), true); $sede = post('sede');
$articolo->movimenta(post('qta'), tr('Carico manuale'), $data_movimento->format('Y-m-d'), true, $sede);
} }
$id_record = $articolo->id; $id_record = $articolo->id;

View File

@ -92,13 +92,11 @@ $aliquota_predefinita = floatval(Aliquota::find($iva_predefinita)->percentuale);
</div> </div>
<div class="col-md-4"> <div class="col-md-4">
{[ "type": "number", "label": "<?php echo tr('Soglia minima quantità'); ?>", "name": "threshold_qta", "decimals": "qta", "min-value": "undefined" ]} {[ "type": "select", "label": "<?php echo tr('Sede'); ?>", "name": "sede", "ajax-source": "sedi_azienda", "value": "0", "required": 1 ]}
</div> </div>
<div class="col-md-4"> <div class="col-md-4">
{[ "type": "select", "label": "<?php echo tr('Iva di vendita'); ?>", "name": "idiva_vendita", "ajax-source": "iva", "valore_predefinito": "Iva predefinita", "help": "<?php echo tr('Se non specificata, verrà utilizzata l\'iva di default delle impostazioni'); ?>" ]} {[ "type": "number", "label": "<?php echo tr('Soglia minima quantità'); ?>", "name": "threshold_qta", "decimals": "qta", "min-value": "undefined" ]}
<input type="hidden" name="prezzi_ivati" value="<?php echo $prezzi_ivati; ?>">
<input type="hidden" name="aliquota_predefinita" value="<?php echo $aliquota_predefinita; ?>">
</div> </div>
</div> </div>
@ -116,17 +114,23 @@ $aliquota_predefinita = floatval(Aliquota::find($iva_predefinita)->percentuale);
</div> </div>
<div class="row"> <div class="row">
<div class="col-md-6"> <div class="col-md-4">
{[ "type": "select", "label": "<?php echo tr('Conto predefinito di acquisto'); ?>", "name": "idconto_acquisto", "ajax-source": "conti-acquisti" ]} {[ "type": "select", "label": "<?php echo tr('Conto predefinito di acquisto'); ?>", "name": "idconto_acquisto", "ajax-source": "conti-acquisti" ]}
</div> </div>
<div class="col-md-6"> <div class="col-md-4">
{[ "type": "select", "label": "<?php echo tr('Conto predefinito di vendita'); ?>", "name": "idconto_vendita", "ajax-source": "conti-vendite" ]} {[ "type": "select", "label": "<?php echo tr('Conto predefinito di vendita'); ?>", "name": "idconto_vendita", "ajax-source": "conti-vendite" ]}
</div> </div>
<div class="col-md-4">
{[ "type": "select", "label": "<?php echo tr('Iva di vendita'); ?>", "name": "idiva_vendita", "ajax-source": "iva", "valore_predefinito": "Iva predefinita", "help": "<?php echo tr('Se non specificata, verrà utilizzata l\'iva di default delle impostazioni'); ?>" ]}
<input type="hidden" name="prezzi_ivati" value="<?php echo $prezzi_ivati; ?>">
<input type="hidden" name="aliquota_predefinita" value="<?php echo $aliquota_predefinita; ?>">
</div>
</div> </div>
<div class="row"> <div class="row">
<div class="col-md-6"> <div class="col-md-4">
{[ "type": "checkbox", "label": "<?php echo tr('Abilita serial number'); ?>", "name": "abilita_serial_add", "help": "<?php echo tr('Abilita serial number in fase di aggiunta articolo in fattura o ddt'); ?>", "value": "<?php echo setting('Serial number abilitato di default'); ?>","placeholder": "<?php echo tr('Serial number'); ?>" ]} {[ "type": "checkbox", "label": "<?php echo tr('Abilita serial number'); ?>", "name": "abilita_serial_add", "help": "<?php echo tr('Abilita serial number in fase di aggiunta articolo in fattura o ddt'); ?>", "value": "<?php echo setting('Serial number abilitato di default'); ?>","placeholder": "<?php echo tr('Serial number'); ?>" ]}
</div> </div>
</div> </div>

View File

@ -71,10 +71,10 @@ class Articolo extends Model
* *
* @return bool * @return bool
*/ */
public function movimenta($qta, $descrizone = null, $data = null, $manuale = false, $array = []) public function movimenta($qta, $descrizone = null, $data = null, $manuale = false, $id_sede = null, $array = [], )
{ {
$data = ($data ?: date('Y-m-d H:i:s')); $data = ($data ?: date('Y-m-d H:i:s'));
$id = $this->registra($qta, $descrizone, $data, $manuale, $array); $id = $this->registra($qta, $descrizone, $data, $manuale, $array, $id_sede);
if (empty($this->servizio)) { if (empty($this->servizio)) {
$this->qta += $qta; $this->qta += $qta;
@ -95,7 +95,7 @@ class Articolo extends Model
* *
* @return bool * @return bool
*/ */
public function registra($qta, $descrizone = null, $data = null, $manuale = false, $array = []) public function registra($qta, $descrizone = null, $data = null, $manuale = false, $array = [], $id_sede = null)
{ {
if (empty($qta)) { if (empty($qta)) {
return false; return false;
@ -112,6 +112,7 @@ class Articolo extends Model
'movimento' => $descrizone, 'movimento' => $descrizone,
'data' => $data, 'data' => $data,
'manuale' => $manuale, 'manuale' => $manuale,
'idsede' => $id_sede ?: 0,
'idutente' => $user->id, 'idutente' => $user->id,
])); ]));
} }

View File

@ -30,9 +30,6 @@ if (setting('Attiva scorciatoie da tastiera')) {
?> ?>
<form action="" method="post" id="add-form"> <form action="" method="post" id="add-form">
<input type="hidden" name="op" value="add"> <input type="hidden" name="op" value="add">
<input type="hidden" name="backto" value="record-edit"> <input type="hidden" name="backto" value="record-edit">