Browse Source

exceles mejorados

Jogibeda 4 months ago
parent
commit
f55f9f79e1

+ 110 - 0
modules/excel/controllers/ObraGastoController.php

@@ -212,4 +212,114 @@ public function encabezadoHoja($logo)
     \Yii::$app->end();
     return $documento;
   }
+
+
+
+  public function actionGastoConceptoExcel($idObra)
+  {
+    $json = intval($this->req->get("json", ""));
+
+    $obra = Obra::findOne($idObra);
+    $query = Gasto::find()
+    ->select(['{{ConceptoObra}}.[[concepto]] AS concepto', 'SUM({{Gasto}}.[[cantidad]]) AS totalGasto'])
+    ->innerJoin('{{ConceptoObra}}', '{{Gasto}}.[[idConceptoObra]] = {{ConceptoObra}}.[[id]]') // Relación explícita con delimitadores
+    ->andWhere(['{{Gasto}}.[[eliminado]]' => null])
+    ->andWhere(['{{Gasto}}.[[idObra]]' => $idObra])
+    ->groupBy('{{ConceptoObra}}.[[id]]') 
+    ->asArray()
+    ->all();
+    if ($json) {
+      \Yii::$app->getResponse()->format = Response::FORMAT_JSON;
+      return $json;
+    }
+
+    $BASEPATH = \Yii::getAlias('@app') . "/web";
+    $logo = $BASEPATH . '/img/logos/edesarrollos-unicolor-azul.png';
+    $this->encabezadoHoja($this->logo($logo, 'A1'));
+    $fechaInicio = (new DateTime($obra->fechaInicio))->format('d-m-Y');
+    $fechaFin = (new DateTime($obra->fechaFinal))->format('d-m-Y');
+    $estiloEncabezado = array_merge(self::$celdaVertical, self::$bordes);
+    $encabezadoTabla = [
+      "A6" => [
+        "valor" => "Gastos Totales por Concepto de Obra, relacionado a la obra: $obra->nombre",
+        "combinar" => "D6",
+        "estilo" => $estiloEncabezado
+      ],
+      "A7" => [
+        "valor" => "Fecha Inicial: $fechaInicio ",
+        "combinar" => "B7",
+        "estilo" => $estiloEncabezado
+      ],
+      "C7" => [
+        "valor" => "Fecha Final: $fechaFin",
+        "combinar" => "D7",
+        "estilo" => $estiloEncabezado
+      ]
+    ];
+
+    $this->agregarRenglones($encabezadoTabla);
+
+    $encabezadoTabla = [
+      "A9" => [
+        "valor" => "Concepto Obra",
+        "estilo" => $estiloEncabezado
+      ],
+      "B9" => [
+        "valor" => "Total:",
+        "estilo" => $estiloEncabezado
+      ],
+
+    ];
+
+    $r = 10;
+    $estiloCondicional = $this->estiloCondicional();
+    $this->agregarRenglones($encabezadoTabla);
+    $estiloCeldaIzquierda = array_merge(self::$bordes, self::$celdaFuente12);
+    $TotalGasto= 0;
+
+    foreach ($query as $obraGasto) {
+      $TotalGasto=$TotalGasto+=$obraGasto['totalGasto'];
+      $renglones = [
+        "A{$r}" => [
+          "valor" => $obraGasto['concepto'],
+          "estilo" => $estiloCeldaIzquierda
+        ],
+        "B{$r}" => [
+          "valor" => $obraGasto['totalGasto'],
+          "estilo" => $estiloCeldaIzquierda,
+          "formato" => "$#,##0.00",
+          "estiloCondicional" => $estiloCondicional
+
+        ],
+       
+      ];
+      $this->agregarRenglones($renglones);
+      $r += 1;
+    }
+    $r+=1;
+    $renglonesTotales = [
+      "A{$r}" => [
+          "valor" => "TOTAL",
+          "estilo" => $estiloEncabezado
+      ],
+      "B{$r}" => [
+          "valor" => $TotalGasto, 
+          "estilo" => $estiloCeldaIzquierda,
+          "formato" => "$#,##0.00",
+          "estiloCondicional" => $estiloCondicional
+      ],
+  ];
+  $this->agregarRenglones($renglonesTotales);
+    $anchoColumnas = [
+      "A" => ["ancho" => 20],
+      "B" => ["ancho" => 20],
+      "C" => ["ancho" => 20],
+      "D" => ["ancho" => 20],
+    ];
+    $this->anchoColumnas($anchoColumnas);
+    $documento = $this->obtenerHojaDeCalculo();
+    $this->crear($documento,  "GastoConcepto_" . date("YmdHis"), self::TIPO_EXCEL);
+    \Yii::$app->end();
+    return $documento;
+  }
 }

+ 109 - 0
modules/excel/controllers/ObraPagoController.php

@@ -213,4 +213,113 @@ public static $estiloCeldaIzquierda12 = [
         \Yii::$app->end();
       }
 
+      public function actionPagoConceptoExcel($idObra)
+      {
+        $json = intval($this->req->get("json", ""));
+    
+        $obra = Obra::findOne($idObra);
+        $query = Pago::find()
+        ->select(['{{ConceptoObra}}.[[concepto]] AS concepto', 'SUM({{Pago}}.[[cantidad]]) AS totalPago'])
+        ->innerJoin('{{ConceptoObra}}', '{{Pago}}.[[idConceptoObra]] = {{ConceptoObra}}.[[id]]')
+        ->andWhere(['{{Pago}}.[[eliminado]]' => null])
+        ->andWhere(['{{Pago}}.[[idObra]]' => $idObra])
+        ->groupBy('{{ConceptoObra}}.[[id]]') 
+        ->asArray()
+        ->all();
+        if ($json) {
+          \Yii::$app->getResponse()->format = Response::FORMAT_JSON;
+          return $json;
+        }
+    
+        $BASEPATH = \Yii::getAlias('@app') . "/web";
+        $logo = $BASEPATH . '/img/logos/edesarrollos-unicolor-azul.png';
+        $this->encabezadoHoja($this->logo($logo, 'A1'));
+        $fechaInicio = (new DateTime($obra->fechaInicio))->format('d-m-Y');
+        $fechaFin = (new DateTime($obra->fechaFinal))->format('d-m-Y');
+        $estiloEncabezado = array_merge(self::$celdaVertical, self::$bordes);
+        $encabezadoTabla = [
+          "A6" => [
+            "valor" => "Pagos Totales por Concepto de Obra, relacionado a la obra: $obra->nombre",
+            "combinar" => "D6",
+            "estilo" => $estiloEncabezado
+          ],
+          "A7" => [
+            "valor" => "Fecha Inicial: $fechaInicio ",
+            "combinar" => "B7",
+            "estilo" => $estiloEncabezado
+          ],
+          "C7" => [
+            "valor" => "Fecha Final: $fechaFin",
+            "combinar" => "D7",
+            "estilo" => $estiloEncabezado
+          ]
+        ];
+    
+        $this->agregarRenglones($encabezadoTabla);
+    
+        $encabezadoTabla = [
+          "A9" => [
+            "valor" => "Concepto Obra",
+            "estilo" => $estiloEncabezado
+          ],
+          "B9" => [
+            "valor" => "Total:",
+            "estilo" => $estiloEncabezado
+          ],
+    
+        ];
+    
+        $r = 10;
+        $estiloCondicional = $this->estiloCondicional();
+        $this->agregarRenglones($encabezadoTabla);
+        $estiloCeldaIzquierda = array_merge(self::$bordes, self::$celdaFuente12);
+        $TotalPago= 0;
+
+        foreach ($query as $obraPago) {
+          $TotalPago=$TotalPago+$obraPago['totalPago'];
+
+          $renglones = [
+            "A{$r}" => [
+              "valor" => $obraPago['concepto'],
+              "estilo" => $estiloCeldaIzquierda
+            ],
+            "B{$r}" => [
+              "valor" => $obraPago['totalPago'],
+              "estilo" => $estiloCeldaIzquierda,
+              "formato" => "$#,##0.00",
+              "estiloCondicional" => $estiloCondicional
+    
+            ],
+           
+          ];
+          $this->agregarRenglones($renglones);
+          $r += 1;
+        }
+        $renglonesTotales = [
+          "A{$r}" => [
+              "valor" => "TOTAL",
+              "estilo" => $estiloEncabezado
+          ],
+          "B{$r}" => [
+              "valor" => $TotalPago, 
+              "estilo" => $estiloCeldaIzquierda,
+              "formato" => "$#,##0.00",
+              "estiloCondicional" => $estiloCondicional
+          ],
+      ];
+      $this->agregarRenglones($renglonesTotales);
+
+        $anchoColumnas = [
+          "A" => ["ancho" => 20],
+          "B" => ["ancho" => 20],
+          "C" => ["ancho" => 20],
+          "D" => ["ancho" => 20],
+        ];
+        $this->anchoColumnas($anchoColumnas);
+        $documento = $this->obtenerHojaDeCalculo();
+        $this->crear($documento,  "PagoConcepto_" . date("YmdHis"), self::TIPO_EXCEL);
+        \Yii::$app->end();
+        return $documento;
+      }
+
   }

+ 110 - 0
modules/excel/controllers/ObraRubroController.php

@@ -13,6 +13,7 @@ use v1\models\ObraRubro;
 
 use Yii;
 use excel\web\Controller;
+use yii\web\Response;
 
 class ObraRubroController extends Controller
 {
@@ -208,4 +209,113 @@ class ObraRubroController extends Controller
     \Yii::$app->end();
   }
 
+
+  public function actionRubroConceptoExcel($idObra)
+  {
+    $json = intval($this->req->get("json", ""));
+
+    $obra = Obra::findOne($idObra);
+    $query = ObraRubro::find()
+    ->select(['{{ConceptoObra}}.[[concepto]] AS concepto', 'SUM({{ObraRubro}}.[[cantidad]]) AS totalObraRubro'])
+    ->innerJoin('{{ConceptoObra}}', '{{ObraRubro}}.[[idConceptoObra]] = {{ConceptoObra}}.[[id]]')
+    ->andWhere(['{{ObraRubro}}.[[eliminado]]' => null])
+    ->andWhere(['{{ObraRubro}}.[[idObra]]' => $idObra])
+    ->groupBy('{{ConceptoObra}}.[[id]]') 
+    ->asArray()
+    ->all();
+    if ($json) {
+      \Yii::$app->getResponse()->format = Response::FORMAT_JSON;
+      return $json;
+    }
+
+    $BASEPATH = \Yii::getAlias('@app') . "/web";
+    $logo = $BASEPATH . '/img/logos/edesarrollos-unicolor-azul.png';
+    $this->encabezadoHoja($this->logo($logo, 'A1'));
+    $fechaInicio = (new DateTime($obra->fechaInicio))->format('d-m-Y');
+    $fechaFin = (new DateTime($obra->fechaFinal))->format('d-m-Y');
+    $estiloEncabezado = array_merge(self::$celdaVertical, self::$bordes);
+    $encabezadoTabla = [
+      "A6" => [
+        "valor" => "ObraRubro Totales por Concepto de Obra, relacionado a la obra: $obra->nombre",
+        "combinar" => "D6",
+        "estilo" => $estiloEncabezado
+      ],
+      "A7" => [
+        "valor" => "Fecha Inicial: $fechaInicio ",
+        "combinar" => "B7",
+        "estilo" => $estiloEncabezado
+      ],
+      "C7" => [
+        "valor" => "Fecha Final: $fechaFin",
+        "combinar" => "D7",
+        "estilo" => $estiloEncabezado
+      ]
+    ];
+
+    $this->agregarRenglones($encabezadoTabla);
+
+    $encabezadoTabla = [
+      "A9" => [
+        "valor" => "Concepto Obra",
+        "estilo" => $estiloEncabezado
+      ],
+      "B9" => [
+        "valor" => "Total:",
+        "estilo" => $estiloEncabezado
+      ],
+
+    ];
+
+    $r = 10;
+    $estiloCondicional = $this->estiloCondicional();
+    $this->agregarRenglones($encabezadoTabla);
+    $estiloCeldaIzquierda = array_merge(self::$bordes, self::$celdaFuente12);
+    $TotalObraRubro= 0;
+
+    foreach ($query as $obraObraRubro) {
+      $TotalObraRubro=$TotalObraRubro+$obraObraRubro['totalObraRubro'];
+
+      $renglones = [
+        "A{$r}" => [
+          "valor" => $obraObraRubro['concepto'],
+          "estilo" => $estiloCeldaIzquierda
+        ],
+        "B{$r}" => [
+          "valor" => $obraObraRubro['totalObraRubro'],
+          "estilo" => $estiloCeldaIzquierda,
+          "formato" => "$#,##0.00",
+          "estiloCondicional" => $estiloCondicional
+
+        ],
+       
+      ];
+      $this->agregarRenglones($renglones);
+      $r += 1;
+    }
+    $renglonesTotales = [
+      "A{$r}" => [
+          "valor" => "TOTAL",
+          "estilo" => $estiloEncabezado
+      ],
+      "B{$r}" => [
+          "valor" => $TotalObraRubro, 
+          "estilo" => $estiloCeldaIzquierda,
+          "formato" => "$#,##0.00",
+          "estiloCondicional" => $estiloCondicional
+      ],
+  ];
+  $this->agregarRenglones($renglonesTotales);
+
+    $anchoColumnas = [
+      "A" => ["ancho" => 20],
+      "B" => ["ancho" => 20],
+      "C" => ["ancho" => 20],
+      "D" => ["ancho" => 20],
+    ];
+    $this->anchoColumnas($anchoColumnas);
+    $documento = $this->obtenerHojaDeCalculo();
+    $this->crear($documento,  "ObraRubroConcepto_" . date("YmdHis"), self::TIPO_EXCEL);
+    \Yii::$app->end();
+    return $documento;
+  }
 }