浏览代码

agregado el crud gasto y pago, modificacion de concepto obras

Jogibeda 6 月之前
父节点
当前提交
a07ebf2ebe

+ 7 - 5
migrations/m241015_212707_Tabla_Gastos_y_Pagos_creacion.php

@@ -3,9 +3,9 @@
 use yii\db\Migration;
 
 /**
- * Class m241015_212707_Tabla_Gastos_y_Pagos_creacion
+ * Class m241016_185927_Tabla_Gasto_y_Pagos_creacion
  */
-class m241015_212707_Tabla_Gastos_y_Pagos_creacion extends Migration
+class m241016_185927_Tabla_Gasto_y_Pagos_creacion extends Migration
 {
     /**
      * {@inheritdoc}
@@ -16,7 +16,7 @@ class m241015_212707_Tabla_Gastos_y_Pagos_creacion extends Migration
             "id" => $this->string(36),
             "idObra" => $this->string(36),
             "idConceptoObra" => $this->string(36),
-            "cantidad" => $this->string(100),
+            "cantidad" => $this->integer(),
             "descripcion" => $this->string(100),
             "fechaCompra" => $this->timestamp()->append(" with time zone"),
             "creado" => $this->timestamp()->append(" with time zone"),
@@ -34,7 +34,7 @@ class m241015_212707_Tabla_Gastos_y_Pagos_creacion extends Migration
             "id" => $this->string(36),
             "idObra" => $this->string(36),
             "idConceptoObra" => $this->string(36),
-            "cantidad" => $this->string(100),
+            "cantidad" => $this->integer(),
             "descripcion" => $this->string(100),
             "fechaPago" => $this->timestamp()->append(" with time zone"),
             "creado" => $this->timestamp()->append(" with time zone"),
@@ -60,6 +60,8 @@ class m241015_212707_Tabla_Gastos_y_Pagos_creacion extends Migration
         $this->dropTable('Pago');
     }
 
+    
+
     /*
     // Use up()/down() to run migration code without a transaction.
     public function up()
@@ -69,7 +71,7 @@ class m241015_212707_Tabla_Gastos_y_Pagos_creacion extends Migration
 
     public function down()
     {
-        echo "m241015_212707_Tabla_Gastos_y_Pagos_creacion cannot be reverted.\n";
+        echo "m241016_185927_Tabla_Gasto_y_Pagos_creacion cannot be reverted.\n";
 
         return false;
     }

+ 2 - 1
models/ConceptosObra.php

@@ -35,7 +35,8 @@ class ConceptosObra extends ModeloBase
             [['creado', 'modificado', 'eliminado'], 'safe'],
             [['id', 'idPartida','estatus'], 'string', 'max' => 36],
             [[ 'concepto','descripcion'], 'string', 'max' => 100],
-           
+            [['idPartida'], 'exist', 'skipOnError' => true, 'targetClass' => Partida::class, 'targetAttribute' => ['idPartida' => 'id']],
+
         ];
     }
 

+ 64 - 0
models/Gasto.php

@@ -0,0 +1,64 @@
+<?php
+
+namespace app\models;
+
+use Yii;
+
+/**
+ * This is the model class for table "ConceptosObra".
+ *
+ * @property string $id
+ * @property string $idObra
+ * @property string $idConceptoObra
+ * @property string|null $cantidad
+ * @property string|null $descripcion
+ * @property string $estatus
+
+ * 
+ */
+class Gasto extends ModeloBase
+{
+    /**
+     * {@inheritdoc}
+     */
+    public static function tableName()
+    {
+        return 'Gasto';
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function rules()
+    {
+        return [
+            [['id','idObra','idConceptoObra'], 'required'],
+            [['creado', 'modificado', 'eliminado','fechaCompra'], 'safe'],
+            [['cantidad'], 'integer'],
+            [['cantidad'], 'default', 'value' => null],
+            [['id', 'idObra','idConceptoObra'], 'string', 'max' => 36],
+            [[ 'descripcion'], 'string', 'max' => 100],
+            [['idObra'], 'exist', 'skipOnError' => true, 'targetClass' => Obra::class, 'targetAttribute' => ['idObra' => 'id']],
+            [['idConceptoObra'], 'exist', 'skipOnError' => true, 'targetClass' => ConceptosObra::class, 'targetAttribute' => ['idConceptoObra' => 'id']],
+
+        ];
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function attributeLabels()
+    {
+        return [
+            'id' => 'ID',
+            'idObra' => 'ID de la Obra',
+            'idConceptoObra' => 'ID del Concepto Obra',
+            'cantidad' => 'Cantidad',
+            'descripcion' => 'Descripcion',
+            'fechaCompra' => 'Fecha de Compra',
+            'creado' => 'Creado',
+            'modificado' => 'Modificado',
+            'eliminado' => 'Eliminado',
+        ];
+    }
+}

+ 65 - 0
models/Pago.php

@@ -0,0 +1,65 @@
+<?php
+
+namespace app\models;
+
+use Yii;
+
+/**
+ * This is the model class for table "ConceptosObra".
+ *
+ * @property string $id
+ * @property string $idObra
+ * @property string $idConceptoObra
+ * @property string|null $cantidad
+ * @property string|null $descripcion
+ * @property string $fechaCompra
+
+
+ * 
+ */
+class Pago extends ModeloBase
+{
+    /**
+     * {@inheritdoc}
+     */
+    public static function tableName()
+    {
+        return 'Pago';
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function rules()
+    {
+        return [
+            [['id','idObra','idConceptoObra'], 'required'],
+            [['creado', 'modificado', 'eliminado','fechaPago'], 'safe'],
+            [['cantidad'], 'integer'],
+            [['cantidad'], 'default', 'value' => null],
+            [['id', 'idObra','idConceptoObra'], 'string', 'max' => 36],
+            [[ 'descripcion'], 'string', 'max' => 100],
+            [['idObra'], 'exist', 'skipOnError' => true, 'targetClass' => Obra::class, 'targetAttribute' => ['idObra' => 'id']],
+            [['idConceptoObra'], 'exist', 'skipOnError' => true, 'targetClass' => ConceptosObra::class, 'targetAttribute' => ['idConceptoObra' => 'id']],
+
+        ];
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function attributeLabels()
+    {
+        return [
+            'id' => 'ID',
+            'idObra' => 'ID de la Obra',
+            'idConceptoObra' => 'ID del Concepto Obra',
+            'cantidad' => 'Cantidad',
+            'descripcion' => 'Descripcion',
+            'fechaPago' => 'Fecha de Pago',
+            'creado' => 'Creado',
+            'modificado' => 'Modificado',
+            'eliminado' => 'Eliminado',
+        ];
+    }
+}

+ 88 - 0
modules/v1/controllers/GastoController.php

@@ -0,0 +1,88 @@
+<?php
+
+namespace v1\controllers;
+
+use common\data\Respuesta;
+use common\rest\AuthController;
+use yii\db\Expression;
+
+class GastoController extends AuthController
+{
+
+  public $modelClass = "v1\models\Gasto";
+
+  public function actionIndex()
+  {
+    $id = trim($this->req->get("id", ""));
+    $buscar = trim($this->req->get("q", ""));
+
+    $query = $this->queryInicial;
+
+
+    if ($id !== "") {
+      $query->andWhere(["id" => $id]);
+    }
+
+    if ($buscar) {
+
+      $query->andWhere([
+        "OR",
+        ["ilike", "descripcion", $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(), '');
+
+   
+    $modelo->load($this->req->getBodyParams(), '');
+    if (!$modelo->save()) {
+      return (new Respuesta($modelo))
+        ->mensaje("Hubo un problema al guardar el Gasto");
+    }
+
+    $modelo->refresh();
+    return (new Respuesta($modelo))
+      ->mensaje("Gasto guardado");
+  }
+
+  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("Gasto no encontrado");
+    }
+    $modelo->eliminado = new Expression('now()');
+    if (!$modelo->save()) {
+      return (new Respuesta($modelo))
+        ->mensaje("No se pudo eliminar el Gasto");
+    }
+
+    return (new Respuesta())
+      ->mensaje("Gasto eliminado");
+  }
+}

+ 88 - 0
modules/v1/controllers/PagoController.php

@@ -0,0 +1,88 @@
+<?php
+
+namespace v1\controllers;
+
+use common\data\Respuesta;
+use common\rest\AuthController;
+use yii\db\Expression;
+
+class PagoController extends AuthController
+{
+
+  public $modelClass = "v1\models\Pago";
+
+  public function actionIndex()
+  {
+    $id = trim($this->req->get("id", ""));
+    $buscar = trim($this->req->get("q", ""));
+
+    $query = $this->queryInicial;
+
+
+    if ($id !== "") {
+      $query->andWhere(["id" => $id]);
+    }
+
+    if ($buscar) {
+
+      $query->andWhere([
+        "OR",
+        ["ilike", "descripcion", $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(), '');
+
+   
+    $modelo->load($this->req->getBodyParams(), '');
+    if (!$modelo->save()) {
+      return (new Respuesta($modelo))
+        ->mensaje("Hubo un problema al guardar el pago");
+    }
+
+    $modelo->refresh();
+    return (new Respuesta($modelo))
+      ->mensaje("Pago guardado");
+  }
+
+  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("Pago no encontrado");
+    }
+    $modelo->eliminado = new Expression('now()');
+    if (!$modelo->save()) {
+      return (new Respuesta($modelo))
+        ->mensaje("No se pudo eliminar el Pago");
+    }
+
+    return (new Respuesta())
+      ->mensaje("Pago eliminado");
+  }
+}

+ 41 - 0
modules/v1/models/Gasto.php

@@ -0,0 +1,41 @@
+<?php
+
+namespace v1\models;
+
+use app\models\Gasto as ModeloGasto;
+
+class Gasto extends ModeloGasto
+{
+
+    public function fields()
+    {
+        return [
+            'id',
+            'idObra',
+            'idConceptoObra',
+            'cantidad',
+            'descripcion',
+            'fechaCompra',
+            'creado',
+            'modificado',
+
+        ];
+    }
+    public function extraFields() {
+        return [
+            'obra',
+            'conceptosObra',
+        ];
+    }
+
+    public function getObra()
+    {
+        return $this->hasOne(Obra::class, ['id' => 'idObra']);
+    }
+
+    public function getConceptosObra()
+    {
+        return $this->hasOne(ConceptosObra::class, ['id' => 'idConceptoObra']);
+    }
+
+}

+ 41 - 0
modules/v1/models/Pago.php

@@ -0,0 +1,41 @@
+<?php
+
+namespace v1\models;
+
+use app\models\Pago as ModeloPago;
+
+class Pago extends ModeloPago
+{
+
+    public function fields()
+    {
+        return [
+            'id',
+            'idObra',
+            'idConceptoObra',
+            'cantidad',
+            'descripcion',
+            'fechaPago',
+            'creado',
+            'modificado',
+
+        ];
+    }
+    public function extraFields() {
+        return [
+            'obra',
+            'conceptosObra',
+        ];
+    }
+
+    public function getObra()
+    {
+        return $this->hasOne(Obra::class, ['id' => 'idObra']);
+    }
+
+    public function getConceptosObra()
+    {
+        return $this->hasOne(ConceptosObra::class, ['id' => 'idConceptoObra']);
+    }
+
+}