/******************************************************************
* Questo file viene utilizzato quando si modificano eventualmente
* i prodotti di un ordine
* VERSIONE 3.0 READY
*******************************************************************/
// include ("../common/public.php") ;
require_once("../classi/ClasseOrdini.php") ;
print_r($_GET + $_POST) ; // exit ;
debug (0, "Anno = $anno") ;
$ordine = new Ordine ;
foreach($_POST as $var => $valore) {
debug (0, "Variabile = $var ; vALORE = $valore") ;
if ($var != "ope")
{
$ordine->{$var} = $valore ;
debug (0, "$var --> $valore") ;
}
}
$ret = $ordine->ModificaOrdine_SoloProdotti() ;
if ($ret)
{
?>
}
else
{
?>
}
exit ;
if ($fornitore == $idsarzi)
$confronto = "" ;
else
$confronto = 0 ;
if (isset($prenotazione) and ($prenotazione != ""))
$epoca = "Prenotazione" ;
$sconto1 = NumToSql($sconto1) ;
$sconto2 = NumToSql($sconto2) ;
$sconto3 = NumToSql($sconto3) ;
/***************************************************
* trasformo le date nel formato accettato da
* MySql
****************************************************/
$dataordine = MySqlDate($dataordine) ;
$datarichiesta = MySqlDate($datarichiesta) ;
$dataspedizione = MySqlDate($dataspedizione) ;
$datafattura = MySqlDate($datafattura) ;
$datanc = MySqlDate($datanc) ;
$datana = MySqlDate($datana) ;
/***************************************************
* Recupero l'id dell'agente responsabile dell'ordine.
* Se l'id agente passato = 0 allora vuol dire che
* devo recuperare l'id dell'agente in base al cliente
* selezionato.
****************************************************/
if ($ope != "del" and $idagente == 0)
{
$q = "select idagente from $tclienti where idclienti = $cliente" ;
$db->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 ?>
if ($ret)
{
?>
}
else
{
?>
}
?>