Fix aggiunta articoli con quantità negativa in ordini cliente
This commit is contained in:
parent
4a6b2f759e
commit
39c8ca17fc
|
@ -627,74 +627,79 @@ switch (post('op')) {
|
||||||
|
|
||||||
$originale = ArticoloOriginale::find($id_articolo);
|
$originale = ArticoloOriginale::find($id_articolo);
|
||||||
|
|
||||||
$articolo = Articolo::build($ordine, $originale);
|
if ($qta_articolo <= 0 && !$permetti_movimenti_sotto_zero && !$originale->servizio && $dir == 'entrata') {
|
||||||
$qta = 1;
|
$response['error'] = tr('Quantità a magazzino non sufficiente');
|
||||||
|
echo json_encode($response);
|
||||||
$articolo->descrizione = $originale->descrizione;
|
|
||||||
$articolo->um = $originale->um;
|
|
||||||
$articolo->qta = 1;
|
|
||||||
$articolo->costo_unitario = $originale->prezzo_acquisto;
|
|
||||||
|
|
||||||
if ($dir == 'entrata') {
|
|
||||||
$id_iva = ($ordine->anagrafica->idiva_vendite ?: $originale->idiva_vendita) ?: setting('Iva predefinita');
|
|
||||||
} else {
|
} else {
|
||||||
$id_iva = ($ordine->anagrafica->idiva_acquisti ?: setting('Iva predefinita'));
|
$articolo = Articolo::build($ordine, $originale);
|
||||||
}
|
$qta = 1;
|
||||||
$id_anagrafica = $ordine->idanagrafica;
|
|
||||||
$prezzi_ivati = setting('Utilizza prezzi di vendita comprensivi di IVA');
|
|
||||||
|
|
||||||
// CALCOLO PREZZO UNITARIO
|
$articolo->descrizione = $originale->descrizione;
|
||||||
$prezzo_unitario = 0;
|
$articolo->um = $originale->um;
|
||||||
$sconto = 0;
|
$articolo->qta = 1;
|
||||||
// Prezzi netti clienti / listino fornitore
|
$articolo->costo_unitario = $originale->prezzo_acquisto;
|
||||||
$prezzi = $dbo->fetchArray('SELECT minimo, massimo, sconto_percentuale, '.($prezzi_ivati ? 'prezzo_unitario_ivato' : 'prezzo_unitario').' AS prezzo_unitario
|
|
||||||
FROM mg_prezzi_articoli
|
|
||||||
WHERE id_articolo = '.prepare($id_articolo).' AND dir = '.prepare($dir).' AND id_anagrafica = '.prepare($id_anagrafica));
|
|
||||||
|
|
||||||
if ($prezzi) {
|
if ($dir == 'entrata') {
|
||||||
foreach ($prezzi as $prezzo) {
|
$id_iva = ($ordine->anagrafica->idiva_vendite ?: $originale->idiva_vendita) ?: setting('Iva predefinita');
|
||||||
if ($qta >= $prezzo['minimo'] && $qta <= $prezzo['massimo']) {
|
} else {
|
||||||
$prezzo_unitario = $prezzo['prezzo_unitario'];
|
$id_iva = ($ordine->anagrafica->idiva_acquisti ?: setting('Iva predefinita'));
|
||||||
$sconto = $prezzo['sconto_percentuale'];
|
}
|
||||||
continue;
|
$id_anagrafica = $ordine->idanagrafica;
|
||||||
}
|
$prezzi_ivati = setting('Utilizza prezzi di vendita comprensivi di IVA');
|
||||||
|
|
||||||
if ($prezzo['minimo'] == null && $prezzo['massimo'] == null && $prezzo['prezzo_unitario'] != null) {
|
// CALCOLO PREZZO UNITARIO
|
||||||
$prezzo_unitario = $prezzo['prezzo_unitario'];
|
$prezzo_unitario = 0;
|
||||||
$sconto = $prezzo['sconto_percentuale'];
|
$sconto = 0;
|
||||||
continue;
|
// Prezzi netti clienti / listino fornitore
|
||||||
|
$prezzi = $dbo->fetchArray('SELECT minimo, massimo, sconto_percentuale, '.($prezzi_ivati ? 'prezzo_unitario_ivato' : 'prezzo_unitario').' AS prezzo_unitario
|
||||||
|
FROM mg_prezzi_articoli
|
||||||
|
WHERE id_articolo = '.prepare($id_articolo).' AND dir = '.prepare($dir).' AND id_anagrafica = '.prepare($id_anagrafica));
|
||||||
|
|
||||||
|
if ($prezzi) {
|
||||||
|
foreach ($prezzi as $prezzo) {
|
||||||
|
if ($qta >= $prezzo['minimo'] && $qta <= $prezzo['massimo']) {
|
||||||
|
$prezzo_unitario = $prezzo['prezzo_unitario'];
|
||||||
|
$sconto = $prezzo['sconto_percentuale'];
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($prezzo['minimo'] == null && $prezzo['massimo'] == null && $prezzo['prezzo_unitario'] != null) {
|
||||||
|
$prezzo_unitario = $prezzo['prezzo_unitario'];
|
||||||
|
$sconto = $prezzo['sconto_percentuale'];
|
||||||
|
continue;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
if (empty($prezzo_unitario)) {
|
||||||
if (empty($prezzo_unitario)) {
|
// Prezzi listini clienti
|
||||||
// Prezzi listini clienti
|
$listino = $dbo->fetchOne('SELECT sconto_percentuale AS sconto_percentuale_listino, '.($prezzi_ivati ? 'prezzo_unitario_ivato' : 'prezzo_unitario').' AS prezzo_unitario_listino
|
||||||
$listino = $dbo->fetchOne('SELECT sconto_percentuale AS sconto_percentuale_listino, '.($prezzi_ivati ? 'prezzo_unitario_ivato' : 'prezzo_unitario').' AS prezzo_unitario_listino
|
FROM mg_listini
|
||||||
FROM mg_listini
|
LEFT JOIN mg_listini_articoli ON mg_listini.id=mg_listini_articoli.id_listino
|
||||||
LEFT JOIN mg_listini_articoli ON mg_listini.id=mg_listini_articoli.id_listino
|
LEFT JOIN an_anagrafiche ON mg_listini.id=an_anagrafiche.id_listino
|
||||||
LEFT JOIN an_anagrafiche ON mg_listini.id=an_anagrafiche.id_listino
|
WHERE mg_listini.data_attivazione<=NOW() AND mg_listini_articoli.data_scadenza>=NOW() AND mg_listini.attivo=1 AND id_articolo = '.prepare($id_articolo).' AND dir = '.prepare($dir).' AND idanagrafica = '.prepare($id_anagrafica));
|
||||||
WHERE mg_listini.data_attivazione<=NOW() AND mg_listini_articoli.data_scadenza>=NOW() AND mg_listini.attivo=1 AND id_articolo = '.prepare($id_articolo).' AND dir = '.prepare($dir).' AND idanagrafica = '.prepare($id_anagrafica));
|
|
||||||
|
|
||||||
if ($listino) {
|
if ($listino) {
|
||||||
$prezzo_unitario = $listino['prezzo_unitario_listino'];
|
$prezzo_unitario = $listino['prezzo_unitario_listino'];
|
||||||
$sconto = $listino['sconto_percentuale_listino'];
|
$sconto = $listino['sconto_percentuale_listino'];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
if ($dir == 'entrata') {
|
||||||
|
$prezzo_unitario = $prezzo_unitario ?: ($prezzi_ivati ? $originale->prezzo_vendita_ivato : $originale->prezzo_vendita);
|
||||||
|
} else {
|
||||||
|
$prezzo_unitario = $prezzo_unitario ?: $originale->prezzo_acquisto;
|
||||||
|
}
|
||||||
|
|
||||||
|
$provvigione = $dbo->selectOne('an_anagrafiche', 'provvigione_default', ['idanagrafica' => $ordine->idagente])['provvigione_default'];
|
||||||
|
|
||||||
|
$articolo->confermato = ($dir = 'entrata' ? setting('Conferma automaticamente le quantità negli ordini cliente') : setting('Conferma automaticamente le quantità negli ordini fornitore'));
|
||||||
|
$articolo->setPrezzoUnitario($prezzo_unitario, $id_iva);
|
||||||
|
$articolo->setSconto($sconto, 'PRC');
|
||||||
|
$articolo->setProvvigione($provvigione ?: 0, 'PRC');
|
||||||
|
$articolo->save();
|
||||||
|
|
||||||
|
|
||||||
|
flash()->info(tr('Nuovo articolo aggiunto!'));
|
||||||
}
|
}
|
||||||
if ($dir == 'entrata') {
|
|
||||||
$prezzo_unitario = $prezzo_unitario ?: ($prezzi_ivati ? $originale->prezzo_vendita_ivato : $originale->prezzo_vendita);
|
|
||||||
} else {
|
|
||||||
$prezzo_unitario = $prezzo_unitario ?: $originale->prezzo_acquisto;
|
|
||||||
}
|
|
||||||
|
|
||||||
$provvigione = $dbo->selectOne('an_anagrafiche', 'provvigione_default', ['idanagrafica' => $ordine->idagente])['provvigione_default'];
|
|
||||||
|
|
||||||
$articolo->confermato = ($dir = 'entrata' ? setting('Conferma automaticamente le quantità negli ordini cliente') : setting('Conferma automaticamente le quantità negli ordini fornitore'));
|
|
||||||
$articolo->setPrezzoUnitario($prezzo_unitario, $id_iva);
|
|
||||||
$articolo->setSconto($sconto, 'PRC');
|
|
||||||
$articolo->setProvvigione($provvigione ?: 0, 'PRC');
|
|
||||||
$articolo->save();
|
|
||||||
|
|
||||||
|
|
||||||
flash()->info(tr('Nuovo articolo aggiunto!'));
|
|
||||||
} else {
|
} else {
|
||||||
$response['error'] = tr('Nessun articolo corrispondente a magazzino');
|
$response['error'] = tr('Nessun articolo corrispondente a magazzino');
|
||||||
echo json_encode($response);
|
echo json_encode($response);
|
||||||
|
|
Loading…
Reference in New Issue