<?php

/**
 * qcat_aux_mov actions.
 *
 * @package    contab2
 * @subpackage qcat_aux_mov
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class qcat_aux_movActions extends sfQuery {
    /*
      protected $table_names = array(
      'CN_AUXILIAR'
      );
      protected $table_join_ids = array(
      );
      protected $fields = array(
      'CN_AUXILIAR' => array(
      'id_auxiliar' => 'id_auxiliar',
      'cod_aux' => 'cod_aux',
      'nombre' => 'nombre',
      'id_catalogo' => 'id_catalogo',
      'id_cuenta_mayor' => 'id_cuenta_mayor',
      'id_grupo_cuenta' => 'id_grupo_cuenta',
      'id_clase_cuenta' => 'id_clase_cuenta'
      )
      );
      protected $table_field_conditions = array(
      'CN_AUXILIAR' => array(
      'id_cia' => array('=' => array('id_cia')),
      'id_catalogo' => array('=' => array('id_catalogo')),
      'id_cuenta_mayor' => array('=' => array('id_cuenta_mayor')),
      'id_grupo_cuenta' => array('=' => array('id_grupo_cuenta')),
      'id_clase_cuenta' => array('=' => array('id_clase_cuenta')),
      'rownum,start' => array('>' => array('_startRow')),
      'rownum,end' => array('<=' => array('_endRow'))
      )
      ); */

    protected $table_names = array(
        'CN_MOVIMIENTO_VIGPER',
        'CN_AUXILIAR'
//        ,
//        'CN_BALANCE_DETALLADO_CATALOGO'
    );
    protected $table_join_ids = array(
        'CN_AUXILIAR' => array(
            'id_auxiliar' => 'CN_MOVIMIENTO_VIGPER',
            'id_cia' => 'CN_MOVIMIENTO_VIGPER'
        )
//        ,
//        'CN_BALANCE_DETALLADO_CATALOGO' => array(
//            'id_auxiliar' => 'CN_MOVIMIENTO_VIGPER',
//            'id_catalogo' => 'CN_MOVIMIENTO_VIGPER',
//            'id_cuenta_mayor' => 'CN_MOVIMIENTO_VIGPER',
//            'id_grupo_cuenta' => 'CN_MOVIMIENTO_VIGPER',
//            'id_clase_cuenta' => 'CN_MOVIMIENTO_VIGPER',
//            //'id_periodo_contable' => 'CN_MOVIMIENTO_VIGPER',
//            //'id_vigencia' => 'CN_MOVIMIENTO_VIGPER',
//            'id_cen_op' => 'CN_MOVIMIENTO_VIGPER',
//            'id_cia' => 'CN_MOVIMIENTO_VIGPER'
//        )
    );
    protected $fields = array(
        'CN_MOVIMIENTO_VIGPER' => array(
            'id_cia' => 'id_cia',
            'id_cen_op' => 'id_cen_op',
            //'id_vigencia' => 'id_vigencia',
            //'id_periodo_contable' => 'id_periodo_contable',
            'id_auxiliar' => 'id_auxiliar',
            'id_catalogo' => 'id_catalogo',
            'id_cuenta_mayor' => 'id_cuenta_mayor',
            'id_grupo_cuenta' => 'id_grupo_cuenta',
            'id_clase_cuenta' => 'id_clase_cuenta'
        ),
        'CN_AUXILIAR' => array(
            'cod_aux' => 'cod_aux',
            'nombre' => 'nombre'
        )
//        ,
//        'CN_BALANCE_DETALLADO_CATALOGO' => array(
//            //'saldo_anterior' => 'saldo',
//            'nuevo_saldo' => 'saldo'
//        )
    );
    protected $table_field_conditions = array(
        'CN_MOVIMIENTO_VIGPER' => array(
            'id_cia' => array('=' => array('id_cia')),
            'id_cen_op' => array('=' => array('id_cen_op')),
            'vig_per' => array('BETWEEN' => array('vig_perIni', 'vig_perFin')),
            'id_catalogo' => array('=' => array('id_catalogo')),
            'id_cuenta_mayor' => array('=' => array('id_cuenta_mayor')),
            'id_grupo_cuenta' => array('=' => array('id_grupo_cuenta')),
            'id_clase_cuenta' => array('=' => array('id_clase_cuenta')),
            //'id_vigencia' => array('BETWEEN' => array('vig_ini', 'vig_fin')),
            //'id_periodo_contable' => array('BETWEEN' => array('per_ini', 'per_fin')),
            'rownum,start' => array('>' => array('_startRow')),
            'rownum,end' => array('<=' => array('_endRow'))
        )
            ,
//        'CN_BALANCE_DETALLADO_CATALOGO' => array(
//            'id_cia' => array('=' => array('id_cia')),
//            'id_cen_op' => array('=' => array('id_cen_op')),
//            'id_vigencia' => array('=' => array('vig_ini')),
//            'id_periodo_contable' => array('=' => array('per_ini'))
//        )
    );
    protected $table_field_or_conditions = null;
    protected $query_qualifier = 'DISTINCT';

    /**
     *
     * @param sfWebRequest $request
     */
    public function executeSaldo(sfWebRequest $request) {

        $cia = $request['id_cia'];
        $cen_op = $request['id_cen_op'];
        $auxiliar = $request['id_auxiliar'];
        $catalogo = $request['id_catalogo'];
        $cuenta = $request['id_cuenta_mayor'];
        $grupo = $request['id_grupo_cuenta'];
        $clase = $request['id_clase_cuenta'];

        $vigIni = $request['vig_ini'];
        $vigFin = $request['vig_fin'];
        $perIni = $request['per_ini'];
        $perFin = $request['per_fin'];

        $vigIni_perIni = $vigIni . substr('00' . $perIni, -2, 2);
        $vigFin_perFin = $vigFin . substr('00' . $perFin, -2, 2);

        //sum(NUEVO_SALDO) - sum(SALDO_ANTERIOR) as saldo_actual
//
        $sql = 'select
                sum(SALDO_ANTERIOR) as saldo_anterior,
                sum(DEBITO) as debito,
                sum(CREDITO) as credito,
                sum(NUEVO_SALDO) as saldo_actual
                from
                (
                select
                bdc.SALDO_ANTERIOR,
                bdc.MVTO_DEBITO AS DEBITO,
                bdc.MVTO_CREDITO AS CREDITO,
                bdc.NUEVO_SALDO
                from CN_BALANCE_DETALLADO_CATALOGO bdc
                where
                bdc.ID_CIA = ' . $cia . '
                and bdc.ID_CEN_OP = ' . $cen_op . '
                and bdc.VIG_PER between ' . $vigIni_perIni . ' AND ' . $vigFin_perFin . '
                and bdc.ID_CLASE_CUENTA = ' . $clase . '
                and bdc.ID_GRUPO_CUENTA = ' . $grupo . '
                and bdc.ID_CUENTA_MAYOR = ' . $cuenta . '
                and bdc.ID_CATALOGO = ' . $catalogo . '
                and bdc.ID_AUXILIAR = ' . $auxiliar . ' ) ';


//        $sql = 'select
//                CUENTA,
//                AUXILIAR,
//                sum(SALDO_ANTERIOR) as saldo_anterior,
//                sum(DEBITO) as debito,
//                sum(CREDITO) as credito,
//                sum(NUEVO_SALDO) as saldo_actual
//                from
//                (
//                select
//                bdc.CUENTA,
//                bdc.AUXILIAR,
//                bdc.SALDO_ANTERIOR,
//                bdc.MVTO_DEBITO AS DEBITO,
//                bdc.MVTO_CREDITO AS CREDITO,
//                bdc.NUEVO_SALDO
//                from CN_BALANCE_DETALLADO_CATALOGO bdc
//                where
//                bdc.ID_CIA = 1
//                and bdc.ID_CEN_OP = ' . $cen_op . '
//                and bdc.VIG_PER between ' . $vigIni_perIni . ' AND ' . $vigFin_perFin . '
//                and bdc.ID_CLASE_CUENTA = ' . $clase . '
//                and bdc.ID_GRUPO_CUENTA = ' . $grupo . '
//                and bdc.ID_CUENTA_MAYOR = ' . $cuenta . '
//                and bdc.ID_CATALOGO = ' . $catalogo . '
//
//                )
//                group by
//                cuenta,
//                AUXILIAR
//                ';

        $records = CN_TABLE::executeSQL($sql);

        $this->list_data = $records;

        $this->logMessage('record_count = ' . count($records));
        $this->logMessage('total_record_count = ' . count($records));
        $this->totalRows = count($records);
        $this->startRow = $request['_startRow'];
        $this->endRow = count($records);
    }

}