161 lines
3.7 KiB
PHP
161 lines
3.7 KiB
PHP
<?php
|
|
|
|
namespace Koneko\VuexyStoreManager\Models;
|
|
|
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
|
use Illuminate\Database\Eloquent\Model;
|
|
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
|
use Illuminate\Database\Eloquent\Relations\HasMany;
|
|
use Koneko\VuexyAdmin\Models\User;
|
|
use Koneko\SatCatalogs\Models\CodigoPostal;
|
|
use Koneko\SatCatalogs\Models\Colonia;
|
|
use Koneko\SatCatalogs\Models\Estado;
|
|
use Koneko\SatCatalogs\Models\Municipio;
|
|
use Koneko\SatCatalogs\Models\RegimenFiscal;
|
|
|
|
class Store extends Model
|
|
{
|
|
use HasFactory;
|
|
|
|
// Valores GPS por defecto
|
|
const LATITUDE_DEFAULT = 19.0436;
|
|
const LONGITUDE_DEFAULT = -98.1980;
|
|
|
|
protected $fillable = [
|
|
'code',
|
|
'name',
|
|
'description',
|
|
'manager_id',
|
|
'c_pais',
|
|
'c_codigo_postal',
|
|
'c_estado',
|
|
'c_municipio',
|
|
'c_localidad',
|
|
'c_colonia',
|
|
'direccion',
|
|
'num_ext',
|
|
'num_int',
|
|
'lat',
|
|
'lng',
|
|
'email',
|
|
'tel',
|
|
'tel2',
|
|
'rfc',
|
|
'nombre_fiscal',
|
|
'c_regimen_fiscal',
|
|
'domicilio_fiscal',
|
|
'show_on_website',
|
|
'enable_ecommerce',
|
|
'status',
|
|
];
|
|
|
|
protected $casts = [
|
|
'show_on_website' => 'boolean',
|
|
'enable_ecommerce' => 'boolean',
|
|
'status' => 'boolean',
|
|
];
|
|
|
|
/**
|
|
* Nombre de la etiqueta para generar Componentes
|
|
*
|
|
* @var string
|
|
*/
|
|
public $tagName = 'Store';
|
|
|
|
/**
|
|
* Nombre de la columna que contiee el nombre del registro
|
|
*
|
|
* @var string
|
|
*/
|
|
public $columnNameLabel = 'name';
|
|
|
|
/**
|
|
* Nombre singular del registro.
|
|
*
|
|
* @var string
|
|
*/
|
|
public $singularName = 'sucursal';
|
|
|
|
/**
|
|
* Nombre plural del registro.
|
|
*
|
|
* @var string
|
|
*/
|
|
public $pluralName = 'sucursales';
|
|
|
|
/**
|
|
* Relación con el catálogo de códigos postales SAT.
|
|
*/
|
|
public function codigoPostal(): BelongsTo
|
|
{
|
|
return $this->belongsTo(CodigoPostal::class, 'c_codigo_postal', 'c_codigo_postal');
|
|
}
|
|
|
|
/**
|
|
* Relación con el catálogo de estados SAT.
|
|
*/
|
|
public function estado(): BelongsTo
|
|
{
|
|
return $this->belongsTo(Estado::class, 'c_estado', 'c_estado');
|
|
}
|
|
|
|
/**
|
|
* Relación con el catálogo de municipios SAT.
|
|
*/
|
|
public function municipio(): BelongsTo
|
|
{
|
|
return $this->belongsTo(Municipio::class, 'c_municipio', 'c_municipio');
|
|
}
|
|
|
|
/**
|
|
* Relación con el catálogo de colonias SAT.
|
|
*/
|
|
public function colonia(): BelongsTo
|
|
{
|
|
return $this->belongsTo(Colonia::class, 'c_colonia', 'c_colonia');
|
|
}
|
|
|
|
/**
|
|
* Relación con el régimen fiscal SAT.
|
|
*/
|
|
public function regimenFiscal(): BelongsTo
|
|
{
|
|
return $this->belongsTo(RegimenFiscal::class, 'c_regimen_fiscal', 'c_regimen_fiscal');
|
|
}
|
|
|
|
/**
|
|
* Relación con el domicilio fiscal (Código Postal SAT).
|
|
*/
|
|
public function domicilioFiscal(): BelongsTo
|
|
{
|
|
return $this->belongsTo(CodigoPostal::class, 'domicilio_fiscal', 'c_codigo_postal');
|
|
}
|
|
|
|
public function workCenters(): HasMany
|
|
{
|
|
return $this->hasMany(StoreWorkCenter::class);
|
|
}
|
|
|
|
public function warehouses(): HasMany
|
|
{
|
|
return $this->hasMany(Warehouses::class);
|
|
}
|
|
|
|
public function manager(): BelongsTo
|
|
{
|
|
return $this->belongsTo(User::class, 'manager_id');
|
|
}
|
|
|
|
public function scopeActive($query)
|
|
{
|
|
return $query->where('status', true);
|
|
}
|
|
|
|
public function getFullAddressAttribute()
|
|
{
|
|
return "{$this->direccion}, {$this->num_ext}, {$this->num_int}, {$this->c_colonia}, {$this->c_municipio}, {$this->c_estado}, {$this->c_pais}";
|
|
}
|
|
|
|
|
|
}
|