diff --git a/modules/articoli/modutil.php b/modules/articoli/modutil.php index 53b766564..5b4fceb92 100755 --- a/modules/articoli/modutil.php +++ b/modules/articoli/modutil.php @@ -21,96 +21,6 @@ include_once __DIR__.'/../../core.php'; use Modules\Articoli\Articolo; -/** - * Funzione per inserire i movimenti di magazzino. - * - * @deprecated 2.4.11 - */ -function add_movimento_magazzino($id_articolo, $qta, $array = [], $descrizone = '', $data = '') -{ - $dbo = database(); - - if (empty($qta)) { - return false; - } - - $nome = null; - $tipo = null; - $numero = null; - - // Informazioni articolo - $manuale = 0; - - // Ddt - if (!empty($array['idddt'])) { - $rs = $dbo->fetchArray('SELECT numero, numero_esterno, dt_tipiddt.descrizione AS tipo, dt_tipiddt.dir FROM dt_ddt LEFT JOIN dt_tipiddt ON dt_tipiddt.id = dt_ddt.idtipoddt WHERE dt_ddt.id='.prepare($array['idddt'])); - $numero = (!empty($rs[0]['numero_esterno'])) ? $rs[0]['numero_esterno'] : $rs[0]['numero']; - $tipo = strtolower($rs[0]['tipo']); - - $rs_data = $dbo->fetchArray("SELECT data FROM dt_ddt WHERE id='".$array['idddt']."'"); - $data = $rs_data[0]['data']; - } - - // Fattura - elseif (!empty($array['iddocumento'])) { - $rs = $dbo->fetchArray('SELECT numero, numero_esterno, co_tipidocumento.descrizione AS tipo, co_tipidocumento.dir FROM co_documenti LEFT JOIN co_tipidocumento ON co_tipidocumento.id = co_documenti.idtipodocumento WHERE co_documenti.id='.prepare($array['iddocumento'])); - $numero = (!empty($rs[0]['numero_esterno'])) ? $rs[0]['numero_esterno'] : $rs[0]['numero']; - $tipo = strtolower($rs[0]['tipo']); - - $rs_data = $dbo->fetchArray("SELECT data FROM co_documenti WHERE id='".$array['iddocumento']."'"); - $data = $rs_data[0]['data']; - } - - // Intervento - elseif (!empty($array['idintervento'])) { - $rs_data = $dbo->fetchArray('SELECT IFNULL(MAX(orario_fine), data_richiesta) AS data, codice FROM in_interventi LEFT JOIN in_interventi_tecnici ON in_interventi.id=in_interventi_tecnici.idintervento WHERE in_interventi.id = '.prepare($array['idintervento'])); - $data = $rs_data[0]['data']; - $codice_intervento = $rs_data[0]['codice']; - - $movimento = ($qta > 0) ? tr('Ripristino articolo da intervento _NUM_') : tr('Scarico magazzino per intervento _NUM_'); - $numero = $codice_intervento; - } - - // Manuale - else { - $manuale = 1; - $movimento = !empty($descrizone) ? $descrizone : ''; - $descrizone = ''; - - if (empty($movimento)) { - $movimento = ($qta > 0) ? tr('Carico magazzino') : tr('Scarico magazzino'); - } - - if ($data == '') { - $data = date('Y-m-d'); - } - } - - // Descrizione di default - if (empty($movimento)) { - $carico = (!empty($rs[0]['dir']) && $rs[0]['dir'] == 'entrata') ? tr('Ripristino articolo da _TYPE_ numero _NUM_') : tr('Carico magazzino da _TYPE_ numero _NUM_'); - $scarico = (!empty($rs[0]['dir']) && $rs[0]['dir'] == 'uscita') ? tr('Rimozione articolo da _TYPE_ numero _NUM_') : tr('Scarico magazzino per _TYPE_ numero _NUM_'); - - $movimento = ($qta > 0) ? $carico : $scarico; - } - - // Completamento della descrizione - $movimento .= $descrizone; - $movimento = str_replace(['_NAME_', '_TYPE_', '_NUM_'], [$nome, $tipo, $numero], $movimento); - - // Movimento il magazzino solo se l'articolo non è un servizio - $articolo = Articolo::find($id_articolo); - - // Movimentazione effettiva - if (empty($array['idintervento'])) { - return $articolo->movimenta($qta, $movimento, $data, $manuale, $array); - } else { - return $articolo->registra($qta, $movimento, $data, $manuale, $array); - } - - return true; -} - /** * Funzione per aggiornare le sedi nei movimenti di magazzino. */ diff --git a/modules/ddt/modutil.php b/modules/ddt/modutil.php index f14466b47..e28e1624c 100644 --- a/modules/ddt/modutil.php +++ b/modules/ddt/modutil.php @@ -105,71 +105,6 @@ function get_ivaindetraibile_ddt($id_ddt) return $ddt->iva_indetraibile; } -/** - * Questa funzione rimuove un articolo dal ddt data e lo riporta in magazzino - * $idarticolo integer codice dell'articolo da scollegare dal ddt - * $idddt integer codice del ddt da cui scollegare l'articolo. - * - * @deprecated 2.4.11 - */ -function rimuovi_articolo_daddt($idarticolo, $idddt, $idrigaddt) -{ - global $dir; - - $dbo = database(); - - // Leggo la quantità di questo articolo in ddt - $query = 'SELECT qta, subtotale FROM dt_righe_ddt WHERE id='.prepare($idrigaddt); - $rs = $dbo->fetchArray($query); - $qta = floatval($rs[0]['qta']); - $subtotale = $rs[0]['subtotale']; - - // Leggo l'idordine - $query = 'SELECT idordine FROM dt_righe_ddt WHERE id='.prepare($idrigaddt); - $rs = $dbo->fetchArray($query); - $idordine = $rs[0]['idordine']; - - $non_rimovibili = seriali_non_rimuovibili('id_riga_ddt', $idrigaddt, $dir); - if (!empty($non_rimovibili)) { - return false; - } - - // Ddt di vendita - if ($dir == 'entrata') { - add_movimento_magazzino($idarticolo, $qta, ['idddt' => $idddt]); - - // Se il ddt è stato generato da un ordine tolgo questa quantità dalla quantità evasa - if (!empty($idordine)) { - $dbo->query('UPDATE or_righe_ordini SET qta_evasa=qta_evasa-'.$qta.' WHERE idarticolo='.prepare($idarticolo).' AND idordine='.prepare($idordine)); - } - } - - // Ddt di acquisto - else { - add_movimento_magazzino($idarticolo, -$qta, ['idddt' => $idddt]); - - // Se il ddt è stato generato da un ordine tolgo questa quantità dalla quantità evasa - if (!empty($idordine)) { - $dbo->query('UPDATE or_righe_ordini SET qta_evasa=qta_evasa-'.$qta.' WHERE idarticolo='.prepare($idarticolo).' AND idordine='.prepare($idordine)); - } - } - - $dbo->query($query); - - // Elimino la riga dal ddt - $dbo->query('DELETE FROM `dt_righe_ddt` WHERE id='.prepare($idrigaddt).' AND idddt='.prepare($idddt)); - - //Aggiorno lo stato dell'ordine - if (setting('Cambia automaticamente stato ordini fatturati') && !empty($idordine)) { - $dbo->query('UPDATE or_ordini SET idstatoordine=(SELECT id FROM or_statiordine WHERE descrizione="'.get_stato_ordine($idordine).'") WHERE id = '.prepare($idordine)); - } - - // Elimino i seriali utilizzati dalla riga - $dbo->query('DELETE FROM `mg_prodotti` WHERE id_articolo = '.prepare($idarticolo).' AND id_riga_ddt = '.prepare($idrigaddt)); - - return true; -} - /** * Ricalcola i costi aggiuntivi in ddt (rivalsa inps, ritenuta d'acconto, marca da bollo) * Deve essere eseguito ogni volta che si aggiunge o toglie una riga @@ -255,65 +190,6 @@ function ricalcola_costiagg_ddt($idddt, $idrivalsainps = '', $idritenutaacconto } } -/** - * Questa funzione aggiunge un articolo nel ddt - * $iddocumento integer id dell'ordine - * $idarticolo integer id dell'articolo da inserire nell'ordine - * $idiva integer id del codice iva associato all'articolo - * $qta float quantità dell'articolo nell'ordine - * $prezzo float prezzo totale degli articoli (prezzounitario*qtà). - * - * @deprecated 2.4.11 - */ -function add_articolo_inddt($idddt, $idarticolo, $descrizione, $idiva, $qta, $idum, $prezzo, $sconto = 0, $sconto_unitario = 0, $tipo_sconto = 'UNT') -{ - global $dir; - global $idordine; - - $dbo = database(); - - // Lettura unità di misura dell'articolo - if (empty($idum)) { - $rs = $dbo->fetchArray('SELECT um FROM mg_articoli WHERE id='.prepare($idarticolo)); - $um = $rs[0]['valore']; - } else { - $um = $idum; - } - - // Lettura iva dell'articolo - $rs2 = $dbo->fetchArray('SELECT percentuale, indetraibile FROM co_iva WHERE id='.prepare($idiva)); - $iva = ($prezzo - $sconto) / 100 * $rs2[0]['percentuale']; - $iva_indetraibile = $iva / 100 * $rs2[0]['indetraibile']; - - if ($qta > 0) { - $rsart = $dbo->fetchArray('SELECT abilita_serial FROM mg_articoli WHERE id='.prepare($idarticolo)); - - $dbo->query('INSERT INTO dt_righe_ddt(idddt, idarticolo, idiva, desc_iva, iva, iva_indetraibile, descrizione, subtotale, sconto, sconto_unitario, tipo_sconto, qta, abilita_serial, um, `order`) VALUES ('.prepare($idddt).', '.prepare($idarticolo).', '.prepare($idiva).', '.prepare($desc_iva).', '.prepare($iva).', '.prepare($iva_indetraibile).', '.prepare($descrizione).', '.prepare($prezzo).', '.prepare($sconto).', '.prepare($sconto_unitario).', '.prepare($tipo_sconto).', '.prepare($qta).', '.prepare($rsart[0]['abilita_serial']).', '.prepare($um).', (SELECT IFNULL(MAX(`order`) + 1, 0) FROM dt_righe_ddt AS t WHERE idddt='.prepare($idddt).'))'); - - $idriga = $dbo->lastInsertedID(); - - /* - Ddt cliente - */ - if ($dir == 'entrata') { - // Decremento la quantità dal magazzino centrale - add_movimento_magazzino($idarticolo, -$qta, ['idddt' => $idddt]); - } - /* - Ddt fornitore - */ - elseif ($dir == 'uscita') { - // Decremento la quantità dal magazzino centrale - add_movimento_magazzino($idarticolo, $qta, ['idddt' => $idddt]); - } - - // Inserisco il riferimento dell'ordine alla riga - $dbo->query('UPDATE dt_righe_ddt SET idordine='.prepare($idordine).' WHERE id='.prepare($idriga)); - } - - return $idriga; -} - /** * Restituisce lo stato del ddt in base alle righe. */ diff --git a/modules/fatture/modutil.php b/modules/fatture/modutil.php index 0113cc0c4..67567189a 100755 --- a/modules/fatture/modutil.php +++ b/modules/fatture/modutil.php @@ -389,114 +389,6 @@ function ricalcola_costiagg_fattura($iddocumento) $fattura->save(); } -/** - * Questa funzione aggiunge un articolo in fattura. E' comoda quando si devono inserire - * degli interventi con articoli collegati o preventivi che hanno interventi con articoli collegati! - * $iddocumento integer id della fattura - * $idarticolo integer id dell'articolo da inserire in fattura - * $idiva integer id del codice iva associato all'articolo - * $qta float quantità dell'articolo in fattura - * $prezzo float prezzo totale dell'articolo (prezzounitario*qtà) - * $idintervento integer id dell'intervento da cui arriva l'articolo (per non creare casini quando si rimuoverà un articolo dalla fattura). - * - * @deprecated 2.4.11 - */ -function add_articolo_infattura($iddocumento, $idarticolo, $descrizione, $idiva, $qta, $prezzo, $sconto = 0, $sconto_unitario = 0, $tipo_sconto = 'UNT', $idintervento = 0, $idconto = 0, $idum = 0, $idrivalsainps = '', $idritenutaacconto = '', $calcolo_ritenuta_acconto = '') -{ - global $dir; - global $idddt; - global $idordine; - global $idcontratto; - - $dbo = database(); - - if (empty($idddt)) { - $idddt = 0; - } - - if (empty($idordine)) { - $idordine = 0; - } - - if (empty($idcontratto)) { - $idcontratto = 0; - } - - // Lettura unità di misura dell'articolo - if (empty($idum)) { - $query = 'SELECT um FROM mg_articoli WHERE id='.prepare($idarticolo); - $rs = $dbo->fetchArray($query); - $um = $rs[0]['valore']; - } else { - $um = $idum; - } - - // Lettura iva dell'articolo - $rs2 = $dbo->fetchArray('SELECT * FROM co_iva WHERE id='.prepare($idiva)); - $iva = ($prezzo - $sconto) / 100 * $rs2[0]['percentuale']; - $desc_iva = $rs2[0]['descrizione']; - - if (!empty($idrivalsainps)) { - // Calcolo rivalsa inps - $rs = $dbo->fetchArray('SELECT * FROM co_rivalse WHERE id='.prepare($idrivalsainps)); - $rivalsainps = ($prezzo - $sconto) / 100 * $rs[0]['percentuale']; - } - - if (!empty($idritenutaacconto)) { - // Calcolo ritenuta d'acconto - $query = 'SELECT * FROM co_ritenutaacconto WHERE id='.prepare($idritenutaacconto); - $rs = $dbo->fetchArray($query); - if ($calcolo_ritenuta_acconto == 'IMP') { - $ritenutaacconto = ($prezzo - $sconto) / 100 * $rs[0]['percentuale']; - } elseif ($calcolo_ritenuta_acconto == 'IMP+RIV') { - $ritenutaacconto = ($prezzo - $sconto + $rivalsainps) / 100 * $rs[0]['percentuale']; - } - } - - if ($qta != 0) { - $rsart = $dbo->fetchArray('SELECT abilita_serial, idconto_vendita, idconto_acquisto FROM mg_articoli WHERE id='.prepare($idarticolo)); - - $default_idconto = ($dir == 'entrata') ? setting('Conto predefinito fatture di vendita') : setting('Conto predefinito fatture di acquisto'); - if ($idconto == $default_idconto) { - $idconto = $rsart[0]['idconto_'.($dir == 'entrata' ? 'vendita' : 'acquisto')]; - } - $idconto = empty($idconto) ? $default_idconto : $idconto; - - $dbo->query('INSERT INTO co_righe_documenti(iddocumento, idarticolo, idintervento, idiva, desc_iva, iva, iva_indetraibile, descrizione, subtotale, sconto, sconto_unitario, tipo_sconto, qta, abilita_serial, idconto, um, `order`, idritenutaacconto, ritenutaacconto, idrivalsainps, rivalsainps, calcolo_ritenuta_acconto) VALUES ('.prepare($iddocumento).', '.prepare($idarticolo).', '.(!empty($idintervento) ? prepare($idintervento) : 'NULL').', '.prepare($idiva).', '.prepare($desc_iva).', '.prepare($iva).', '.prepare($iva_indetraibile).', '.prepare($descrizione).', '.prepare($prezzo).', '.prepare($sconto).', '.prepare($sconto_unitario).', '.prepare($tipo_sconto).', '.prepare($qta).', '.prepare($rsart[0]['abilita_serial']).', '.prepare($idconto).', '.prepare($um).', (SELECT IFNULL(MAX(`order`) + 1, 0) FROM co_righe_documenti AS t WHERE iddocumento='.prepare($iddocumento).'), '.prepare($idritenutaacconto).', '.prepare($ritenutaacconto).', '.prepare($idrivalsainps).', '.prepare($rivalsainps).', '.prepare($calcolo_ritenuta_acconto).')'); - $idriga = $dbo->lastInsertedID(); - - /* - Fatture di vendita - */ - if ($dir == 'entrata') { - // Se il documento non è generato da un ddt o intervento allora movimento il magazzino - if (empty($idddt) && empty($idintervento)) { - add_movimento_magazzino($idarticolo, -$qta, ['iddocumento' => $iddocumento]); - } - } - /* - Fatture di acquisto - */ - elseif ($dir == 'uscita') { - // Se il documento non è generato da un ddt allora movimento il magazzino - if (empty($idddt)) { - add_movimento_magazzino($idarticolo, $qta, ['iddocumento' => $iddocumento]); - } - } - - // Inserisco il riferimento del ddt alla riga - $dbo->query('UPDATE co_righe_documenti SET idddt='.prepare($idddt).' WHERE id='.prepare($idriga)); - - // Inserisco il riferimento dell'ordine alla riga - $dbo->query('UPDATE co_righe_documenti SET idordine='.prepare($idordine).' WHERE id='.prepare($idriga)); - - // Inserisco il riferimento del contratto alla riga - $dbo->query('UPDATE co_righe_documenti SET idcontratto='.prepare($idcontratto).' WHERE id='.prepare($idriga)); - } - - return $idriga; -} - /** * Verifica che il numero_esterno della fattura indicata sia correttamente impostato, a partire dai valori delle fatture ai giorni precedenti. * Restituisce il numero_esterno mancante in caso di numero errato. diff --git a/modules/ordini/modutil.php b/modules/ordini/modutil.php index e2ed7f350..9ec47df66 100755 --- a/modules/ordini/modutil.php +++ b/modules/ordini/modutil.php @@ -105,70 +105,6 @@ function get_ivaindetraibile_ordine($idordine) return $ordine->iva_indetraibile; } -/** - * Questa funzione aggiunge un articolo nell'ordine. E' comoda quando si devono inserire - * degli interventi con articoli collegati o preventivi che hanno interventi con articoli collegati! - * $iddocumento integer id dell'ordine - * $idarticolo integer id dell'articolo da inserire nell'ordine - * $idiva integer id del codice iva associato all'articolo - * $qta float quantità dell'articolo nell'ordine - * $prezzo float prezzo totale degli articoli (prezzounitario*qtà). - * - * @deprecated 2.4.11 - */ -function add_articolo_inordine($idordine, $idarticolo, $descrizione, $idiva, $qta, $idum, $prezzo, $sconto = 0, $sconto_unitario = 0, $tipo_sconto = 'UNT') -{ - global $dir; - - $dbo = database(); - - // Lettura unità di misura dell'articolo - if (empty($idum)) { - $rs = $dbo->fetchArray('SELECT um FROM mg_articoli WHERE id='.prepare($idarticolo)); - $um = $rs[0]['valore']; - } else { - $um = $idum; - } - - // Lettura iva dell'articolo - $rs2 = $dbo->fetchArray('SELECT descrizione, percentuale, indetraibile FROM co_iva WHERE id='.prepare($idiva)); - $iva = ($prezzo - $sconto) / 100 * $rs2[0]['percentuale']; - $iva_indetraibile = $iva / 100 * $rs2[0]['indetraibile']; - - if ($qta > 0) { - $rsart = $dbo->fetchArray('SELECT abilita_serial FROM mg_articoli WHERE id='.prepare($idarticolo)); - $dbo->query('INSERT INTO or_righe_ordini(idordine, idarticolo, idiva, desc_iva, iva, iva_indetraibile, descrizione, subtotale, sconto, sconto_unitario, tipo_sconto, um, qta, abilita_serial, `order`) VALUES ('.prepare($idordine).', '.prepare($idarticolo).', '.prepare($idiva).', '.prepare($rs2[0]['descrizione']).', '.prepare($iva).', '.prepare($iva_indetraibile).', '.prepare($descrizione).', '.prepare($prezzo).', '.prepare($sconto).', '.prepare($sconto_unitario).', '.prepare($tipo_sconto).', '.prepare($um).', '.prepare($qta).', '.prepare($rsart[0]['abilita_serial']).', (SELECT IFNULL(MAX(`order`) + 1, 0) FROM or_righe_ordini AS t WHERE idordine='.prepare($idordine).'))'); - } -} - -/** - * Questa funzione rimuove un articolo dall'ordine - * $idarticolo integer codice dell'articolo da scollegare dall'ordine - * $idordine integer codice dell'ordine da cui scollegare l'articolo - * $idrigaordine integer id della riga ordine da rimuovere. - * - * @deprecated 2.4.11 - */ -function rimuovi_articolo_daordine($idarticolo, $idordine, $idrigaordine) -{ - global $dir; - - $dbo = database(); - - $non_rimovibili = seriali_non_rimuovibili('id_riga_ordine', $idrigaordine, $dir); - if (!empty($non_rimovibili)) { - return false; - } - - // Elimino la riga dall'ordine - $dbo->query('DELETE FROM `or_righe_ordini` WHERE id='.prepare($idrigaordine)); - - // Elimino i seriali utilizzati dalla riga - $dbo->query('DELETE FROM `mg_prodotti` WHERE id_articolo = '.prepare($idarticolo).' AND id_riga_ordine = '.prepare($idrigaordine)); - - return true; -} - /** * Ricalcola i costi aggiuntivi in ordine (rivalsa inps, ritenuta d'acconto, marca da bollo) * Deve essere eseguito ogni volta che si aggiunge o toglie una riga