<?php

Yii::createComponent('application.extensions.ezpdf.cezpdf');

$f1=$_GET['fecha1'];
$f2=$_GET['fecha2'];
$c1=$_GET['c1'];
$c2=$_GET['c2'];
$hd=$_GET['hd'];
$tipo=$_GET['tipo'];

if ($f1 == null || $f2 == null):
    echo "<script>alert('Debe seleccionar un rango de fechas!!!');</script>";
    die();
    
endif;

if($c1 == null || $c2 == null):
    echo "<script>alert('Debe seleccionar un rango de Cuentas Contables!!!');</script>";
    die();
    
endif;

$cuenta1 = CuentasConsolidada::model()->findByPk($c1)->cuenta;
$cuenta2 = CuentasConsolidada::model()->findByPk($c2)->cuenta;

?>

            <?php

            function detalle_cuenta($p_cuenta,$p_fechaDesde, $p_fechaHasta){

                $query= MayorAnaliticoDetalle::model()->findAll("cuenta='$p_cuenta' and fecha_comprobante < '$p_fechaDesde'");
                $cuenta=count($query);
                
                $fechaanterior = strtotime ( '-1 day' , strtotime ( $p_fechaDesde ) ) ;
                $fechaanterior = date ( 'd-m-Y' , $fechaanterior );
                
                if ($cuenta>0){
                //echo $fechaanterior;
//                $criteria = new CDbCriteria;
//                $criteria->condition = "cuenta= '$p_cuenta' AND fecha BETWEEN '$p_fechaDesde' AND '$p_fechaHasta' order by cuenta,fecha asc";
                $model_detalle = MayorAnaliticoDetalle::model()->findAllBysql(
                        " SELECT 
                            '$fechaanterior' as fecha,
                            '' as nro_comprobante,
                            'saldo al inicio' as descripcion,
                            case when (sum(monto_debe-monto_haber) > 0) then 
                             sum(monto_debe) - sum(monto_haber) 
                             else 
                             0
                             end as monto_debe,
                            case when (sum(monto_debe-monto_haber) < 0) then 
                             sum(monto_haber) - sum(monto_debe) 
                             else 
                             0
                             end as monto_haber,
                             null as fecha_creado,
                             id_cuenta,
                            cuenta,
                             denom_cuenta,
                             id,
                             activo,
                             blnborrado,
                             estatus_contab,
                             null as referencia,
                             null as id_d,
                             '$fechaanterior' as fecha_comprobante
                             FROM contable.vsw_mayor_analitico_detalle  
                            WHERE cuenta= '$p_cuenta' AND fecha_comprobante < '$p_fechaDesde' 
                            group by  id_cuenta,cuenta, denom_cuenta, id, activo, blnborrado, estatus_contab
                            union
                            SELECT * FROM contable.vsw_mayor_analitico_detalle 
                            WHERE cuenta= '$p_cuenta' AND fecha_comprobante between  '$p_fechaDesde' and '$p_fechaHasta' order by cuenta,fecha_comprobante asc,fecha asc "
                        
                        
                        );
                    
                } else {
                    
//                $criteria = new CDbCriteria;
//                $criteria->condition = "cuenta= '$p_cuenta' AND fecha BETWEEN '$p_fechaDesde' AND '$p_fechaHasta' order by cuenta,fecha asc";
                $model_detalle = MayorAnaliticoDetalle::model()->findAllBySql(
                        "SELECT 
                            '$fechaanterior' as fecha,
                            '' as nro_comprobante,
                            'saldo al inicio' as descripcion,
                            0 as monto_debe,
                            0 as monto_haber,
                             null as fecha_creado,
                             id_cuenta,
                             cuenta,
                             denom_cuenta,
                             id,
                             activo,
                             blnborrado,
                             estatus_contab,
                             null as referencia,
                             null as id_d,
                             null as fecha_comprobante
                             FROM contable.vsw_mayor_analitico_detalle 
                            where cuenta= '$p_cuenta' 
                            union
                            SELECT * FROM contable.vsw_mayor_analitico_detalle 
                            WHERE cuenta= '$p_cuenta' AND fecha_comprobante between  '$p_fechaDesde' and '$p_fechaHasta' order by cuenta,fecha asc "
                        
                        );
                    
                }
                
//                $cuenta=mayorana'SELECT count (*) FROM "contable"."vsw_mayor_analitico_detalle" "t" WHERE cuenta= '113010100' AND fecha < '01-04-2016'';
                
                $i=0;
                $saldoinicial=0;
                $acum_debe=0;
                $acum_haber=0;
                $acum_saldo=0;
                $array_detalle = array();
                if (count($model_detalle)==0){
                }else {
 
                foreach ($model_detalle as $detalle):
                    if ($detalle === reset($model_detalle)) {
                        $array_detalle[$i]['nro']= $i+1;
                        $array_detalle[$i]['fecha_comprobante']= '';
                        $array_detalle[$i]['fecha']= '';
                        $array_detalle[$i]['nro_comprobante']= $detalle->nro_comprobante;
                        $array_detalle[$i]['descripcion']=  utf8_decode(ucfirst(strtolower($detalle->descripcion)));
                        $array_detalle[$i]['monto_debe']= ($detalle->monto_debe!='0')?'':'';
                        $array_detalle[$i]['monto_haber']= ($detalle->monto_haber!='0')?'':'';
                        $array_detalle[$i]['monto_saldo']= (($detalle->monto_debe-$detalle->monto_haber)>=0)?'<b>'.number_format( ($saldoinicial+$detalle->monto_debe - $detalle->monto_haber) ,2,',','.').'</b>':"(".number_format( ($detalle->monto_debe - $detalle->monto_haber)*-1,2,',','.').")</b>";
                        $array_detalle[$i]['fecha_creado']= $detalle->fecha_creado;
                        $array_detalle[$i]['id_cuenta']= $detalle->id_cuenta;
                        $array_detalle[$i]['cuenta']= $detalle->cuenta;
                        $array_detalle[$i]['denom_cuenta']= utf8_decode($detalle->denom_cuenta);
                        $array_detalle[$i]['referencia']= strtolower(substr(utf8_decode($detalle->referencia), 0, 10));
                    }else {
                        $array_detalle[$i]['nro']= $i+1;
                        $array_detalle[$i]['fecha_comprobante']= date('d-m-Y',strtotime($detalle->fecha_comprobante));
                        $array_detalle[$i]['fecha']= date('d-m-Y',strtotime($detalle->fecha));
                        $array_detalle[$i]['nro_comprobante']= $detalle->nro_comprobante;
                        $array_detalle[$i]['descripcion']=  utf8_decode(ucfirst(mb_strtolower($detalle->descripcion, 'UTF-8')));
//                        $array_detalle[$i]['descripcion']=  ucfirst(strtolower(utf8_decode($detalle->descripcion)));
                        $array_detalle[$i]['monto_debe']= ($detalle->monto_debe!='0')?number_format($detalle->monto_debe,2,',','.'):'';
                        $array_detalle[$i]['monto_haber']= ($detalle->monto_haber!='0')?number_format($detalle->monto_haber,2,',','.'):'';
                        $array_detalle[$i]['monto_saldo']= (($acum_saldo+$detalle->monto_debe-$detalle->monto_haber)>0)?number_format( ($acum_saldo+$detalle->monto_debe - $detalle->monto_haber) ,2,',','.'):"(".number_format( ($acum_saldo+$detalle->monto_debe - $detalle->monto_haber)*-1,2,',','.').")";
                        $array_detalle[$i]['fecha_creado']= $detalle->fecha_creado;
                        $array_detalle[$i]['id_cuenta']= $detalle->id_cuenta;
                        $array_detalle[$i]['cuenta']= $detalle->cuenta;
                        $array_detalle[$i]['denom_cuenta']= utf8_decode($detalle->denom_cuenta);
                        $array_detalle[$i]['referencia']= strtolower(substr(utf8_decode($detalle->referencia), 0, 10));
                    }
                        $i++;
                        $acum_debe += $detalle->monto_debe;
                        $acum_haber += $detalle->monto_haber;
                        $acum_saldo += ($detalle->monto_debe-$detalle->monto_haber);
                     
                       
                endforeach;
                
                //Pasamos por el arreglo los montos acumulados de la partida
                $array_totales[0]['denom'] = 'TOTAL CUENTA '.$detalle->cuenta.'';
                $array_totales[0]['acum_debe'] = ($model_detalle[0]->monto_debe >0)?'<b>'.number_format($acum_debe-$model_detalle[0]->monto_debe,2,',','.').'</b>':'<b>'.number_format($acum_debe,2,',','.').'</b>';
                $array_totales[0]['acum_haber'] = ($model_detalle[0]->monto_haber >0)?'<b>'.number_format($acum_haber-$model_detalle[0]->monto_haber,2,',','.').'</b>':'<b>'.number_format($acum_haber,2,',','.').'</b>';
                $array_totales[0]['acum_saldo'] = (($acum_debe-$acum_haber)>0) ? '<b>'.number_format($acum_saldo,2,',','.').'</b>' : "<b>(".number_format(($acum_saldo)*-1,2,',','.').")</b>";

                $data = array(); //armamos un arreglo donde vamos a devolver la informacion de la tabla
                $data['detalle'] = $array_detalle;
                $data['totales'] = $array_totales;

                return $data;
            }

            }

            ?>
            <?php
            $ls_nombre_empresa = '<b>'.Empresa::Nombre().'</b>';
            $ls_rif = "<b>".Empresa::Rif()."</b>";
            $ls_sector_registro = "<b>SECTOR: ".Empresa::Sector()."      NÚMERO DE REGISTRO: ".Empresa::RegistroSUDECA()."</b>";
            $ls_titulo = "<b>MAYOR ANALITICO DESDE ".$f1." HASTA ".$f2." </b>";
            $ls_coletilla = "<b><i>(EXPRESADO EN Bs.)</i></b>";
            $pdf = new Cezpdf();
            $pdf->selectFont('./fonts/Helvetica.afm');

            $pdf->ezSetCmMargins(3,1.5,1,1);

            //Encabezado//////////////////////////////////////////////////////////
            $all = $pdf->openObject();
            $pdf->saveState();

            $li_tm=$pdf->getTextWidth(8,$ls_nombre_empresa);
            $tm=306-($li_tm/2);
            
            $li_tm=$pdf->getTextWidth(12,$ls_rif);
            $tm1=306-($li_tm/2);

            $li_tm=$pdf->getTextWidth(8,$ls_sector_registro);
            $tm2=306-($li_tm/2);

            $li_tm=$pdf->getTextWidth(8,$ls_titulo);
            $tm3=306-($li_tm/2);

            $li_tm=$pdf->getTextWidth(8,$ls_coletilla);
            $tm4=306-($li_tm/2);

            $pdf->addText($tm, 810, 7, utf8_decode($ls_nombre_empresa));
            $pdf->addText($tm1, 798, 7, utf8_decode($ls_rif));
            $pdf->addText($tm2, 786, 7, utf8_decode($ls_sector_registro));
            $pdf->addText($tm3, 774, 7, utf8_decode($ls_titulo));
            $pdf->addText($tm4, 762, 7, utf8_decode($ls_coletilla));


            $pdf->ezStartPageNumbers(285,28,8,'','',1);

            $pdf->restoreState();
            $pdf->closeObject();
            $pdf->addObject($all,'all');
            ///////////////////////////////////////////////////////////////////////

            //Vamos a sacar el rango de cuentas seleccionadas
                $criteria = new CDbCriteria;
                $criteria->condition = "cuenta BETWEEN '$cuenta1' AND '$cuenta2' "; 
                $criteria->order = "cuenta ASC"; 
                #Enviamos el query al modelo
                $model_cuentas = CuentasConsolidada::model()->findAll($criteria);
               
            foreach($model_cuentas as $cuenta):


                //buscamos las cuentas relacionadas
                $data = detalle_cuenta($cuenta->cuenta, $f1,$f2);
                    if (count($data['detalle'])>0):
                            $pdf->ezText(utf8_decode("<b>Código:</b>".$cuenta->codigo_cuenta),7);
                            $pdf->ezText(utf8_decode("<b>Cuenta:</b> ".$cuenta->descripcion."\n"),7);

                            $data = detalle_cuenta($cuenta->cuenta, $f1,$f2);
                            $pdf->ezTable($data['detalle'],
                                            array(
//                                              'nro'=>'Nro',
                                                'fecha_comprobante'=>'<b>Fecha com.</b>',
                                                'fecha'=>'<b>Fecha ref.</b>',
                                                'nro_comprobante'=>'<b>Comp.</b>',
                                                'referencia'=>'<b>Ref.</b>',
                                                'descripcion'=>'<b>'.utf8_decode('Descripción').'</b>',
                                                'monto_debe'=>'<b>Debe</b>',
                                                'monto_haber'=>'<b>Haber</b>',
                                                'monto_saldo'=>'<b>Saldo</b>',
                                                //'fecha_creado'=>'Fecha',
                                                //'id_cuenta'=>'Id',
                                                //'cuenta'=>'Cuenta',
                                                //'denom_cuenta'=>'Denominación'

                                            ),'',
                                            array(  'showHeadings'=>1,
                                                    'showLines'=>0,
                                                    'shaded'=>0,
                                                    'xPos'=>'right',
                                                    'xOrientation'=>'left',
                                                    'width'=>530,
                                                    'fontSize'=>7,
                                                    'cols'=>array(
                                                        'nro'=>array('justification'=>'center'),
                                                        'fecha_comprobante'=>array('justification'=>'center','width'=>50),
                                                        'fecha'=>array('justification'=>'center','width'=>50),
                                                        'nro_comprobante'=>array('justification'=>'center','width'=>50),
                                                        'referencia'=>array('justification'=>'center','width'=>50,),
                                                        'descripcion'=>array('width'=>125, 'justification'=>'full'), //quedan 
                                                        'monto_debe'=>array('width'=>70, 'justification'=>'right'),
                                                        'monto_haber'=>array('width'=>75, 'justification'=>'right'),
                                                        'monto_saldo'=>array('width'=>75, 'justification'=>'right')
                                                  ))
                                    );
                                //Tabla de totales
                                $pdf->ezTable($data['totales'],
                                                array(
                                                    'denom'=>'',
                                                    'acum_debe'=>'',
                                                    'acum_haber'=>'',
                                                    'acum_saldo'=>'',
                                                ),'',
                                                array(  'showHeadings'=>0,
                                                        'showLines'=>0,
                                                        'shaded'=>2,
                                                        'xPos'=>'right',
                                                        'xOrientation'=>'left',
                                                        'width'=>530,
                                                        'fontSize'=>7,
                                                        'cols'=>array(
                                                            'denom'=>array('width'=>305, 'justification'=>'right'), //quedan 
                                                            'acum_debe'=>array('width'=>75, 'justification'=>'right'),
                                                            'acum_haber'=>array('width'=>75, 'justification'=>'right'),
                                                            'acum_saldo'=>array('width'=>75, 'justification'=>'right')
                                                      ))
                                        );


                        $pdf->ezText("\n\n");
                        endif;
                    endforeach;
            $pdf->ezStream();
            
          exit;
          //echo $html;
