RecuperaDati($qAVO) ; // print_r($d['AmmontareOrdineConIva']) ; for ($i=0; $i<$nAVO; $i++) { $arrTest[$dAVO['IdOrdine'][$i]]['AVO'] = $dAVO['AmmontareOrdineConIva'][$i] ; } // print_r($arrTest) ; // exit ; $qDett = " select D.IdOrdine as OrdineId, D.*, P.PrezzoUnitario, (D.NumCartoni * D.ConfezioniDa * P.PrezzoUnitario) as ImpParz, D.ScontoPrd, I.Aliquota from dettagli D inner join prodotti P on P.idprodotti = D.idprodotto inner join iva I on I.idIva = P.IdIvaPrd where D.Anno = 2022 order by IdOrdine " ; list($n, $d) = $db->RecuperaDati($qDett) ; // print_r($d) ; exit ; for ($i=0; $i<$n; $i++) { if ($d['PrezzoForzato'][$i] > 0) $impParz = $d['NumCartoni'][$i] * $d['ConfezioniDa'][$i] * $d['PrezzoForzato'][$i] ; else $impParz = $d['NumCartoni'][$i] * $d['ConfezioniDa'][$i] * $d['PrezzoUnitario'][$i] ; // $impParz = $d['ImpParz'][$i] ; if ($d['ScontoPrd'][$i] != "") $impParz = CalcolaScontoProdotto($impParz, $d['ScontoPrd'][$i]) ; // Prima: $impIva = ($impParz * $d["Aliquota"][$i] / 100) ; $impIva = ($impParz * $d["Iva"][$i] / 100) ; $arrTest[$d['IdOrdine'][$i]]['SenzaIva'] += $impParz ; $arrTest[$d['IdOrdine'][$i]]['ConIva'] += $impParz + $impIva ; $arrImpOrdini[$d['IdOrdine'][$i]]['SenzaIva'] += $impParz ; $arrImpOrdini[$d['IdOrdine'][$i]]['ConIva'] += $impParz + $impIva ; } print_r($arrTest) ; exit ; */ /*** * per prima cosa alimino tutti i record dalla tabella AmmontareVariOrdini ***/ $qdel = " delete from AmmontareVariOrdini where Anno = $anno" ; debug (1, $qdel) ; $db->EseguiQuery($qdel) ; /*** * creo l'array che contiene l'ammontare totale di ogni singolo ordine considerando lo sconto prodotto. ***/ $arrImpOrdini = CreaArrayAmmontareOrdini() ; // in public.php $arrVal = array() ; $q = " select O.*, F.Provvigione as PercentualeAgenzia, case when (O.ImportoNC > 0) then (O.ImportoNC / 1.2) else 0 end as valNC, case when (AFP.percentuale <> 0) then AFP.percentuale else A.percentuale end as Percentuale from ordini O inner join agenti A on A.idagenti = O.idagente inner join fornitori F on F.idfornitori = O.idfornitore left join ageforper AFP on AFP.idagente = A.idagenti and AFP.idfornitore = O.idfornitore and AFP.Anno = $anno where O.Anno = $anno order by O.idordini " ; debug (0, $q) ; list($n, $d) = $db->RecuperaDati($q) ; for ($i=0; $i<$n; $i++) { $idOrdine = $d['IdOrdini'][$i] ; $importo = $arrImpOrdini[$idOrdine]['SenzaIva'] ; $importoConIva = $arrImpOrdini[$idOrdine]['ConIva'] ; $sconto1 = ($importo * $d['Sconto1'][$i] / 100) ; $sconto1ConIva = ($importoConIva * $d['Sconto1'][$i] / 100) ; $subtotp1 = $importo - $sconto1 ; $subtotp1ConIva = $importoConIva - $sconto1ConIva ; $sconto2 = ($subtotp1 * $d['Sconto2'][$i] / 100) ; $sconto2ConIva = ($subtotp1ConIva * $d['Sconto2'][$i] / 100) ; $subtotp2 = $subtotp1 - $sconto2 ; $subtotp2ConIva = $subtotp1ConIva - $sconto2ConIva ; $sconto3 = ($subtotp2 * $d['Sconto3'][$i] / 100) ; $sconto3ConIva = ($subtotp2ConIva * $d['Sconto3'][$i] / 100) ; $subtotp3 = $subtotp2 - $sconto3 ; $subtotp3ConIva = $subtotp2ConIva - $sconto3ConIva ; $sconti = $sconto1 + $sconto2 ; $scontiConIva = $sconto1ConIva + $sconto2ConIva + $sconto3ConIva; $ammontareSenzaIva = $subtotp3 - $d['valNC'][$i]; $ammontareConIva = $importoConIva - $scontiConIva - $d['valNC'][$i] ; $baseprov = $importo - $sconti - $d['valNC'][$i] ; $percentuale = $d['Percentuale'][$i] ; $ammprov = ($baseprov * $percentuale / 100 ) ; $perProvvAgenzia = $d['PercentualeAgenzia'][$i] ; $ammProvAgenzia = ($baseprov * $perProvvAgenzia / 100 ) ; $arrVal[$idOrdine] = array('AmmontareOrdineSenzaIva' => $ammontareSenzaIva, 'AmmontareOrdineConIva' => $ammontareConIva, 'ScontiFineProvv' => $sconti, 'BaseProvv' => $baseprov, 'percentualeProvAgente' => $percentuale, 'AmmontareProvvAgente' => $ammprov, 'percentualeProvAgenzia' => $perProvvAgenzia, 'AmmontareProvvAgenzia' => $ammProvAgenzia) ; } /*** * A questo punto aggiorno la tabella AmmontareVariOrdine ***/ @reset($arrVal) ; foreach($arrVal as $idordine => $arrSingOrdine) { $v1 = $arrSingOrdine['AmmontareOrdineSenzaIva'] ; $v2 = $arrSingOrdine['AmmontareOrdineConIva'] ; $v3 = $arrSingOrdine['ScontiFineProvv'] ; $v4 = $arrSingOrdine['BaseProvv'] ; $v5 = $arrSingOrdine['percentualeProvAgente'] ; $v6 = $arrSingOrdine['AmmontareProvvAgente'] ; $v7 = $arrSingOrdine['percentualeProvAgenzia'] ; $v8 = $arrSingOrdine['AmmontareProvvAgenzia'] ; if ($v4 <= 0) $v6 = $v8 = 0 ; if ($v1 > 0) { $query = " insert into AmmontareVariOrdini (Anno, idordine, AmmontareOrdineSenzaIva, AmmontareOrdineConIva, ScontiFineProvvigioni, BaseProvvigionale, PercentualeProvvAgente, AmmontareProvvAgente, PercentualeProvvAgenzia, AmmontareProvvAgenzia) values ($anno, $idordine, $v1, $v2, $v3, $v4, $v5, $v6, $v7, $v8) " ; debug (0, $query) ; $db->EseguiQuery($query) ; } } ?> New Document



Tabella AmmontareVariOrdini ricreata con successo.
Per continuare scegli una voce di menu nella parte alta della finestra