<?php
class main_model extends model{
    function ajustar_stock($lugar){
        $this->_db->select("sum(Ingreso) - sum(Egreso) as Cantidad, ArticuloID, LugarID ");
        $this->_db->join("movimiento_stock ms", "ms.FormularioID = f.ID");
        $this->_db->group_by("ArticuloID");

        $articulos = $this->_db->get_tabla("formularios f","f.LugarID = ".$lugar);

        
        if (!$articulos){
            
            $this->_db->update("stock",array("Stock"=>0),
                                    "LugarID = ".$lugar
                                    );
        }
        else{
            foreach($articulos as $articulo){
                $stock = $this->_db->get_tabla("stock", "ArticuloID = ".$articulo['ArticuloID']." AND LugarID = ".$articulo['LugarID']);
                if ($stock){
                    $this->_db->update("stock",array("Stock"=>$articulo['Cantidad']),
                        "ArticuloID = ".$articulo['ArticuloID']." AND LugarID = ".$articulo['LugarID']
                        );
                }
                else{
                    $this->_db->insert("stock", array(
                        "LugarID"=>$articulo['LugarID'],
                        "ArticuloID"=>$articulo['ArticuloID'],
                        "Stock"=>$articulo['Cantidad'],
                        ));
                }
            }
        }

    }

    function obtener_stock_lugar($lugar){
        $this->_db->select("Stock, a.*");
        $this->_db->join("articulos a","a.ID = ArticuloID");
        $articulos = $this->_db->get_tabla("stock","LugarID = ".$lugar." AND Stock > 0");
        return $articulos;
    }

    function obtener_lugares_all(){
        $lugares = $this->_db->get_tabla("lugares");
        return $lugares;
    }

    function obtener_lugares($origen, $tipo) {

        //traemos los lugares que estan presentes en una nota de egreso desde el lugar origen al lugar actual
        if ($tipo == 3) {
            $this->_db->select("l.*");
            $this->_db->where(" n.LugarID = ".$origen."  AND Tipo = 2");
            $this->_db->join("nanb n", "n.Origen = l.ID");
            $this->_db->join("formularios f", "f.ID = n.FormularioID");

            $this->_db->group_by("l.ID");
        }

        $lugares = $this->_db->get_tabla("lugares l");

        return $lugares;
    }

    function obtener_bancos_all(){
        return $this->_db->get_tabla("bancos");
    }
    function obtener_tarjetas_all(){
        return $this->_db->get_tabla("tarjetas");
    }
    function obtener_provincias_all(){
        return $this->_db->get_tabla("provincias");
    }
    function obtener_monedas_all(){
        return $this->_db->get_tabla("monedas");
    }
    
    function login($user, $pass){
        $ret = $this->_db->get_tabla("usuarios", "Usuario = '".$user."' AND Password = '".$pass."'");
        
        if ($ret){
            $this->_db->select("CodPermiso, Tabla, Label");
            $this->_db->join("r_tablas t", "t.ID = r.R_tablasID");
            $permisos = $this->_db->get_tabla("r_permisos r", "RolID = ".$ret[0]['RolID']);
            $ret[0]['permisos'] = $permisos;
        }
        return $ret;
    }  
    
    function generar_asiento($arr){
        
        $this->_db->order_by("AsientoNumero", "desc");
        $asientos = $this->_db->get_tabla("c_asientos");
        $numero_asiento = $asientos ? $asientos[0]['AsientoNumero'] + 1 : 1;
        
        $arr_debe = array();
        $arr_haber = array();
        foreach($arr as $cuenta_asiento){
            if ($cuenta_asiento['Debe']>0)
                $arr_debe[] = $cuenta_asiento;
            else
                $arr_haber[] = $cuenta_asiento;
        }
        
        $ord = 1;
        $hora = time();
        foreach($arr_debe as $cuenta_debe){
            $this->_db->insert("c_asientos", array(
                "AsientoNumero" => $numero_asiento,
                "Orden" => $ord,
                "Fecha" => $hora,
                "CuentaID" => $cuenta_debe['CuentaID'],
                "Debe" => $cuenta_debe['Debe'],
                "Haber" => 0,
                ));
            $ord++;
        }
        foreach($arr_haber as $cuenta_haber){
            $this->_db->insert("c_asientos", array(
                "AsientoNumero" => $numero_asiento,
                "Orden" => $ord,
                "Fecha" => $hora,
                "CuentaID" => $cuenta_haber['CuentaID'],
                "Debe" => 0,
                "Haber" => $cuenta_haber['Haber']
                ));
            $ord++;
        }
    }

    function get_form_venta($id){
        $rtn = array();
        $this->_db->select("f.*, v.*, c.Razon_social, c.Cuil, t.Denominacion as Tipo_iva, l.Denominacion as Lugar ");
        $this->_db->join("ventas v", "v.FormularioID = f.ID");
        $this->_db->join("clientes c", "c.ID = v.ClienteID");
        $this->_db->join("lugares l", "l.ID = f.LugarID");
        $this->_db->join("tipo_iva t", "t.ID = c.Tipo_iva");
        $formulario = $this->_db->get_tabla("formularios f", "f.ID = ".$id);
        $rtn['formulario'] =     $formulario[0];
        $campo = "Egreso";
        $this->_db->select("a.*, ".$campo." as Cantidad, Precio");
        $this->_db->join("articulos a", "a.ID = ms.ArticuloID");
        $mov_stock = $this->_db->get_tabla("movimiento_stock ms","FormularioID = ".$id);
        $rtn['detalle'] = $mov_stock;

        $this->_db->select("b.Denominacion as Banco, pr.Denominacion as Provincia, Numero, Librador, Total");
        $this->_db->join("provincias pr", "pr.ID = p.ProvinciaID");
        $this->_db->join("bancos b", "b.ID = p.BancoID");
        $cheques = $this->_db->get_tabla("pago_cheque p", "FormularioID = ".$id);

        $this->_db->select("m.Denominacion as Moneda, p.Cotizacion, Monto, Total");
        $this->_db->join("monedas m", "m.ID = p.MonedaID");
        $monedas = $this->_db->get_tabla("pago_monedas p", "FormularioID = ".$id);

        $this->_db->select("t.Denominacion as Tarjeta, Cupon, Total");
        $this->_db->join("tarjetas t", "t.ID = p.TarjetaID");
        $tarjetas = $this->_db->get_tabla("pago_tarjeta p", "FormularioID = ".$id);

        $rtn['pagos'] = array(
            "tarjetas" => $tarjetas,
            "monedas" => $monedas,
            "cheques" => $cheques,
        );
        return $rtn;
    } 

    function guardar_pago($id, $pagos){
        foreach($pagos as $pago){
            switch($pago['tipo']){
                case 1:
                    $data = array(
                        "FormularioID"=>$id,
                        "MonedaID"=>$pago['moneda'],
                        "Cotizacion"=>$pago['cotizacion'],
                        "Monto"=>$pago['cantidad'],
                        "Total"=>$pago['total']
                    );
                    $this->_db->insert("pago_monedas", $data);
                    break;
                case 2:break;

                case 3:
                    $data = array(
                        "Cupon"=>$pago['cupon'],
                        "FormularioID"=>$id,
                        "TarjetaID"=>$pago['tarjeta'],
                        "Fecha"=>$pago['fecha'],
                        "Sucursal"=>$pago['sucursal'],
                        "Terminal"=>$pago['terminal'],
                        "Total"=>$pago['total']
                    );
                    $this->_db->insert("pago_tarjeta", $data);
                    break;
                case 4:
                    $data = array(
                        "BancoID"=>$pago['banco'],
                        "FormularioID"=>$id,
                        "ProvinciaID"=>$pago['provincia'],
                        "Sucursal"=>$pago['sucursal'],
                        "Numero"=>$pago['numero'],
                        "Librador"=>$pago['librador'],
                        "Fecha_emision"=>$pago['fecha_emision'],
                        "Fecha_presentacion"=>$pago['fecha_presentacion'],
                        "Total"=>$pago['total']
                    );
                    $this->_db->insert("pago_cheque", $data);
                    break;
                case 5:
                    $cuenta_bancaria = $this->_db->get_tabla("cuentas_bancarias","ID = ".$pago['cuenta']);
                    if ($cuenta_bancaria){
                        $pago['banco']=$cuenta_bancaria[0]['BancoID'];
                        $pago['provincia']=$cuenta_bancaria[0]['ProvinciaID'];
                        $pago['sucursal']=$cuenta_bancaria[0]['Sucursal'];
                    }
                    $data = array(
                        "CuentaBancariaID"=>$pago['cuenta'],
                        "BancoID"=>$pago['banco'],
                        "FormularioID"=>$id,
                        "ProvinciaID"=>$pago['provincia'],
                        "Numero"=>$pago['numero'],
                        "Librador"=>$pago['librador'],
                        "Fecha_emision"=>$pago['fecha_emision'],
                        "Fecha_presentacion"=>$pago['fecha_presentacion'],
                        "Total"=>$pago['total']
                    );
                    $this->_db->insert("pago_cheque", $data);
                    echo $this->_db->last_query();
                    break;
            }
        }

    }        
}
?>
