$valore) { debug (0, "Variabile = $var ; vALORE = $valore") ; if ($var != "ope") $ordine->{$var} = $valore ; } /******************************************************* * Controllo che tipo di operazione devo fare: * ope = add ==> Inserimento di un nuovo ordine * ope = mod ==> Modifica di un ordine * ope = del ==> Eliminazione di un ordine ********************************************************/ if ($ope == "add") { $ret = $ordine->SalvaOrdine() ; } elseif ($ope == "mod") { /*** * In questa fase si modificano solo i prodotti in quanto i dati dell'ordine sono stati evetualmente modificati * da un'altra parte * * P r o b a b i l m e n t e l a p a r t e d i m o d i f i c a n o n v i e n e p i ù u t i l i z z a t a . * C A N C E L L A R E ? ***/ $submit = "document.forms.dettagli_prodotti.submit() ;" ; $arrIdProdotti = explode(",", $strIdProdotti) ; $arrDescProdotto = explode("£", $strDescProdotto) ; $arrPrzForzato = explode("£", $strPrzForzato) ; $arrNumCart = explode(",", $strNumCart) ; $arrConfDa = explode(",", $strConfDa) ; $arrScontoPrd = explode(",", $strScontoPrd) ; $arrScontoMerce = explode(",", $strScontoMerce) ; $dbt = new FC_SQL ; /********************************************************************* * oltre a recuperare i dati dell'ordine da modificare, controllo anche * se ho inserito i dati riguardanti l'eventuale assegno con cui * è stata pagata la fattura che si riferisce all'ordine * che sto modificando. *******************************************************************/ $importofattura = NumToSql($importofattura) ; $importonc = NumToSql($importonc) ; $importona = NumToSql($importona) ; $impassegno = NumToSql($impassegno) ; if ($saldofattura) $sf = 1 ; else $sf = 0 ; ; if ($saldoprovvigione) $sp = 1 ; else $sp = 0 ; ; if ($saldoprovvigioneagente) $spa = 1 ; else $spa = 0 ; ; if ($dainviare) $da = 1 ; else $da = 0 ; ; if ($daspedire) $ds = 1 ; else $ds = 0 ; /****************************************************************** * Per aggiornare i dettagli faccio la seguente operazione: * prima elimino tutti i record in dettagli che hanno l'idordine * uguale a quello che si sta modificando, poi inserisco tutti i * record nuovi in dettagli con i parametri passati modificati * Prima di eliminare dai dettagli i record dove l'idordine = a quello * di modifica, devo aggiornare i valori del campo qutilizzata di * ogni singolo prodotto dell'ordine. Stessa filosofia per i prodotti * in sconto merce *********************************************************************/ if ($fornitore != $idsarzi) { $qdett = "select * from $tdettagli, $tprodotti where idordine = $idordine and $tprodotti.idprodotti = $tdettagli.idprodotto" ; $db->query($qdett) ; while ($db->next_record()) { $id = $db->f("IdProdotti") ; $newuti = $db->f("QUtilizzata") - ($db->f("NumCartoni") * $db->f("ConfezioniDa")) ; $qmod = "update $tprodotti set qutilizzata = $newuti where idprodotti = $id" ; $ret = $dbt->query($qmod) ; } $qscme = "select * from $tscontomerce, $tprodotti where idordine = $idordine and $tprodotti.idprodotti = $tscontomerce.idprodotto" ; $db->query($qscme) ; while ($db->next_record()) { $id = $db->f("IdProdotti") ; $newuti = $db->f("QUtilizzata") - ($db->f("NumCartoni") * $db->f("ConfezioniDa")) ; $qmod = "update $tprodotti set qutilizzata = $newuti where idprodotti = $id" ; $ret = $dbt->query($qmod) ; } } $qdel = "delete from $tdettagli where idordine = $idordine" ; $ret = $db->query($qdel) ; $qdelscme = "delete from $tscontomerce where idordine = $idordine" ; $ret = $db->query($qdelscme) ; for($i=0 ; $iquery($qscme) ; } else { /******************************************************************************* * devo inserire nella tabella dettagli questo prodotto con i relativi parametri *******************************************************************************/ $qdett = " insert into $tdettagli (IdOrdine, IdProdotto, PrezzoForzato, NumCartoni, ConfezioniDa, ScontoPrd) VALUES ($idordine, '$codprod', '$przForzato', $cart, $conf, '$scontoprd')" ; $ret = $db->query($qdett) ; /*** * al fine di aggiornare il record in AmmontareVariOrdini devo effettuare le seguenti operazioni ***/ if ($fornitore == $idsarzi) { $tprodotti = $tsarzi ; $codprod = substr($codprod, -2, 2) ; } $qpro = " select P.*, I.Aliquota from $tprodotti P inner join $tiva I on I.idIva = P.IdIvaPrd where P.IdProdotti = '$codprod' " ; list($n, $d) = $db->RecuperaDati($qpro) ; if ($n > 0) { if ($przForzato != '') $tt = ($cart * $conf * $przForzato) ; else $tt = ($cart * $conf * $d['PrezzoUnitario'][0]) ; if ($scontoprd != "") $tt = CalcolaScontoProdotto($tt, $scontoprd) ; /*********************************************************** * Una volta calcolato l'eventuale sconto prodotto, * devo andare a vedere se per questo prodotto ci sono delle * accise e, in caso positivo, considerarle nell'ammontare ***********************************************************/ $tt += ($cart * $conf * $d['Accisa'][0]) ; $impIva = ($tt * $d["Aliquota"][0] / 100) ; $ammontareOrdineSenzaIva += $tt ; $ammontareOrdineConIva += $tt + $impIva ; debug (0, "przForzato = $przForzato -- $ammontareOrdineSenzaIva" ) ; } } /************************************************************ * Aggiorno la tabella dei prodotti incrementando la quantita * utilizzata per questo prodotto se non si tratta di SARZI **************************************************************/ if ($fornitore != $idsarzi) { $qprod = "select * from $tprodotti where idprodotti = $codprod" ; $dbt->query($qprod) ; while ($dbt->next_record()) $qut = $dbt->f("QUtilizzata") ; $newqut = $qut + ($cart * $conf) ; $qupd = "update $tprodotti set qutilizzata = $newqut where idprodotti = $codprod" ; $ret = $dbt->query($qupd) ; } } } /*** * per aggiornare il record nella tabella AmmontareVariOrdini ***/ /*** * per i valori senza IVA ***/ $scn1 = ($ammontareOrdineSenzaIva * $sconto1 / 100) ; $subtotp1 = $ammontareOrdineSenzaIva - $scn1 ; $scn2 = ($subtotp1 * $sconto2 / 100) ; $sconti = $scn1 + $scn2 ; $baseprov = $ammontareOrdineSenzaIva - $sconti ; /*** * per i valori con iva ***/ $sconto1ConIva = ($ammontareOrdineConIva * $sconto1 / 100) ; $subtotp1ConIva = $ammontareOrdineConIva - $sconto1ConIva ; $sconto2ConIva = ($subtotp1ConIva * $sconto2 / 100) ; $subtotp2ConIva = $subtotp1ConIva - $sconto2ConIva ; $sconto3ConIva = ($subtotp2ConIva * $sconto3 / 100) ; $subtotp3ConIva = $subtotp2ConIva - $sconto3ConIva ; $scontiConIva = $sconto1ConIva + $sconto2ConIva + $sconto3ConIva; // Da ricordare che in questa fase NON può essere aggiornata la nota di credito $ammontareOrdineConIva = $ammontareOrdineConIva - $scontiConIva ; /*** * dall'idagente e dall'idfornitore mi ricavo la provvigione eventuale dell'agente e la provvigione * dell'agenzia verso il fornitore ***/ $qper = " select F.Provvigione as PercentualeProvvAgenzia, case when (AFP.percentuale <> 0) then AFP.percentuale else A.percentuale end as PercentualeProvvAgente from $tagenti A left join $tageforper AFP on AFP.idagente = A.idagenti and AFP.idfornitore = $fornitore, $tfornitori F where A.idagenti = $idagente and F.idfornitori = $fornitore " ; list($nper, $dper) = $db->RecuperaDati($qper) ; if ($nper > 0) { $percentualeProvvAgenzia = $dper['PercentualeProvvAgenzia'][0] ; $percentualeProvvAgente = $dper['PercentualeProvvAgente'][0] ; } $ammontareProvvAgenzia = ($baseprov * $percentualeProvvAgenzia / 100) ; $ammontareProvvAgente = ($baseprov * $percentualeProvvAgente / 100) ; /*** * a questo punto dovrei averci tutti i dati che mi occorrono * Ho scoperto che per qualche motivo, un ordine già inserito potrebbe non essere * in questa tabella. Allora prima di aggiornare faccio un controllo sulla presenza o meno * dell'ordine in questa tabella ***/ $qcheck = " select * from $tAmmontareVariOrdini AVO where AVO.IdOrdine = $idordine " ; list($n, $d) = $db->RecuperaDati($qcheck) ; if ($n == 0) { $qAmm = " insert into $tAmmontareVariOrdini (IdOrdine, AmmontareOrdineSenzaIva, AmmontareOrdineConIva, ScontiFineProvvigioni, BaseProvvigionale, PercentualeProvvAgente, AmmontareProvvAgente, PercentualeProvvAgenzia, AmmontareProvvAgenzia) values ($idordine, $ammontareOrdineSenzaIva, $ammontareOrdineConIva, $sconti, $baseprov, $percentualeProvvAgente, $ammontareProvvAgente, $percentualeProvvAgenzia, $ammontareProvvAgenzia) " ; debug (0, $qAmm) ; $db->EseguiQuery($qAmm) ; } else { $qAmm = " update $tAmmontareVariOrdini set AmmontareOrdineSenzaIva = $ammontareOrdineSenzaIva, AmmontareOrdineConIva = $ammontareOrdineConIva, ScontiFineProvvigioni = $sconti, BaseProvvigionale = $baseprov, PercentualeProvvAgente = $percentualeProvvAgente, AmmontareProvvAgente = $ammontareProvvAgente, PercentualeProvvAgenzia = $percentualeProvvAgenzia, AmmontareProvvAgenzia = $ammontareProvvAgenzia where IdOrdine = $idordine " ; debug (0, $qAmm) ; $db->EseguiQuery($qAmm) ; } } else // Operazione di cancellazione -- DA FARE { /************************************************************* * Dall'id dell'ordine recupero l'id del fornitore **************************************************************/ $dbo = new FC_SQL ; $dbpro = new FC_SQL ; $qord = "select * from $tordini where idordini = $id" ; $dbo->query($qord) ; while( $dbo->next_record()) { $fornitore = $dbo->f("IdFornitore") ; debug (0, "ID FORNITORE = $fornitore") ; } /************************************************************* * recupero i dettagli dell'ordine da cancellare *************************************************************/ $qdett = "select * from $tdettagli where idordine = $id" ; debug (0, $qdett) ; $db->query($qdett) ; while ($db->next_record()) { $idprodotto = $db->f("IdProdotto") ; $numcartoni = $db->f("NumCartoni") ; $confezionida = $db->f("ConfezioniDa") ; $totbott = $numcartoni * $confezionida ; debug (0, "IDPRODOTTO = $idprodotto -- NumCartoni = $numcartoni -- ConfezioniDa = $confezionida -- TOT BOTT = $totbott") ; /***************************************************************** * recupero i dati di questo prodotto e decremento la quantità * utilizzata del valore $totbott se il fornitore != sarzi ******************************************************************/ if ($fornitore != $idsarzi) { $qpro = "select qutilizzata from $tprodotti where idprodotti = $idprodotto" ; debug (0, $qpro) ; $ret = $dbpro->query($qpro) ; while ($dbpro->next_record()) $quti = $dbpro->f("qutilizzata") ; $newuti = $quti - $totbott ; $qpro = "update $tprodotti set qutilizzata = $newuti where idprodotti = $idprodotto" ; debug (0, $qpro) ; $ret = $dbpro->query($qpro) ; } } /**************************************************************** * Dopo aver aggiornato i dati relativi alle quantità utilizzate * dei singoli prodotti, posso eliminare i record della tabella * dei dettagli che si riferiscono all'ordine in esame *****************************************************************/ $qeli = "delete from $tdettagli where idordine = $id" ; debug (0, $qeli) ; $db->query($qeli) ; /**************************************************************** * Devo eliminare anche eventuali record nella tabella sconto merce *****************************************************************/ $qeli = "delete from $tscontomerce where idordine = $id" ; debug (0, $qeli) ; $db->query($qeli) ; /******************************************************************* * Elimino dalla tabella $tordini il record che si riferisce * all'ordine in esame ********************************************************************/ $qeli = "delete from $tordini where idordini = $id" ; debug (0, $qeli) ; $db->query($qeli) ; /******************************************************************* * Infine elimino dalla tabella $AmmontareVariOrdini il record che si riferisce * all'ordine in esame ********************************************************************/ $qeli = "delete from $tAmmontareVariOrdini where idordine = $id" ; debug (0, $qeli) ; $db->query($qeli) ; } ?> <? echo TITLE ?>