Changeset 220 for trunk/client/modules


Ignore:
Timestamp:
May 30, 2014, 10:50:37 PM (10 years ago)
Author:
roby
Message:

client: proiezione consiglio, seggio al candidato sindaco anche se intacca il premio di maggioranza

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/client/modules/Elezioni/consiglieri.php

    r199 r220  
    2222if (isset($param['numgruppo'])) $numgruppo=intval($param['numgruppo']); else $numgruppo='';
    2323if (isset($param['listecol'])) $listecol=intval($param['listecol']); else $listecol=0;
    24 
    2524
    2625$result = mysql_query("select id_conf,id_fascia from ".$prefix."_ele_cons_comune where id_cons='$id_cons'", $dbi);
     
    210209    if ($gruppo[$listagruppo[$lisvin]]>($validi*$infpremio/100) and $fisso==0)
    211210    {
    212         foreach ($groups as $key=>$val) $gruppo[$key]=$val;
    213         $groups=$gruppo;
    214         $gruppo=array();
    215         $num_cons=$numcons;
     211$seggimag[$lisvin]=number_format($numcons*($gruppo[$listagruppo[$lisvin]]*100/$validi)/100);
     212echo "<br> seggimag:".$seggimag[$lisvin];
     213$num_cons=number_format($numcons-$seggimag[$lisvin]);
     214#       $num_cons=$numcons;
    216215    } else {   
    217216//      $seggimag[$lisvin]=number_format($numcons*2/3);
     
    297296#carica gli array dei quozienti
    298297foreach($gruppi as $y=>$tmp){
     298
    299299        if($flag) $num_quoz= $num_cons<$num_candlst[$y] ? $num_cons:$num_candlst[$y];
    300300        if(!isset($ele[$y][0])) $ele[$y][0]=0;
    301301        for ($x=0;$x<=$num_quoz;$x++){
    302302                $ele[$y][$x]= $tmp/($x+1);
    303                 $quozienti[$y][$x]= $tmp/($x+1);
     303                $quozienti[$y][$x]= $tmp/($x+1); ###echo "<br>[$y][$x]=".$tmp/($x+1);
    304304        }
    305305}
     
    409409 */
    410410
    411 #verificare come gestire la situazione in cui il candidato sindaco supera lo sbarramento e il totale delle liste no.
    412411if (!isset($_SESSION['ballo1'])) $_SESSION['ballo1']='';
    413412if (!isset($_SESSION['ballo2'])) $_SESSION['ballo2']='';
    414413$gruppoperd= ($gruppo==$_SESSION['ballo1']) ? $_SESSION['ballo2'] : $_SESSION['ballo1'];
    415414
     415#per voti validi non si intendono i voti validi alle liste ma i voti validi espressi
    416416#$res_val = mysql_query("SELECT sum(validi_lista) from ".$prefix."_ele_sezioni where id_cons='$id_cons'",$dbi);
    417417$res_val = mysql_query("SELECT sum(voti) from ".$prefix."_ele_voti_gruppo where id_cons='$id_cons'",$dbi);
     
    433433    $lists[$num_lista]=$voti;
    434434    $groups[($num_gruppo)]+=$voti;
    435   }//else $validi-=$voti; //maggio 2011: verificare questa sottrazione, non mi convince
    436 }   
     435  }
     436}   
     437###################
     438        $elencog=array();
     439        $sindseggiopre=array();
     440        foreach($groups as $testk=>$valk) if($testk!=$gruppo) {$elencog[$testk]=$valk;}
     441        $testseggio=calcoloseggi($elencog,floor($numcons*(100-$suppremio)/100),0);
     442        foreach($testseggio as $testk=>$valk) if($valk) {$sindseggiopre[]=$testk;}
     443#foreach ($gruppomin as $key=>$val) {if (($numcons*60/100)<$val) $nopremio=0;if($key!=$gruppo){echo "<br>gruppomin: $key -- $val";}}
     444##################
    437445$descrsind=$desgruppi[$gruppo];
    438446foreach ($groups as $key=>$val){
     
    463471                 $groups[$gruppo]+=$lists[$lst];
    464472        }
    465  ////maggio 2011: da qui       
     473 ////maggio 2011: da qui   
     474 
     475#controlla se la percentuale del gruppo vincente e' tra il 40 e il 60% o il sindaco e' eletto al secondo turno
     476#e se nessun altro gruppo ha superato il 50% assegna il premio di maggioranza
     477#e se nessun altro gruppo ha superato il 50% e nessuno ha ottenuto piu' del 60% dei seggi, assegna il premio di maggioranza
    466478$consmin=$numcons;
    467479$gruppomin=calcoloseggi($groups,$consmin,0);
    468480$nopremio=1;
    469 foreach ($gruppomin as $key=>$val) {if (($numcons*60/100)<$val) $nopremio=0;}
    470481#die("qui:".($numcons*60/100)."<$val");
    471482if (($groups[$gruppo]>=(($validi*$supminpremio)/100) or ! $primoturno) and $groups[$gruppo]<(($validi*$suppremio)/100) and !$premio and $nopremio) $premio=1;
     
    473484        $consel=array();
    474485        $consel[]=array(_LISTA,_VOTI,_SEGGI,_CANDIDATO,_CIFRAELE,_QUOZIENTI);
    475 
     486$groupsappo=$groups;
    476487$candidati=array();
    477488//maggio 2011: a qui viene spostato in modo da aggiungere i voti di lista delle collegate per il perdente solo dopo aver controllato se supera il 50%, in questo modo si evita che il collegamento tra perdenti faccia decadere il premio di maggioranza se solo insieme superano il 50%
     
    479490if(!isset($groups[$gruppoperd])) $groups[$gruppoperd]=0;
    480491    foreach ($collperd as $lst)
    481         if (isset($lists[$lst])){
     492        if (isset($lists[$lst])){ 
    482493                $oldlstgrp[$lst]=$listagruppo[$lst];
    483494                 $listagruppo[$lst]=$gruppoperd;
     
    489500////maggio 2011: a qui (mettendolo dopo Ú come se l'avessi tolto ma possono esserci altre implicazioni visto che si modificano le percentuali del gruppo, così per ora non lo tolgo) va tolto se non vanno sommati i voti delle liste collegate al secondo turno con quelli del gruppo che perde il ballottaggio, se non si collegano viene favorita l'elezione del candidato sindaco con cui era collegata al primo turno mentre se si collegano viene favorito il principio di aggregazione. Per ora i perdenti sono considerati con la situazione al primo turno. Implementiamo cosᅵ: il 50% deve essere superato dalla minoranza nel primo turno, quindo senza somma dei voti delle liste aggiunte nel secondo turno - la suddivisione dei seggi viene fatta considerando i collegamenti al secondo turno, le liste collegate partecipano alla suddivisione dei seggi con questo gruppo quindi si confronta con le liste del gruppo in cui era al primo turno e valutando i coefficienti si stabilisce quale lista cede il seggio al candidato sindaco non acceduto al ballottaggio.
    490501
    491 #controlla se la percentuale del gruppo vincente e' tra il 40 e il 60% o il sindaco e' eletto al secondo turno
    492 #e se nessun altro gruppo ha superato il 50% assegna il premio di maggioranza
    493 #e se nessun altro gruppo ha superato il 50% e nessuno ha ottenuto piu' del 60% dei seggi, assegna il premio di maggioranza
    494 
    495 
    496 if ($premio) {
     502if ($premio) {
     503#########
     504################### nell'array sindseggio vengono inseriti i candidati sindaco che restano senza seggio per gli apparentamenti
     505        $elencog=array();
     506        $testseggio=array();
     507        $sindseggio=array();
     508        foreach($groups as $testk=>$valk) if($testk!=$gruppo) {$elencog[$testk]=$valk;}
     509        $testseggio=calcoloseggi($elencog,floor($numcons*(100-$suppremio)/100),0);
     510        foreach($sindseggiopre as $testk=>$valk) {if(!$testseggio[$valk]) $sindseggio[$valk]=$valk;}
     511###########
    497512    $sindaco[$gruppo]=$groups[$gruppo]; $groups[$gruppo]=0;
    498513    $gruppomag=calcoloseggi($sindaco,ceil($numcons*$suppremio/100),0);
     
    518533                $z++;
    519534        }
    520 #foreach ($groups as $key=>$val)echo "           key: $key : val : $val<br/>";
    521535        $seggimag=array();
     536        $x=0;
     537#####25 maggio 2014 - il candidato sindaco non eletto ha diritto al seggio anche se di maggioranza
     538### individua ultimi seggi assegnati a liste collegate
     539        $listdec =array();
     540        $seggitmp=calcoloseggi($listemag,$val,1);
     541        foreach ($seggitmp as $keyl=>$vall){ #echo "<br>sindseggio: $key - $val";
     542#       foreach ($sindseggio as $key=>$val){
     543                if (in_array($keyl,$collegate) and ! isset($tempo[$keyl])) $tempo[$keyl]=number_format($quozienti[$keyl][$vall-1],2);
     544#               echo "<br>lista:$key";
     545                $res = mysql_query("SELECT id_gruppo from ".$prefix."_ele_lista where num_lista='$keyl' and id_cons='$id_cons'",$dbi);
     546                list($tempig)=mysql_fetch_row($res);
     547                $res = mysql_query("SELECT num_gruppo from ".$prefix."_ele_gruppo where id_gruppo='$tempig' and id_cons='$id_cons'",$dbi);
     548                list($tempng)=mysql_fetch_row($res);
     549                if (in_array($tempng,$sindseggio)) $listdec[]=$keyl;
     550}
     551
     552                /*              while(){
     553                        if(isset($tempo[$tempnl])) echo "<br> tempnl: $tempnl -- key:$key".$tempo[$key];
     554                }
     555*/
     556##########
    522557        $seggimag=calcoloseggi($listemag,$val,1);
    523         $x=0;
     558
    524559        foreach ($seggimag as $key=>$val){
    525                 for ($z=0;$z<$val;$z++){
     560        ## condizione per esclusione di un seggio da destinare al sindaco non eletto
     561                if(in_array($key,$listdec)) $val--;
     562        ## fine condizione - impostare variabile in db per differenziare il comportamento per consultazioni diverse
     563                for ($z=0;$z<$val;$z++){
    526564                        if ($z) $consel[]=array("","","",$arvin[$key][($z+1)],$cifra[$key][($z+1)],number_format($quozienti[$key][$z],2));
    527565                        else
     
    539577if ($premio) $consmin=floor($numcons*(100-$suppremio)/100);
    540578else $consmin=$numcons;
    541 #foreach($groups as $keyb=>$valb) echo "keyb:$keyb -- valb:$valb<br/>";
    542579
    543580#####calcolo per la minoranza o in caso non ci sia premio di maggioranza   
     
    579616        echo "$mex";
    580617        $ultimo='';
     618
    581619        $seggimin=calcoloseggi($listemin,$val,1);
    582620        echo "$mex";#foreach ($seggimin as $lista=>$valc) echo $seggimin[$lista]." key:$lista -val:$valc<br/>";
    583621        if(!$premio and $key==$gruppo)
    584                 foreach ($seggimin as $lista=>$valc) $arper[$lista]=$arvin[$lista];
     622                foreach ($seggimin as $lista=>$valc){
     623 $arper[$lista]=$arvin[$lista];
     624}
    585625/*              for ($z=0;$z<$valc;$z++){
    586626                        if ($z) $consel[]=array("","","",$arvin[$lista][($z+1)],$cifra[$lista][($z+1)],$quozienti[$lista][$z]);
     
    594634        if ($val and $key!=$gruppo and $consin) {$conselsin[]=array("$CSEC",$desgruppi[$key]); $arcansin[]=$desgruppi[$key];}
    595635foreach ($seggimin as $lista=>$val)
    596         if(isset($oldlstgrp[$lista]) and !isset($oldseggi[$lista])) {$oldseggi[$lista]=$val;}
     636        if(isset($oldlstgrp[$lista]) and !isset($oldseggi[$lista])) {$oldseggi[$lista]=$val;
     637}
    597638                if($val==0){
    598639                if($ultimo==''){
    599640                        foreach($oldlists as $lst=>$vot)
    600                         {               
     641                        {
     642if (!isset($quozienti[$lst][($val)])) $quozienti[$lst][($val)]=$vot;
    601643                                if ($oldlstgrp[$lst]!= $key or !isset($oldseggi[$lst]) or $oldseggi[$lst]==0) continue;
    602                                 if($ultimo=='') $ultimo=$lst;   
    603                                 if($quozienti[$ultimo][($val-1)]==$last[$lst])
     644                                if($ultimo=='') $ultimo=$lst;
     645                                if($quozienti[$ultimo][($val)]==$last[$lst])
    604646                                {
    605647                                                if($lists[$ultimo]==$lists[$lst]) $mex="Per attribuire l'ultimo seggio ï¿œ necessario un sorteggio tra la lista n. $ultimo e la lista n. $lst";
    606648                                                elseif($lists[$ultimo]>$lists[$lst]) {$ultimo=$lst;$mex="";}
    607649                                }
    608                                 if ($quozienti[$lista][($val-1)]> $last[$lst]) {$ultimo=$lst;$mex="";}
     650                                if ($quozienti[$ultimo][($val)]> $last[$lst]) {$ultimo=$lst;$mex="";}
    609651                        }$lst=$ultimo;
    610652                if($ultimo and $consin){
     
    619661        }
    620662#if($key!=$gruppo){
     663###############
     664#foreach($collegate
     665        foreach ($seggimin as $lista=>$val){
     666                if($ultimo==$lista and $key!=$gruppo and $consin) $val--;
     667        }
     668################
    621669        foreach ($seggimin as $lista=>$val){
    622670                if($ultimo==$lista and $key!=$gruppo and $consin) $val--;
     
    630678                        $conselb[]=array($arper[$lista][0],$percliste[$lista],$val,$arper[$lista][($z+1)],$cifra[$lista][($z+1)],number_format($quozienti[$lista][$z],2));
    631679                        $ttl[$lista]=(count($conselb)-1);
     680########
     681#               echo "<br>".$tt[$lista]." arper --- $gruppo --$ultimo--$key--".$arper[$lista][0];
    632682                        }
    633683                }
    634684        if (isset($oldlists[$lista]))
    635         {
     685        { 
    636686                $tt[$lista]=(count($conselb)-1);
    637687                if($z) $last[$lista]=$quozienti[$lista][($z-1)]; else $last[$lista]=0;
     
    674724                }
    675725        }
     726#### condizione di aggiunta candidato sindaco non eletto in elenco consiglieri 
     727        foreach($sindseggio as $key=>$val)      if ($consin) {$conselsin[]=array("$CSEC",$desgruppi[$key]); $arcansin[]=$desgruppi[$key];}
     728####
     729
    676730       
    677731        if (isset($conselsin)) foreach($conselsin as $key=>$val)
     
    689743                $consel[]=array($val[0],$val[1],$val[2],$val[3],$val[4],$val[5]);
    690744        }
     745       
    691746//      plotgraf($descrsind,$arlisdesv,$arlissegv,$arlisdesp,$arlissegp,$arcansin); // per grafico
    692747        stampalista($consel);
Note: See TracChangeset for help on using the changeset viewer.