} if (isset($_POST['tipo_doc']) && $_POST['tipo_doc'] != "-") { $_SESSION['documento']['tipo_doc'] = $_POST['tipo_doc']; } if (!empty($_POST) && isset($_GET['key']) && !isset($_POST['cod_documento'])) { $key = $_GET['key']; // echo "Debug => qta richiesta: " . $_POST['qta' . $key] . " <br />"; /* * Se il tipo di documento è 5 ovvero fattura vendita * e l'articolo è reale (quindi con un id e non una voce * arbitraria con id = '-') * verifica che la giacenza sia sufficiente: */ if ($_SESSION['documento']['tipo_doc'] == "5" && $_SESSION['documento']['dettaglio'][$key]['id_prodotto'] != 0) { if ($_SESSION['documento']['dettaglio'][$key]['qta'] != $_POST['qta' . $key]) { $mod_qta = getDisponibilita($_SESSION['documento']['dettaglio'][$key]['id_prodotto'], $_POST['qta' . $key], 1); if ($mod_qta == "0.00") { $d->SaveErrors .= "Errore, impossibile variare la quantità, il" . " prodotto non e' disponibile.<br />"; } elseif ($mod_qta != $_POST['qta' . $key]) { $d->SaveErrors .= "Errore, la giacenza non è sufficiente per " . "soddisfare la richiesta, <br /> imposto la quantità" . " al massimo consentito dal magazzino.<br />"; $_SESSION['documento']['dettaglio'][$key]['qta'] = $mod_qta; } else { $_SESSION['documento']['dettaglio'][$key]['qta'] = $_POST['qta' . $key]; } } } elseif ($_SESSION['documento']['tipo_doc'] != "5") { $_SESSION['documento']['dettaglio'][$key]['qta'] = $_POST['qta' . $key]; } if ($_POST['sco' . $key] > 100) { $_POST['sco' . $key] = 100; }
function AddDocumentRow($RowType, $IdProdotto, $IdIVA = "", $Note = "", $Quantita = 1, $Sconto = 0, $Prezzo = 0) { global $d; $DocumentRow = array(); $UpdateDocumentRow = ""; if (!isset($_SESSION['documento']['dettaglio'])) { $_SESSION['documento']['dettaglio'] = array(); } if (is_numeric($IdProdotto) && $IdProdotto > 0) { // si tratta di un prodotto reale, estraggo tutti i dati dall'anagrafica: //~ echo "[Debug][AddDocumentRow]: si tratta di un prodotto reale, estraggo tutti i dati dall'anagrafica <br />"; $ProdottoArray = $d->GetRows("*", "view_prodotti", "id_prodotto = '{$IdProdotto}' LIMIT 1", "", "", 1); $DocumentRow = $ProdottoArray[0]; } elseif (is_numeric($IdProdotto) && $IdProdotto == 0) { // si tratta di una voce arbitraria o una nota ( todo ): //~ echo "[Debug][AddDocumentRow]: si tratta di una voce arbitraria o una nota ( todo ) <br />"; $DocumentRow['id_prodotto'] = 0; $DocumentRow['cod_int'] = "-"; $DocumentRow['cod_forn'] = "-"; $DocumentRow['um'] = "-"; } //~ echo "[Debug][AddDocumentRow]: IVA: '$IdIVA' <br />"; if ($IdIVA == "") { // Recupera i dati dell'iva del prodotto se non e' stato fornito l'id: //~ echo "[Debug][AddDocumentRow]: Recupera i dati dell'iva del prodotto se non e' stato fornito l'id <br />"; $IvaArray = $d->GetRows("*", "tab_iva", "id_iva = '" . $ProdottoArray[0]['id_iva'] . "'", "", "", 1); $DocumentRow['id_iva'] = $IvaArray[0]['id_iva']; $DocumentRow['iva'] = $IvaArray[0]['iva']; $DocumentRow['desc_iva'] = $IvaArray[0]['desc_iva']; unset($IvaArray); } elseif (is_numeric($IdIVA)) { // Importa i dati dell'iva in base all'id fornito: //~ echo "[Debug][AddDocumentRow]: Importa i dati dell'iva in base all'id fornito <br />"; $IvaArray = $d->GetRows("*", "tab_iva", "id_iva = '{$IdIVA}'", "", "", 1); //~ echo "<pre>"; //~ print_r($IvaArray); //~ echo "</pre>"; $DocumentRow['id_iva'] = $IvaArray[0]['id_iva']; $DocumentRow['iva'] = $IvaArray[0]['iva']; $DocumentRow['desc_iva'] = $IvaArray[0]['desc_iva']; unset($IvaArray); } //~ echo "[Debug][AddDocumentRow]: NOTE: $Note <br />"; if ($Note == "") { if (is_numeric($IdProdotto) && $IdProdotto > 0) { /* si tratta di un prodotto, quindi utilizzo le note * dall'anagrafica per popolare il dato */ $DocumentRow['note'] = $ProdottoArray[0]['note']; } } else { // utilizzo il valore fornito per popolare il campo: if (is_numeric($IdProdotto) && $IdProdotto == 0) { // si tratta di una voce arbitraria o una nota ( todo ): //~ echo "[Debug][AddDocumentRow]: si tratta di una voce arbitraria o una nota ( todo ) <br />"; $DocumentRow['marca'] = ""; $DocumentRow['modello'] = $Note; $DocumentRow['voce_arb'] = $Note; } else { $DocumentRow['note'] = $Note; } } //~ echo "[Debug][AddDocumentRow]: Quantita: $Quantita <br />"; if ($Quantita == "" || $Quantita < 0) { // Se la quantità scelta è nulla o < 1 allora impostala ad 1: //~ echo "[Debug][AddDocumentRow]: Quantita' inferiore a zero, la porto ad 1 <br />"; $Quantita = 1; } if ($Quantita > 0) { if ($_SESSION['documento']['tipo_doc'] == 5) { $DocumentRow['disp'] = getGiacenza($DocumentRow['cod_int']); $DocumentRow['qta'] = getDisponibilita($IdProdotto, $Quantita); $DocumentRow['prz'] = $ProdottoArray[0]['prz_ve']; } else { // disponibilita' in altri casi non realmente importante $DocumentRow['disp'] = getGiacenza($DocumentRow['cod_int']); $DocumentRow['qta'] = $Quantita; $DocumentRow['prz'] = $ProdottoArray[0]['prz_acq']; } } switch ($RowType) { case "prodotto": /* * 01/07/2012 12:49:13 CEST Claudio Giordano * * Verifico la presenza dello stesso articolo nel documento */ foreach ($_SESSION['documento']['dettaglio'] as $key => $field) { if ($field['id_prodotto'] == $ProdottoArray[0]['id_prodotto']) { //~ echo "[Debug][AddDocumentRow]: l'articolo e' presente nel documento con KEY: $key <br />"; $UpdateDocumentRow = $key; } } $DocumentRow['sco'] = $Sconto; $DocumentRow['voce_arb'] = ""; unset($temp_array); break; case "nota": // TODO break; case "voce": $DocumentRow['sco'] = $Sconto; break; default: echo "[Debug][AddDocumentRow]: Errore, tipo di riga non riconsciuto, esco <br />"; return; } //~ echo "[Debug][AddDocumentRow]: UpdateDocumentRow: '$UpdateDocumentRow' <br />"; if (!is_numeric($UpdateDocumentRow)) { // accoda la riga al dettaglio: //~ echo "[Debug][AddDocumentRow]: aggiungo la nuova riga al documento <br />"; array_push($_SESSION['documento']['dettaglio'], $DocumentRow); } else { /* * se e' stato trovato il prodotto nel dettaglio aggiorna/sostituisci la riga * incrementando anche la quantita' */ //~ echo "[Debug][AddDocumentRow]: aggiorno la riga $UpdateDocumentRow del documento con i nuovi dati <br />"; //~ echo "[Debug]: sess_qta: ".$_SESSION['documento']['dettaglio'][$UpdateDocumentRow]['qta']." <br />"; //~ echo "[Debug]: row_qta: ".$DocumentRow['qta']." <br />"; //~ echo "[Debug]: _qta: $Quantita <br />"; $DocumentRow['qta'] = floatval(floatval($_SESSION['documento']['dettaglio'][$UpdateDocumentRow]['qta']) + floatval($Quantita)); $_SESSION['documento']['dettaglio'][$UpdateDocumentRow] = $DocumentRow; } unset($ProdottoArray); }