瀏覽代碼

Agregado obrarubro

Isaac Noriega 6 月之前
父節點
當前提交
b88dbf3f09

+ 27 - 0
migrations/m241026_024240_obra_rubro.php

@@ -0,0 +1,27 @@
+<?php
+
+use yii\db\Migration;
+
+class m241026_024240_obra_rubro extends Migration {
+  public function safeUp() {
+    $this->createTable('ObraRubro', [
+      "id" => $this->string(36),
+      "idObra" => $this->string(36),
+      "idConceptoObra" => $this->string(36),
+      "cantidad" => $this->decimal(10, 2),
+      "descripcion" => $this->string(550),
+      "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('ObraRubroPK', 'ObraRubro', 'id');
+    $this->addForeignKey("ObraRubroObraFK", "ObraRubro", "idObra", "Obra", "id");
+    $this->addForeignKey("ObraRubroConceptoObraFK", "ObraRubro", "idConceptoObra", "ConceptoObra", "id");
+  }
+  public function safeDown() {
+    $this->dropForeignKey("ObraRubroObraFK", "ObraRubro");
+    $this->dropForeignKey("ObraRubroConceptoObraFK", "ObraRubro");
+    $this->dropTable("ObraRubro");
+  }
+}

+ 81 - 0
models/ObraRubro.php

@@ -0,0 +1,81 @@
+<?php
+
+namespace app\models;
+
+use Yii;
+
+/**
+ * This is the model class for table "ObraRubro".
+ *
+ * @property string $id
+ * @property string|null $idObra
+ * @property string|null $idConceptoObra
+ * @property float|null $cantidad
+ * @property string|null $descripcion
+ * @property string|null $fechaCompra
+ * @property string|null $creado
+ * @property string|null $modificado
+ * @property string|null $eliminado
+ *
+ * @property ConceptoObra $conceptoObra
+ * @property Obra $obra
+ */
+class ObraRubro extends ModeloBase {
+  /**
+   * {@inheritdoc}
+   */
+  public static function tableName() {
+    return 'ObraRubro';
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function rules() {
+    return [
+      [['id'], 'required'],
+      [['cantidad'], 'number'],
+      [['fechaCompra', 'creado', 'modificado', 'eliminado'], 'safe'],
+      [['id', 'idObra', 'idConceptoObra'], 'string', 'max' => 36],
+      [['descripcion'], 'string', 'max' => 550],
+      [['id'], 'unique'],
+      [['idConceptoObra'], 'exist', 'skipOnError' => true, 'targetClass' => ConceptosObra::class, 'targetAttribute' => ['idConceptoObra' => 'id']],
+      [['idObra'], 'exist', 'skipOnError' => true, 'targetClass' => Obra::class, 'targetAttribute' => ['idObra' => 'id']],
+    ];
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function attributeLabels() {
+    return [
+      'id' => 'ID',
+      'idObra' => 'Id Obra',
+      'idConceptoObra' => 'Id Concepto Obra',
+      'cantidad' => 'Cantidad',
+      'descripcion' => 'Descripcion',
+      'fechaCompra' => 'Fecha Compra',
+      'creado' => 'Creado',
+      'modificado' => 'Modificado',
+      'eliminado' => 'Eliminado',
+    ];
+  }
+
+  /**
+   * Gets query for [[IdConceptoObra0]].
+   *
+   * @return \yii\db\ActiveQuery
+   */
+  public function getConceptoObra() {
+    return $this->hasOne(ConceptosObra::class, ['id' => 'idConceptoObra']);
+  }
+
+  /**
+   * Gets query for [[IdObra0]].
+   *
+   * @return \yii\db\ActiveQuery
+   */
+  public function getObra() {
+    return $this->hasOne(Obra::class, ['id' => 'idObra']);
+  }
+}

+ 82 - 0
modules/v1/controllers/ObraRubroController.php

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

+ 36 - 0
modules/v1/models/ObraRubro.php

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