$valore) { debug (0, "Variabile = $var ; vALORE = $valore") ; if ($var != "ope") { $ordine->{$var} = $valore ; debug (0, "$var --> $valore") ; } } $ret = $ordine->ModificaOrdine_SoloProdotti() ; if ($ret) { ?> query($q) ; while ($db->next_record()) $idagente = $db->f("idagente") ; } /******************************************************* * 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") { $submit = "document.forms.fine_nuovo_ordine.submit() ;" ; $arrIdProdotti = explode(",", $strIdProdotti) ; $arrPrzForzato = explode("£", $strPrzForzato) ; $arrNumCart = explode(",", $strNumCart) ; $arrConfDa = explode(",", $strConfDa) ; $arrScontoPrd = explode(",", $strScontoPrd) ; $arrScontoMerce = explode(",", $strScontoMerce) ; /******************************************************* * Devo recuperare i dati passati: ********************************************************/ /*************************************************** * Prima di inserire l'ordine devo recuperare l'ID * da assegnare a questa inserzione ****************************************************/ $qmax = "select max(IdOrdini) as MAX from $tordini" ; $db->query($qmax) ; while ($db->next_record()) $idordine = $max = $db->f("MAX") + 1 ; /****************************************************** * Inserisco i dati dell'ordine ******************************************************/ $qordini = " insert into $tordini (IdCliente, IdAgente, IdFornitore, DataOrdine, DataRichiesta, DataSpedizione, IdPagamento, NoteOrdini, Sconto1, Sconto2, Sconto3, EpocaDiConsegna, DaInviare) VALUES ('$cliente', '$idagente', '$fornitore', '$dataordine', '$datarichiesta', '$dataspedizione', '$pagamento', '$note', '$sconto1', '$sconto2', '$sconto3', '$epoca', 1)" ; $ret = $db->query($qordini) ; /***************************************************** * Inserisco i dati relativo al dettaglio dell'ordine *****************************************************/ 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 ($max, '$codprod', '$przForzato', $cart, $conf, '$scontoprd') " ; $ret = $db->query($qdett) ; /*** * al fine di memorizzare il record in AmmontareVariOrdini devo effettuare le seguenti operazioni ***/ if ($fornitore == $idsarzi) { $tprodotti = $tsarzi ; $codprod = substr($codprod, 2, strlen($codprod) - 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) ; $impIva = ($tt * $d["Aliquota"][0] / 100) ; $ammontareOrdineSenzaIva += $tt ; $ammontareOrdineConIva += $tt + $impIva ; } } /************************************************************ * Aggiorno la tabella dei prodotti incrementando la quantita * utilizzata per questo prodotto se non si tratta di SARZI **************************************************************/ if ($fornitore != $idsarzi) { $ret = $db->query("select qutilizzata from $tprodotti where idprodotti = $codprod") ; while ($db->next_record()) $quti = $db->f("qutilizzata") ; $newuti = $quti + ($cart * $conf) ; $ret = $db->query("update $tprodotti set qutilizzata = $newuti where idprodotti = $codprod") ; } } } /*** * inserisco il record nella tabella AmmontareVariOrdini * NOTE: in fase di inserimento di un ordine non si può inserire la nota di credito ***/ /*** * per i valori senza IVA ***/ $scn1 = ($ammontareOrdineSenzaIva * $sconto1 / 100) ; $subtotp1 = $ammontareOrdineSenzaIva - $scn1 ; $scn2 = ($subtotp1 * $sconto2 / 100) ; $subtotp2 = $subtotp1 - $scn2 ; $sconti = $scn1 + $scn2 ; $baseprov = $ammontareOrdineSenzaIva - $sconti ; $scn3 = ($subtotp2 * $sconto3 / 100) ; $ammontareOrdineSenzaIva = $subtotp2 - $scn3 ; /*** * 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 inserita 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 ***/ $qAmm = " insert into $tAmmontareVariOrdini (IdOrdine, AmmontareOrdineSenzaIva, AmmontareOrdineConIva, ScontiFineProvvigioni, BaseProvvigionale, PercentualeProvvAgente, AmmontareProvvAgente, PercentualeProvvAgenzia, AmmontareProvvAgenzia) values ($max, $ammontareOrdineSenzaIva, $ammontareOrdineConIva, $sconti, $baseprov, $percentualeProvvAgente, $ammontareProvvAgente, $percentualeProvvAgenzia, $ammontareProvvAgenzia) " ; $db->EseguiQuery($qAmm) ; } elseif ($ope == "mod") { /****************************************************************************** * FASE DI TEST: per ora si settano qui i seguenti valori: ******************************************************************************/ $tdettagli = "dettagli" ; $tscontomerce = "scontomerce" ; $tprodotti = "prodotti" ; $tiva = "iva" ; $tagenti = "agenti" ; $tageforper = "ageforper" ; $tfornitori = "fornitori" ; $tAmmontareVariOrdini = "AmmontareVariOrdini" ; /*** * In questa fase si modificano solo i prodotti in quanto i dati dell'ordine sono stati evetualmente modificati * da un'altra parte ***/ $submit = "document.forms.dettagli_prodotti.submit() ;" ; $arrIdProdotti = explode(",", $strIdProdotti) ; $arrDescProdotti = explode("!", $strDescProdotti) ; $arrPrzForzato = explode("^", $strPrzForzato) ; $arrNumCart = explode(",", $strNumCart) ; $arrConfDa = explode(",", $strConfDa) ; $arrScontoPrd = explode(",", $strScontoPrd) ; $arrIva = explode(",", $strIva) ; $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 D, $tprodotti P where D.anno = $anno and D.idordine = $idordine and P.idprodotti = D.idprodotto" ; debug (0, $qdett) ; $ret = $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" ; debug (0, $qmod) ; $dbt->query($qmod) ; } $qscme = "select * from $tscontomerce SM, $tprodotti P where SM.anno = $anno and SM.idordine = $idordine and P.idprodotti = SM.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" ; debug (0, $qmod) ; $ret = $dbt->query($qmod) ; } } $qdel = "delete from $tdettagli where anno = $anno and idordine = $idordine" ; debug (0, $qdel) ; $ret = $db->query($qdel) ; $qdelscme = "delete from $tscontomerce where anno = $anno and idordine = $idordine" ; debug (0, $qdelscme) ; $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 (Anno, IdOrdine, IdProdotto, DescDettaglio, PrezzoForzato, NumCartoni, ConfezioniDa, ScontoPrd, Iva) VALUES ($anno, $idordine, '$codprod', '$desc', '$przForzato', $cart, $conf, '$scontoprd', $iva)" ; debug (0, $qdett) ; $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, strlen($codprod) - 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]) ; debug (0, "tt = $tt") ; if ($scontoprd != "") $tt = CalcolaScontoProdotto($tt, $scontoprd) ; // Prima: $impIva = ($tt * $d["Aliquota"][0] / 100) ; $impIva = ($tt * $iva / 100) ; $ammontareOrdineSenzaIva += $tt ; $ammontareOrdineConIva += $tt + $impIva ; debug (0, "ammontareOrdineSenzaIva = $tt") ; } } /************************************************************ * 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" ; debug (0, $qupd) ; $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) ; $subtotp2 = $subtotp1 - $scn2 ; $sconti = $scn1 + $scn2 ; $baseprov = $ammontareOrdineSenzaIva - $sconti ; $scn3 = ($subtotp2 * $sconto3 / 100) ; $ammontareOrdineSenzaIva = $subtotp2 - $scn3 ; debug (0, "$ammontareOrdineSenzaIva ; $ammontareOrdineConIva ; $sconto3 ; $subtotp3" ) ; /*** * 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 " ; debug (0, $qper) ; 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 ***/ $qAmm = " update $tAmmontareVariOrdini set AmmontareOrdineSenzaIva = $ammontareOrdineSenzaIva, AmmontareOrdineConIva = $ammontareOrdineConIva, ScontiFineProvvigioni = $sconti, BaseProvvigionale = $baseprov, PercentualeProvvAgente = $percentualeProvvAgente, AmmontareProvvAgente = $ammontareProvvAgente, PercentualeProvvAgenzia = $percentualeProvvAgenzia, AmmontareProvvAgenzia = $ammontareProvvAgenzia where Anno = $anno and 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 ?>