|
@@ -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;
|
|
|
+ }
|
|
|
}
|