<?php

namespace App\Modules\Libros_electronicos\Models;

use Illuminate\Database\Eloquent\Model;
use App\Modules\Utilitarios\Models\Forpag;
use App\Modules\Utilitarios\Models\Tcambio;
use App\Modules\Utilitarios\Models\Eventos_operation;
use App\Modules\Utilitarios\Models\Identidad_document;
use App\Modules\Utilitarios\Models\Divisa;
use App\Modules\Catalogo\Models\Plan_cuenta;
use App\Modules\Catalogo\Models\Tipdoc;
use App\Modules\Catalogo\Models\Ccosto;
use App\Modules\Catalogo\Models\Entidad;
use DB;
class Venta extends Model
{
    public $timestamps = false;
    protected $guarded = [];
	protected $fillable = [];
	protected $table_pivot = 'ventas_cuentas';
    public function relation_shop(){
    	$m_y = explode('/',$this->fec_my);
		$show = $this::with(['ventas_lineas','divisas','tipdocs'])->whereMonth('create_at',$m_y[0])->whereYear('create_at',$m_y[1])->get();
		return $show;
    }
    /*
    *Obtener ventas por ruc 
    */
    public function get_by_ruc(){
		try{
			$show = $this::with(['tipdocs','divisas'])->where('numero_identidad',$this->identidad)->where('id','!=',$this->id)->get();
			return $show;
		}catch(Exception $messages){
			echo $messages->getMessage();
		}
	}
	 /*
    *Obtener ventas por ruc 
    */
    public function get_by_id(){
		try{
			$show = $this::with(['ventas_lineas' => function ($query) {
				$query->where('venta_id', '=', $this->id_ventas);
			},'divisas'])
			->where('id',$this->id_compra)->get();			
			return $show;
		}catch(Exception $messages){
			echo $messages->getMessage();
		}
	}
    //obtenemos resultados y utilidades necesarias para agregar o eliminar
    public function get_all(){
    	$divisas = Divisa::all(); $forpag = Forpag::all();$tipdocs = Tipdoc::all(); $cuentas = Plan_cuenta::all();
        $ccostos = Ccosto::all(); $eventos = Eventos_operation::all(); $identidad = Identidad_document::all();
        $data = ['divisas'=>$divisas,'forpag'=>$forpag,'tipdocs'=>$tipdocs,'cuentas'=>$cuentas,'ccostos'=>$ccostos,'eventos'=>$eventos,'identidad'=>$identidad];
        return $data;
    }
    //create ventas cuentas

    public function save_cuentas(){
    	$cuentas = array('cuenta4','cuenta5','cuenta6');
		$dhber = array('debhab4','debhab5','debhab6');
		$docs = Tipdoc::find($this->tipdocs_id);
	    for ($i=0; $i < count($cuentas) ; $i++) { 
			$cuenta = $cuentas[$i];
			$dh = $dhber[$i];
			if (!empty($docs->$cuenta)) {
				$plan = Plan_cuenta::where('codigo',$docs->$cuenta)->first();
				$cuentas_contables = DB::table($this->table_pivot)->where('codigo',$plan->codigo)->where('venta_id',$this->id)->first();
				if (!empty($cuentas_contables)) {
					DB::table($this->table_pivot)->where('id',$cuentas_contables->id)->update([
						'dhber' => $docs->$dh,
						'cuenta' => $cuenta,
						'codigo'=>$plan->codigo,
						'descripcion'=>"$plan->descripcion"
					]);
				}else{
					DB::table($this->table_pivot)->insert([
					 	'dhber' => $docs->$dh, 
					 	'cuenta' => $cuenta,
					 	'codigo'=>$plan->codigo,
					 	'descripcion'=>"$plan->descripcion",
					 	'venta_id'=>$this->id
					]);
				}
			}else{
				$this->delete_cuentas($cuenta);
			}
		}
    }
    public function delete_cuentas($cuenta){
    	DB::table($this->table_pivot)->where('cuenta',$cuenta)->where('venta_id',$this->id)->delete();
    }
    public function ventas_lineas(){
		return $this->hasMany('App\Modules\Libros_electronicos\Models\Ventas_linea');
	}
	public function divisas(){
		return $this->belongsto('App\Modules\Utilitarios\Models\Divisa');
	}
	public function tipdocs(){
		return $this->belongsto('App\Modules\Catalogo\Models\Tipdoc');
	}
}

