69 Commitit 005e1ca0f8 ... fdb7fced1a

Tekijä SHA1 Viesti Päivämäärä
  Jose Cienfuegos fdb7fced1a Merge branch 'master' of https://git.miralo.xyz/eDesarrollos/servicio-autos-api 9 kuukautta sitten
  Jose Cienfuegos c15c27265c Se agregaron tablas merma, compra, compra producto, nomina 9 kuukautta sitten
  Jogibeda 5e79989cc1 Creacion de la migracion para cambiar los datos de Unidad de medida y Partida con posibilidad de nulos 9 kuukautta sitten
  Jogibeda 62e0d47d1c Agregado Modulos y Controlador de Permisos, como su migracion 9 kuukautta sitten
  Jogibeda 7b12a5ca80 busqueda por nombre de Unidad de medida 9 kuukautta sitten
  Jogibeda 4f517bcd48 Controladores y modelos de Partida y Unidad de medida, incluido su migracion 9 kuukautta sitten
  Jogibeda d473f33957 Creacion de la migracion de modulo junto con modelos y controladores 9 kuukautta sitten
  Jogibeda 887693fea3 Actualizacion de la obtencion de herramientas 9 kuukautta sitten
  Jogibeda 5fae08e11c Agregado descripcion en inventario herramienta y guardado de lista de herramientas como empleados en obras 9 kuukautta sitten
  acampillo 0d5c27efe6 corrección de migraciones 9 kuukautta sitten
  Jogibeda b9131defac Ajuste condicional de existentes en placas y serie en Vehiculos 9 kuukautta sitten
  Jogibeda ab2583fed1 Merge branch 'master' of https://git.miralo.xyz/eDesarrollos/servicio-autos-api 9 kuukautta sitten
  Jogibeda 313b56f5a1 Ajuste condicional de existentes en placas y serie en Vehiculos 9 kuukautta sitten
  Jose Cienfuegos cf63d9f166 Merge branch 'master' of https://git.miralo.xyz/eDesarrollos/servicio-autos-api 9 kuukautta sitten
  Jose Cienfuegos a99fbd2059 Se agrego logo de edesarrollos 9 kuukautta sitten
  Jose Cienfuegos 3cc01ee094 Se agrego excel y pdf 9 kuukautta sitten
  Jose Cienfuegos fb5287a865 Se agrego PDF y excel de herramienta inventario 9 kuukautta sitten
  Jogibeda b17a03cf0d Modificacion de los controladores donde hay una condicional donde clave no se repita 9 kuukautta sitten
  Jogibeda 5430023d70 Condicional de que no se repita placas y num de serie 10 kuukautta sitten
  Jose Cienfuegos 6ffd59f36e Se corrigio actionEliminar en ObraEmpleadoController 10 kuukautta sitten
  Jose Cienfuegos 9b93be61a4 Se corrigio el actioGuardar para la relacion de Servicios 10 kuukautta sitten
  Jose Cienfuegos eee897e49c Se agrego campo nombre en el modelo ServicioTipoServicio 10 kuukautta sitten
  Jose Cienfuegos b774601b84 Se corrigio guardado de tipos de servicios en Servicio 10 kuukautta sitten
  Jose Cienfuegos 69e313c435 Se agrego controladores para obra herramienta y obra empleado 10 kuukautta sitten
  Jose Cienfuegos 754b172f78 Se actualizo controlador de Servicio ademas se agrego tabla ServicioTipoServicio 10 kuukautta sitten
  Jogibeda 913ddd11d8 Herramienta Inventario modulo 10 kuukautta sitten
  Jose Cienfuegos 33372b76af Se corrigio media de vehiculo 10 kuukautta sitten
  Jose Cienfuegos 53e10e3b82 Se corrigioi guaradao en ObraController 10 kuukautta sitten
  Jose Cienfuegos fe1a264f49 Merge branch 'master' of https://git.miralo.xyz/eDesarrollos/servicio-autos-api 10 kuukautta sitten
  Jose Cienfuegos 61c5aaea89 Se corrigio modelos ObraEmpleado y ObraHerramienta 10 kuukautta sitten
  Jose Cienfuegos 34416040ed Se corrigio duplicado de cantidad en ObraController 10 kuukautta sitten
  Jose Cienfuegos fbcb49d27f Se agregaron modulos ObraHerramienta yu ObraEmpleado 10 kuukautta sitten
  Jose Cienfuegos 0ceb948904 Se corrigio sintaxis 10 kuukautta sitten
  Jose Cienfuegos 7abf484a2b Se corrigio el actionGuardar en MediaController 10 kuukautta sitten
  Jose Cienfuegos accbcae871 Se agregaron columnas a tabla media 10 kuukautta sitten
  Jose Cienfuegos 163cadbd2e Se cambioi de activeRecord a Modelobase 10 kuukautta sitten
  Jose Cienfuegos c32a3d7912 Se quito extension de mopdelos de media 10 kuukautta sitten
  Jose Cienfuegos bad0667b47 Se quito la s en getMediaVehiculo 10 kuukautta sitten
  Jose Cienfuegos e59a10fdb1 Se Corrigio el apuntado de servicio a media vehiculo 10 kuukautta sitten
  Jose Cienfuegos ccf19f864a Se agrego getMedia a vehiculos 10 kuukautta sitten
  Jose Cienfuegos 955b5e6c09 Se corrigio modelos de vehiculo y MediaVehiculo 10 kuukautta sitten
  Jose Cienfuegos 210302b5fc Se agrego tabla MediaVehiculo para guardar archivos e imagenes 10 kuukautta sitten
  Jogibeda 22746469e4 Agregado el campo de clave en obra, como su funcionamiento 10 kuukautta sitten
  Jogibeda 46795ded34 Mensaje de error si la clave ya existe en controladores Color, Marca, TipoAuto, TipoHerramienta, TipoServicio 10 kuukautta sitten
  Jogibeda 52666e7a86 Modificacion de buscadores de Marca,Obra y TipoAuto, tambien se añadio la migracion donde la clave en todos los modulos es unica 10 kuukautta sitten
  Jogibeda 3210003bab Arreglo de buscador de HerramientaObra 10 kuukautta sitten
  Jogibeda 741b84d115 descripcion actualizada de Obra, TipoAuto y Marca 10 kuukautta sitten
  Jogibeda 7345333c55 agregacion de la migracion para tabla de color 10 kuukautta sitten
  Jogibeda a35d3c83c0 creacion y actualizacion en migraciones 10 kuukautta sitten
  Jogibeda f91f600e10 Modulo Empleado creado 10 kuukautta sitten
  Jogibeda 80c2f441c4 cambio de tipo de dato en costo 10 kuukautta sitten
  Jogibeda 7b27d72049 Modulos de Tipo herramienta y herramienta 10 kuukautta sitten
  Jogibeda dc7243d444 filtrado de vehiculos 11 kuukautta sitten
  Jogibeda 696934327c Modulo de color funcionando 11 kuukautta sitten
  Jogibeda 29d13d9008 Modulos de Marca de auto y tipo de autos en funcionamiento 11 kuukautta sitten
  Jose Cienfuegos 03898ad7ba Se corrigio migracion 11 kuukautta sitten
  Jose Cienfuegos 00ce3a564e Se agrego tabla TipoServicio modelos y controlador 11 kuukautta sitten
  Jose Cienfuegos e8dcda6282 Se corrigio id entero en VehiculoController 11 kuukautta sitten
  Jose Cienfuegos 1b8ad9a86a Se cambio de intval a trim en el id de TallerController 11 kuukautta sitten
  Jogibeda 3e21b4d5ae Actualizacion de modelo Vehiculo 11 kuukautta sitten
  Jose Cienfuegos 2f61fdd4e0 Se agregaron columnas marca y descripcion en tabla vehiculo en migracion 11 kuukautta sitten
  Jose Cienfuegos 96558aef75 Se agrego migracion para agregar columna tipo en tabla vehiculo 11 kuukautta sitten
  Jose Cienfuegos f052a6dea5 Se agregaron tablas Servicio y ServicioElemento 11 kuukautta sitten
  Jose Cienfuegos d5ecb12c60 Se se agrego crud de Vehiculo 11 kuukautta sitten
  Jose Cienfuegos 3e8b635d2d se agrego migracion para tablas taller y vehiculo 11 kuukautta sitten
  Jose Cienfuegos 05d83fdcdf Se agrego Crud Taller 11 kuukautta sitten
  Jose Cienfuegos 05ac1d1276 Se hizo CRUD de Taller, se agregaron tablas Taller y Vehiculo 11 kuukautta sitten
  Jose Cienfuegos cb93fe4bf0 Se agrego db a ignore 11 kuukautta sitten
  Jose Cienfuegos ad7ebed873 se 11 kuukautta sitten

+ 114 - 0
migrations/m240926_231003_tablas_compras_comprasProducto_mermas_nominas.php

@@ -0,0 +1,114 @@
+<?php
+
+use yii\db\Migration;
+
+/**
+ * Class m240926_231003_tablas_compras_comprasProducto_mermas_nominas
+ */
+class m240926_231003_tablas_compras_comprasProducto_mermas_nominas extends Migration {
+
+    public function safeUp() {
+        $this->createTable('Compra', [
+            "id" => $this->string(36),
+            "idObra" => $this->string(36),
+            "idUsuario" => $this->string(36),
+            "fechaCompra" => $this->timestamp()->append(" with time zone"),
+            "creado" => $this->timestamp()->append(" with time zone"),
+            "modificado" => $this->timestamp()->append(" with time zone"),
+            "eliminado" => $this->timestamp()->append(" with time zone"),
+        ]);
+
+        $this->addPrimaryKey('CompraPK', 'Compra', 'id');
+        
+        $this->addForeignKey('CompraObraFK', 'Compra', 'idObra', 'Obra', 'id');
+        $this->addForeignKey('CompraUsuarioFK', 'Compra', 'idUsuario', 'Usuario', 'id');
+
+        $this->createTable('CompraProducto', [
+            "id" => $this->string(36),
+            "idCompra" => $this->string(36),
+            "idUnidadMedida" => $this->string(36),
+            "idPartida" => $this->string(36),
+            "producto" => $this->string(),
+            "cantidad" => $this->string(),
+            "precio" => $this->decimal(10, 2),
+            "descripcion" => $this->text(),
+            "creado" => $this->timestamp()->append(" with time zone"),
+            "modificado" => $this->timestamp()->append(" with time zone"),
+            "eliminado" => $this->timestamp()->append(" with time zone"),
+        ]);
+
+        $this->addPrimaryKey('CompraProductoPK','CompraProducto', 'id');
+
+        $this->addForeignKey('CompraProductoCompraFK', 'CompraProducto', 'idCompra', 'Compra', 'id');
+        $this->addForeignKey('CompraProductoMedidaFK', 'CompraProducto', 'idUnidadMedida', 'UnidadMedida', 'id');
+        $this->addForeignKey('CompraProductoPartidaFK', 'CompraProducto', 'idPartida', 'Partida', 'id');
+
+        $this->createTable('Merma', [
+            "id" => $this->string(36),
+            "idObra" => $this->string(36),
+            "idUnidadMedida" => $this->string(36),
+            "idPartida" => $this->string(36),
+            "idUsuario" => $this->string(36),
+            "producto" => $this->string(),
+            "descripcion" => $this->text(),
+            "cantidad" => $this->string(),
+            "precio" => $this->decimal(10, 2),
+            "creado" => $this->timestamp()->append(" with time zone"),
+            "modificado" => $this->timestamp()->append(" with time zone"),
+            "eliminado" => $this->timestamp()->append(" with time zone"),
+        ]);
+
+        $this->addPrimaryKey('MermaPK', 'Merma', 'id');
+
+        $this->addForeignKey('MermaObraFK', 'Merma', 'idObra', 'Obra', 'id');
+        $this->addForeignKey('MermaUnidadMedidaFK', 'Merma', 'idUnidadMedida', 'UnidadMedida', 'id');
+        $this->addForeignKey('MermaPartidaFK', 'Merma', 'idPartida', 'Partida', 'id');
+        $this->addForeignKey('MermaUsuarioFK', 'Merma', 'idUsuario', 'Usuario', 'id');
+
+        $this->createTable('Nomina', [
+            "id" => $this->string(36),
+            "idEmpleado" => $this->string(36),
+            "idObra" => $this->string(36),
+            "idUsuario" => $this->string(36),
+            "montoPagado" => $this->decimal(10,2),
+            "descuento" => $this->decimal(10,2),
+            "creado" => $this->timestamp()->append(" with time zone"),
+            "fechaPago" => $this->timestamp()->append(" with time zone"),
+            "modificado" => $this->timestamp()->append(" with time zone"),
+            "eliminado" => $this->timestamp()->append(" with time zone"),
+        ]);
+
+        $this->addPrimaryKey('NominaPK', 'Nomina', 'id');
+
+        $this->addForeignKey('NominaObraFK', 'Nomina', 'idObra', 'Obra', 'id');
+        $this->addForeignKey('NominaEmpleadoFK', 'Nomina', 'idEmpleado', 'Empleado', 'id');
+        $this->addForeignKey('NominaUsuarioFK', 'Nomina', 'idUsuario', 'Usuario', 'id');
+
+    }
+
+    public function safeDown() {
+        $this->dropForeignKey('NominaObraFK', 'Nomina');
+        $this->dropForeignKey('NominaEmpleadoFK', 'Nomina');
+        $this->dropForeignKey('NominaUsuarioFK', 'Nomina');
+
+        $this->dropTable('Nomina');
+
+        $this->dropForeignKey('MermaObraFK', 'Merma');
+        $this->dropForeignKey('MermaUnidadMedidaFK', 'Merma');
+        $this->dropForeignKey('MermaPartidaFK', 'Merma');
+        $this->dropForeignKey('MermaUsuarioFK', 'Merma');
+
+        $this->dropTable('Merma');
+
+        $this->dropForeignKey('CompraProductoCompraFK', 'CompraProducto');
+        $this->dropForeignKey('CompraProductoMedidaFK', 'CompraProducto');
+        $this->dropForeignKey('CompraProductoPartidaFK', 'CompraProducto');
+
+        $this->dropTable('CompraProducto');
+
+        $this->dropForeignKey('CompraObraFK', 'Compra');
+        $this->dropForeignKey('CompraUsuarioFK', 'Compra');
+
+        $this->dropTable('Compra');
+    }
+}

+ 77 - 0
models/Compra.php

@@ -0,0 +1,77 @@
+<?php
+
+namespace app\models;
+
+use Yii;
+
+/**
+ * This is the model class for table "Compra".
+ *
+ * @property string $id
+ * @property string|null $idObra
+ * @property string|null $idUsuario
+ * @property string|null $fechaCompra
+ * @property string|null $creado
+ * @property string|null $modificado
+ * @property string|null $eliminado
+ *
+ * @property CompraProducto[] $compraProductos
+ * @property Obra $idObra0
+ * @property Usuario $idUsuario0
+ */
+class Compra extends \yii\db\ActiveRecord
+{
+    /**
+     * {@inheritdoc}
+     */
+    public static function tableName()
+    {
+        return 'Compra';
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function rules()
+    {
+        return [
+            [['id'], 'required'],
+            [['fechaCompra', 'creado', 'modificado', 'eliminado'], 'safe'],
+            [['id', 'idObra', 'idUsuario'], 'string', 'max' => 36],
+            [['id'], 'unique'],
+            [['idObra'], 'exist', 'skipOnError' => true, 'targetClass' => Obra::class, 'targetAttribute' => ['idObra' => 'id']],
+            [['idUsuario'], 'exist', 'skipOnError' => true, 'targetClass' => Usuario::class, 'targetAttribute' => ['idUsuario' => 'id']],
+        ];
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function attributeLabels()
+    {
+        return [
+            'id' => 'ID',
+            'idObra' => 'Id Obra',
+            'idUsuario' => 'Id Usuario',
+            'fechaCompra' => 'Fecha Compra',
+            'creado' => 'Creado',
+            'modificado' => 'Modificado',
+            'eliminado' => 'Eliminado',
+        ];
+    }
+
+    public function getCompraProducto()
+    {
+        return $this->hasMany(CompraProducto::class, ['idCompra' => 'id']);
+    }
+
+    public function getObra()
+    {
+        return $this->hasOne(Obra::class, ['id' => 'idObra']);
+    }
+
+    public function getUsuario()
+    {
+        return $this->hasOne(Usuario::class, ['id' => 'idUsuario']);
+    }
+}

+ 89 - 0
models/CompraProducto.php

@@ -0,0 +1,89 @@
+<?php
+
+namespace app\models;
+
+use Yii;
+
+/**
+ * This is the model class for table "CompraProducto".
+ *
+ * @property string $id
+ * @property string|null $idCompra
+ * @property string|null $idUnidadMedida
+ * @property string|null $idPartida
+ * @property string|null $producto
+ * @property string|null $cantidad
+ * @property float|null $precio
+ * @property string|null $descripcion
+ * @property string|null $creado
+ * @property string|null $modificado
+ * @property string|null $eliminado
+ *
+ * @property Compra $idCompra0
+ * @property Partida $idPartida0
+ * @property UnidadMedida $idUnidadMedida0
+ */
+class CompraProducto extends \yii\db\ActiveRecord
+{
+    /**
+     * {@inheritdoc}
+     */
+    public static function tableName()
+    {
+        return 'CompraProducto';
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function rules()
+    {
+        return [
+            [['id'], 'required'],
+            [['precio'], 'number'],
+            [['descripcion'], 'string'],
+            [['creado', 'modificado', 'eliminado'], 'safe'],
+            [['id', 'idCompra', 'idUnidadMedida', 'idPartida'], 'string', 'max' => 36],
+            [['producto', 'cantidad'], 'string', 'max' => 255],
+            [['id'], 'unique'],
+            [['idCompra'], 'exist', 'skipOnError' => true, 'targetClass' => Compra::class, 'targetAttribute' => ['idCompra' => 'id']],
+            [['idPartida'], 'exist', 'skipOnError' => true, 'targetClass' => Partida::class, 'targetAttribute' => ['idPartida' => 'id']],
+            [['idUnidadMedida'], 'exist', 'skipOnError' => true, 'targetClass' => UnidadMedida::class, 'targetAttribute' => ['idUnidadMedida' => 'id']],
+        ];
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function attributeLabels()
+    {
+        return [
+            'id' => 'ID',
+            'idCompra' => 'Id Compra',
+            'idUnidadMedida' => 'Id Unidad Medida',
+            'idPartida' => 'Id Partida',
+            'producto' => 'Producto',
+            'cantidad' => 'Cantidad',
+            'precio' => 'Precio',
+            'descripcion' => 'Descripcion',
+            'creado' => 'Creado',
+            'modificado' => 'Modificado',
+            'eliminado' => 'Eliminado',
+        ];
+    }
+
+    public function getCompra()
+    {
+        return $this->hasOne(Compra::class, ['id' => 'idCompra']);
+    }
+
+    public function getPartida()
+    {
+        return $this->hasOne(Partida::class, ['id' => 'idPartida']);
+    }
+
+    public function getUnidadMedida()
+    {
+        return $this->hasOne(UnidadMedida::class, ['id' => 'idUnidadMedida']);
+    }
+}

+ 98 - 0
models/Merma.php

@@ -0,0 +1,98 @@
+<?php
+
+namespace app\models;
+
+use Yii;
+
+/**
+ * This is the model class for table "Merma".
+ *
+ * @property string $id
+ * @property string|null $idObra
+ * @property string|null $idUnidadMedida
+ * @property string|null $idPartida
+ * @property string|null $idUsuario
+ * @property string|null $producto
+ * @property string|null $descripcion
+ * @property string|null $cantidad
+ * @property float|null $precio
+ * @property string|null $creado
+ * @property string|null $modificado
+ * @property string|null $eliminado
+ *
+ * @property Obra $idObra0
+ * @property Partida $idPartida0
+ * @property UnidadMedida $idUnidadMedida0
+ * @property Usuario $idUsuario0
+ */
+class Merma extends ModeloBase
+{
+    /**
+     * {@inheritdoc}
+     */
+    public static function tableName()
+    {
+        return 'Merma';
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function rules()
+    {
+        return [
+            [['id'], 'required'],
+            [['descripcion'], 'string'],
+            [['precio'], 'number'],
+            [['creado', 'modificado', 'eliminado'], 'safe'],
+            [['id', 'idObra', 'idUnidadMedida', 'idPartida', 'idUsuario'], 'string', 'max' => 36],
+            [['producto', 'cantidad'], 'string', 'max' => 255],
+            [['id'], 'unique'],
+            [['idObra'], 'exist', 'skipOnError' => true, 'targetClass' => Obra::class, 'targetAttribute' => ['idObra' => 'id']],
+            [['idPartida'], 'exist', 'skipOnError' => true, 'targetClass' => Partida::class, 'targetAttribute' => ['idPartida' => 'id']],
+            [['idUnidadMedida'], 'exist', 'skipOnError' => true, 'targetClass' => UnidadMedida::class, 'targetAttribute' => ['idUnidadMedida' => 'id']],
+            [['idUsuario'], 'exist', 'skipOnError' => true, 'targetClass' => Usuario::class, 'targetAttribute' => ['idUsuario' => 'id']],
+        ];
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function attributeLabels()
+    {
+        return [
+            'id' => 'ID',
+            'idObra' => 'Id Obra',
+            'idUnidadMedida' => 'Id Unidad Medida',
+            'idPartida' => 'Id Partida',
+            'idUsuario' => 'Id Usuario',
+            'producto' => 'Producto',
+            'descripcion' => 'Descripcion',
+            'cantidad' => 'Cantidad',
+            'precio' => 'Precio',
+            'creado' => 'Creado',
+            'modificado' => 'Modificado',
+            'eliminado' => 'Eliminado',
+        ];
+    }
+
+    public function getObra()
+    {
+        return $this->hasOne(Obra::class, ['id' => 'idObra']);
+    }
+
+    public function getPartida()
+    {
+        return $this->hasOne(Partida::class, ['id' => 'idPartida']);
+    }
+
+    public function getUnidadMedida()
+    {
+        return $this->hasOne(UnidadMedida::class, ['id' => 'idUnidadMedida']);
+    }
+
+    public function getUsuario()
+    {
+        return $this->hasOne(Usuario::class, ['id' => 'idUsuario']);
+    }
+}

+ 85 - 0
models/Nomina.php

@@ -0,0 +1,85 @@
+<?php
+
+namespace app\models;
+
+use Yii;
+
+/**
+ * This is the model class for table "Nomina".
+ *
+ * @property string $id
+ * @property string|null $idEmpleado
+ * @property string|null $idObra
+ * @property string|null $idUsuario
+ * @property float|null $montoPagado
+ * @property float|null $descuento
+ * @property string|null $creado
+ * @property string|null $fechaPago
+ * @property string|null $modificado
+ * @property string|null $eliminado
+ *
+ * @property Empleado $idEmpleado0
+ * @property Obra $idObra0
+ * @property Usuario $idUsuario0
+ */
+class Nomina extends ModeloBase
+{
+    /**
+     * {@inheritdoc}
+     */
+    public static function tableName()
+    {
+        return 'Nomina';
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function rules()
+    {
+        return [
+            [['id'], 'required'],
+            [['montoPagado', 'descuento'], 'number'],
+            [['creado', 'fechaPago', 'modificado', 'eliminado'], 'safe'],
+            [['id', 'idEmpleado', 'idObra', 'idUsuario'], 'string', 'max' => 36],
+            [['id'], 'unique'],
+            [['idEmpleado'], 'exist', 'skipOnError' => true, 'targetClass' => Empleado::class, 'targetAttribute' => ['idEmpleado' => 'id']],
+            [['idObra'], 'exist', 'skipOnError' => true, 'targetClass' => Obra::class, 'targetAttribute' => ['idObra' => 'id']],
+            [['idUsuario'], 'exist', 'skipOnError' => true, 'targetClass' => Usuario::class, 'targetAttribute' => ['idUsuario' => 'id']],
+        ];
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function attributeLabels()
+    {
+        return [
+            'id' => 'ID',
+            'idEmpleado' => 'Id Empleado',
+            'idObra' => 'Id Obra',
+            'idUsuario' => 'Id Usuario',
+            'montoPagado' => 'Monto Pagado',
+            'descuento' => 'Descuento',
+            'creado' => 'Creado',
+            'fechaPago' => 'Fecha Pago',
+            'modificado' => 'Modificado',
+            'eliminado' => 'Eliminado',
+        ];
+    }
+
+    public function getEmpleado()
+    {
+        return $this->hasOne(Empleado::class, ['id' => 'idEmpleado']);
+    }
+
+    public function getObra()
+    {
+        return $this->hasOne(Obra::class, ['id' => 'idObra']);
+    }
+
+    public function getUsuario()
+    {
+        return $this->hasOne(Usuario::class, ['id' => 'idUsuario']);
+    }
+}

+ 93 - 0
modules/v1/controllers/MermaController.php

@@ -0,0 +1,93 @@
+<?php
+
+namespace v1\controllers;
+
+use common\data\Respuesta;
+use common\rest\AuthController;
+use yii\db\Expression;
+
+class MermaController extends AuthController
+{
+
+  public $modelClass = "v1\models\Merma";
+
+  public function actionIndex()
+  {
+    $id = trim($this->req->get("id", ""));
+    $idObra = trim($this->req->get("idObra", ""));
+    $idPartida = trim($this->req->get("idPartida", ""));
+    $buscar = trim($this->req->get("q", ""));
+
+    $query = $this->queryInicial;
+
+
+    if ($id !== "") {
+      $query->andWhere(["id" => $id]);
+    }
+
+    if ($idObra !== "") {
+      $query->andWhere(["idObra" => $idObra]);
+    }
+
+    if ($idPartida !== "") {
+      $query->andWhere(["idPartida" => $idPartida]);
+    }
+
+    if($buscar !==""){
+      $query->andWhere(["nombre"=>$buscar]);
+    }
+
+    return new Respuesta($query, $this->limite, $this->pagina, $this->ordenar);
+  }
+
+  public function actionGuardar()
+  {
+    $id = trim($this->req->getBodyParam("id", ""));
+    $modelo = null;
+
+    if ($id !== "") {
+      $modelo = $this->modelClass::findOne($id);
+    }
+    if ($modelo === null) {
+      $modelo = new $this->modelClass();
+      $modelo->uuid();
+      $modelo->creado = new Expression('now()');
+    } else {
+      $modelo->modificado = new Expression('now()');
+    }
+    $modelo->load($this->req->getBodyParams(), '');
+
+  
+    if (!$modelo->save()) {
+      return (new Respuesta($modelo))
+        ->mensaje("Hubo un problema al guardar la Merma");
+    }
+
+    $modelo->refresh();
+    return (new Respuesta($modelo))
+      ->mensaje("Merma guardada");
+  }
+
+  public function actionEliminar()
+  {
+    $id = trim($this->req->getBodyParam("id", ""));
+    $modelo = null;
+
+    if ($id !== "") {
+      $modelo = $this->modelClass::findOne(["id" => $id]);
+    }
+    if ($modelo === null) {
+      return (new Respuesta())
+        ->esError()
+        ->mensaje("Merma no encontrado");
+    }
+    $modelo->eliminado = new Expression('now()');
+    if (!$modelo->save()) {
+      return (new Respuesta($modelo))
+        ->mensaje("No se pudo eliminar la Merma");
+    }
+
+    return (new Respuesta())
+      ->mensaje("Merma eliminada");
+  }
+}

+ 93 - 0
modules/v1/controllers/NominaController.php

@@ -0,0 +1,93 @@
+<?php
+
+namespace v1\controllers;
+
+use common\data\Respuesta;
+use common\rest\AuthController;
+use yii\db\Expression;
+
+class NominaController extends AuthController
+{
+
+  public $modelClass = "v1\models\Nomina";
+
+  public function actionIndex()
+  {
+    $id = trim($this->req->get("id", ""));
+    $idEmpleado = trim($this->req->get("idEmpleado", ""));
+    $idObra = trim($this->req->get("idObra", ""));
+    $buscar = trim($this->req->get("q", ""));
+
+    $query = $this->queryInicial;
+
+
+    if ($id !== "") {
+      $query->andWhere(["id" => $id]);
+    }
+    
+    if ($idEmpleado !== "") {
+        $query->andWhere(["idEmpleado" => $idEmpleado]);
+    }
+
+    if ($idObra !== "") {
+        $query->andWhere(["idObra" => $idObra]);
+    }
+
+    if($buscar !==""){
+      $query->andWhere(["nombre"=>$buscar]);
+    }
+
+    return new Respuesta($query, $this->limite, $this->pagina, $this->ordenar);
+  }
+
+  public function actionGuardar()
+  {
+    $id = trim($this->req->getBodyParam("id", ""));
+    $modelo = null;
+
+    if ($id !== "") {
+      $modelo = $this->modelClass::findOne($id);
+    }
+    if ($modelo === null) {
+      $modelo = new $this->modelClass();
+      $modelo->uuid();
+      $modelo->creado = new Expression('now()');
+    } else {
+      $modelo->modificado = new Expression('now()');
+    }
+    $modelo->load($this->req->getBodyParams(), '');
+
+  
+    if (!$modelo->save()) {
+      return (new Respuesta($modelo))
+        ->mensaje("Hubo un problema al guardar la Nomina");
+    }
+
+    $modelo->refresh();
+    return (new Respuesta($modelo))
+      ->mensaje("Nomina guardada");
+  }
+
+  public function actionEliminar()
+  {
+    $id = trim($this->req->getBodyParam("id", ""));
+    $modelo = null;
+
+    if ($id !== "") {
+      $modelo = $this->modelClass::findOne(["id" => $id]);
+    }
+    if ($modelo === null) {
+      return (new Respuesta())
+        ->esError()
+        ->mensaje("Nomina no encontrado");
+    }
+    $modelo->eliminado = new Expression('now()');
+    if (!$modelo->save()) {
+      return (new Respuesta($modelo))
+        ->mensaje("No se pudo eliminar la Nomina");
+    }
+
+    return (new Respuesta())
+      ->mensaje("Nomina eliminada");
+  }
+}

+ 44 - 0
modules/v1/models/Compra.php

@@ -0,0 +1,44 @@
+<?php
+
+namespace v1\models;
+
+use app\models\Compra as ModeloCompra;
+
+class Compra extends ModeloCompra
+{
+
+    public function fields()
+    {
+        return [
+            'id',
+            'idObra',
+            'idUsuario',
+            'fechaCompra',
+            'creado',
+            'modificado',
+
+        ];
+    }
+    public function extraFields() {
+        return [
+            'compraProducto',
+            'obra',
+            'usuario',
+        ];
+    }
+
+    public function getCompraProducto()
+    {
+        return $this->hasMany(CompraProducto::class, ['idCompra' => 'id']);
+    }
+
+    public function getObra()
+    {
+        return $this->hasOne(Obra::class, ['id' => 'idObra']);
+    }
+
+    public function getUsuario()
+    {
+        return $this->hasOne(Usuario::class, ['id' => 'idUsuario']);
+    }
+}

+ 48 - 0
modules/v1/models/CompraProducto.php

@@ -0,0 +1,48 @@
+<?php
+
+namespace v1\models;
+
+use app\models\CompraProducto as ModeloCompraProducto;
+
+class CompraProducto extends ModeloCompraProducto
+{
+
+    public function fields()
+    {
+        return [
+            'id',
+            'idCompra',
+            'idUnidadMedida',
+            'idPartida',
+            'producto',
+            'descripcion',
+            'cantidad',
+            'precio',
+            'creado',
+            'modificado',
+
+        ];
+    }
+    public function extraFields() {
+        return [
+            'compra',
+            'partida',
+            'unidadMedida',
+        ];
+    }
+
+    public function getCompra()
+    {
+        return $this->hasOne(Compra::class, ['id' => 'idCompra']);
+    }
+
+    public function getPartida()
+    {
+        return $this->hasOne(Partida::class, ['id' => 'idPartida']);
+    }
+
+    public function getUnidadMedida()
+    {
+        return $this->hasOne(UnidadMedida::class, ['id' => 'idUnidadMedida']);
+    }
+}

+ 55 - 0
modules/v1/models/Merma.php

@@ -0,0 +1,55 @@
+<?php
+
+namespace v1\models;
+
+use app\models\Merma as ModeloMerma;
+
+class Merma extends ModeloMerma
+{
+
+    public function fields()
+    {
+        return [
+            'id',
+            'idObra',
+            'idUnidadMedida',
+            'idPartida',
+            'idUsuario',
+            'producto',
+            'descripcion',
+            'cantidad',
+            'precio',
+            'creado',
+            'modificado',
+
+        ];
+    }
+    public function extraFields() {
+        return [
+            'obra',
+            'partida',
+            'unidadMedida',
+            'usuario',
+        ];
+    }
+
+    public function getObra()
+    {
+        return $this->hasOne(Obra::class, ['id' => 'idObra']);
+    }
+
+    public function getPartida()
+    {
+        return $this->hasOne(Partida::class, ['id' => 'idPartida']);
+    }
+
+    public function getUnidadMedida()
+    {
+        return $this->hasOne(UnidadMedida::class, ['id' => 'idUnidadMedida']);
+    }
+
+    public function getUsuario()
+    {
+        return $this->hasOne(Usuario::class, ['id' => 'idUsuario']);
+    }
+}

+ 47 - 0
modules/v1/models/Nomina.php

@@ -0,0 +1,47 @@
+<?php
+
+namespace v1\models;
+
+use app\models\Nomina as ModeloNomina;
+
+class Nomina extends ModeloNomina
+{
+
+    public function fields()
+    {
+        return [
+            'id',
+            'idEmpleado',
+            'idObra',
+            'idUsuario',
+            'montoPagado',
+            'descuento',
+            'fechaPago',
+            'creado',
+            'modificado',
+
+        ];
+    }
+    public function extraFields() {
+        return [
+            'obra',
+            'empleado',
+            'usuario',
+        ];
+    }
+
+    public function getEmpleado()
+    {
+        return $this->hasOne(Empleado::class, ['id' => 'idEmpleado']);
+    }
+
+    public function getObra()
+    {
+        return $this->hasOne(Obra::class, ['id' => 'idObra']);
+    }
+
+    public function getUsuario()
+    {
+        return $this->hasOne(Usuario::class, ['id' => 'idUsuario']);
+    }
+}