ExportXls.php 15KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254
  1. <?php
  2. defined('BASEPATH') or exit('No direct script access allowed');
  3. /**
  4. *
  5. * Controller ExportXls
  6. *
  7. * This controller for ...
  8. *
  9. * @package CodeIgniter
  10. * @category Controller CI
  11. * @author Setiawan Jodi <jodisetiawan@fisip-untirta.ac.id>
  12. * @author Raul Guerrero <r.g.c@me.com>
  13. * @link https://github.com/setdjod/myci-extension/
  14. * @param ...
  15. * @return ...
  16. *
  17. */
  18. class ExportXls extends CI_Controller
  19. {
  20. public function __construct()
  21. {
  22. parent::__construct();
  23. $this->load->library('excel');
  24. $this->load->model("Xlsexport_model");
  25. }
  26. public function exportDatosCompletos()
  27. {
  28. $licitacionesResult = $this->Xlsexport_model->getLicitaciones();
  29. $result = array();
  30. //$start = $this->starttime();
  31. if ($licitacionesResult['num_rows'] > 0) {
  32. foreach ($licitacionesResult['datos'] as $licitacion) {
  33. $result[$licitacion->id]['licitacion'] = $licitacion;
  34. $result[$licitacion->id]['contract'] = $this->Xlsexport_model->getDatosByTablaAndLicitacion("maestro_contract_folder", $licitacion->id);
  35. $result[$licitacion->id]['locatedParty'] = $this->Xlsexport_model->getDatosByTablaAndLicitacion("maestro_located_contracting_party", $licitacion->id);
  36. $result[$licitacion->id]['party'] = $this->Xlsexport_model->getDatosByTablaAndLicitacion("maestro_party", $licitacion->id);
  37. foreach ($result[$licitacion->id]['party'] as $row) {
  38. $result[$licitacion->id]['partyActivity'] = $this->Xlsexport_model->getDatosRelacionadosByTablaAndLicitacion("maestro_party_party_idenfitication", "id_ajena_party", $row['id']);
  39. }
  40. $result[$licitacion->id]['project'] = $this->Xlsexport_model->getDatosByTablaAndLicitacion("maestro_procurement_project", $licitacion->id);
  41. foreach ($result[$licitacion->id]['project'] as $row) {
  42. $result[$licitacion->id]['projectActivity'] = $this->Xlsexport_model->getDatosRelacionadosByTablaAndLicitacion("maestro_procurement_project_itemClass", "id_ajena_pp", $row['id']);
  43. }
  44. $result[$licitacion->id]['projectLot'] = $this->Xlsexport_model->getDatosByTablaAndLicitacion("maestro_procurement_project_lot", $licitacion->id);
  45. foreach ($result[$licitacion->id]['projectLot'] as $row) {
  46. $result[$licitacion->id]['projectLotActivity'] = $this->Xlsexport_model->getDatosRelacionadosByTablaAndLicitacion("maestro_procurement_project_lot_item", "id_ajena_ppl", $row['id']);
  47. }
  48. $result[$licitacion->id]['tenderResult'] = $this->Xlsexport_model->getDatosByTablaAndLicitacion("maestro_tender_result", $licitacion->id);
  49. $result[$licitacion->id]['tenderProcess'] = $this->Xlsexport_model->getDatosByTablaAndLicitacion("maestro_tendering_process", $licitacion->id);
  50. $result[$licitacion->id]['tenderTerms'] = $this->Xlsexport_model->getDatosByTablaAndLicitacion("maestro_tendering_terms", $licitacion->id);
  51. foreach ($result[$licitacion->id]['tenderTerms'] as $row) {
  52. $result[$licitacion->id]['tenderTermsAwarding'] = $this->Xlsexport_model->getDatosRelacionadosByTablaAndLicitacion("maestro_tendering_terms_awarding_terms", "id_ajena_tt", $row['id']);
  53. $result[$licitacion->id]['tenderTermsFinancial'] = $this->Xlsexport_model->getDatosRelacionadosByTablaAndLicitacion("maestro_tendering_terms_financial_evaluation", "id_ajena_ttfe", $row['id']);
  54. $result[$licitacion->id]['tenderTermsQualification'] = $this->Xlsexport_model->getDatosRelacionadosByTablaAndLicitacion("maestro_tendering_terms_qualification_request", "id_ajena_tt", $row['id']);
  55. $result[$licitacion->id]['tenderTermsSpecific'] = $this->Xlsexport_model->getDatosRelacionadosByTablaAndLicitacion("maestro_tendering_terms_specific_terms", "id_ajena_tt", $row['id']);
  56. }
  57. $result[$licitacion->id]['validNoticeInfo'] = $this->Xlsexport_model->getDatosByTablaAndLicitacion("maestro_valid_notice_info", $licitacion->id);
  58. foreach ($result[$licitacion->id]['validNoticeInfo'] as $row) {
  59. $result[$licitacion->id]['validNoticeInfoDocument'] = $this->Xlsexport_model->getDatosRelacionadosByTablaAndLicitacion("maestro_valid_notice_info_documento", "id_ajena_vni", $row['id']);
  60. $result[$licitacion->id]['validNoticeInfoFecha'] = $this->Xlsexport_model->getDatosRelacionadosByTablaAndLicitacion("maestro_valid_notice_info_fecha", "id_ajena_vni", $row['id']);
  61. }
  62. $result[$licitacion->id]['techDocs'] = $this->Xlsexport_model->getDatosByTablaAndLicitacion("maestro_technical_documents", $licitacion->id);
  63. $result[$licitacion->id]['legalDocs'] = $this->Xlsexport_model->getDatosByTablaAndLicitacion("maestro_legal_documents", $licitacion->id);
  64. $result[$licitacion->id]['generalDocs'] = $this->Xlsexport_model->getDatosByTablaAndLicitacion("maestro_general_documents", $licitacion->id);
  65. $result[$licitacion->id]['additDocs'] = $this->Xlsexport_model->getDatosByTablaAndLicitacion("maestro_additional_documents", $licitacion->id);
  66. }
  67. }
  68. //echo ($this->endtime($start));
  69. //pretty_dump($result);
  70. $objPHPExcel = new PHPExcel();
  71. // El libro activo el cual exportar sera el 0
  72. $filaExcel = 1;
  73. foreach ($result as $dato) {
  74. if ($filaExcel == 1) {
  75. $objPHPExcel = $this->cabecerasOpenPlacspFirstSheet($objPHPExcel);
  76. } else {
  77. $objPHPExcel = $this->datosCompletosHojaLicitacion($objPHPExcel, $dato, $filaExcel);
  78. }
  79. $filaExcel++;
  80. }
  81. /* //Escribimos las cabeceras de cada columna de la bbdd
  82. if ($rowCount == 1) {
  83. $this->cabecerasOpenPlacspFirstSheet($objPHPExcel);
  84. $concesionNombre = $row->concesionNombre;
  85. $codConc = $row->codConc;
  86. $rowCount++;
  87. }
  88. */
  89. $nombreAchivo = 'test.xls';
  90. $ruta = base_url() . 'uploads/' . $nombreAchivo;
  91. // Write the Excel file to filename some_excel_file.xlsx in the current directory
  92. // Redirect output to a client’s web browser (Excel5)
  93. header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
  94. header('Content-Disposition: attachment;filename=' . $nombreAchivo . '');
  95. header('Pragma: cache');
  96. header('Cache-Control: private');
  97. $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
  98. $objWriter->save(FCPATH . 'uploads/' . $nombreAchivo);
  99. $this->output
  100. ->set_content_type('application/json')
  101. ->set_output(json_encode(array("url" => $ruta)));
  102. }
  103. public function starttime()
  104. {
  105. $r = explode(' ', microtime());
  106. $r = $r[1] + $r[0];
  107. return $r;
  108. }
  109. public function endtime($starttime)
  110. {
  111. $r = explode(' ', microtime());
  112. $r = $r[1] + $r[0];
  113. $r = round($r - $starttime, 4);
  114. return '<strong>Execution Time</strong>: ' . $r . ' seconds<br />';
  115. }
  116. private function datosCompletosHojaLicitacion($objPHPExcel, $datosLicitacion, $filaExcel)
  117. {
  118. $objPHPExcel->setActiveSheetIndex(0);
  119. $styleArr = array(
  120. "font" => array(
  121. "bold" => true,
  122. "color" => array("rgb" => "22B9FF"),
  123. "size" => 13,
  124. ),
  125. );
  126. $objPHPExcel->getActiveSheet()->getStyle("A1:AB1")->applyFromArray($styleArr);
  127. //$sharedStyle1->applyFromArray(array('fill' => array('type' => \PHPExcel\Style\Fill::FILL_SOLID, 'color' => array('argb' => 'FFCCFFCC')), 'borders' => array('bottom' => array('style' => \PHPExcel\Style\Border::BORDER_THIN), 'right' => array('style' => \PHPExcel\Style\Border::BORDER_MEDIUM))));
  128. $objPHPExcel->getActiveSheet()->SetCellValue('A' . $filaExcel, $datosLicitacion['licitacion']->id_licitacion);
  129. $objPHPExcel->getActiveSheet()->SetCellValue('B' . $filaExcel, $datosLicitacion['licitacion']->url_id_licitacion);
  130. $objPHPExcel->getActiveSheet()->SetCellValue('C' . $filaExcel, $datosLicitacion['licitacion']->updated);
  131. $objPHPExcel->getActiveSheet()->SetCellValue('D' . $filaExcel, "");
  132. $objPHPExcel->getActiveSheet()->SetCellValue('E' . $filaExcel, "Primera publicación");
  133. $objPHPExcel->getActiveSheet()->SetCellValue('F' . $filaExcel, $datosLicitacion['contract'][0]['contractFolderStatusCode']);
  134. $objPHPExcel->getActiveSheet()->SetCellValue('G' . $filaExcel, $datosLicitacion['contract'][0]['contractFolderID']);
  135. $objPHPExcel->getActiveSheet()->SetCellValue('H' . $filaExcel, $datosLicitacion['project'][0]['name']);
  136. $objPHPExcel->getActiveSheet()->SetCellValue('I' . $filaExcel, $datosLicitacion['project'][0]['estimatedOverallContractAmount']);
  137. $objPHPExcel->getActiveSheet()->SetCellValue('J' . $filaExcel, $datosLicitacion['project'][0]['taxExclusiveAmount']);
  138. $objPHPExcel->getActiveSheet()->SetCellValue('K' . $filaExcel, $datosLicitacion['project'][0]['totalAmount']);
  139. $cpvProject = "";
  140. for ($i = 0; $i < count($datosLicitacion['projectActivity']); $i++) {
  141. $cpvProject .= $datosLicitacion['projectActivity'][$i]['itemClassification_value'] . ";";
  142. }
  143. $cpvParty = "";
  144. //TODO OBtener solo el DIR3
  145. for ($i = 0; $i < count($datosLicitacion['partyActivity']); $i++) {
  146. $cpvParty .= $datosLicitacion['partyActivity'][$i]['idPartyIdent'] . ";";
  147. }
  148. $objPHPExcel->getActiveSheet()->SetCellValue('L' . $filaExcel, $cpvProject);
  149. $objPHPExcel->getActiveSheet()->SetCellValue('M' . $filaExcel, $datosLicitacion['project'][0]['typeCode']);
  150. $objPHPExcel->getActiveSheet()->SetCellValue('N' . $filaExcel, $datosLicitacion['project'][0]['countrySubentityCode'] . " - " . $datosLicitacion['project'][0]['countrySubentity']);
  151. $objPHPExcel->getActiveSheet()->SetCellValue('O' . $filaExcel, $datosLicitacion['party'][0]['partyName']);
  152. $objPHPExcel->getActiveSheet()->SetCellValue('P' . $filaExcel, $datosLicitacion['party'][0]['partyName']);
  153. $objPHPExcel->getActiveSheet()->SetCellValue('Q' . $filaExcel, $datosLicitacion['locatedParty'][0]['contractingPartyTypeCode']);
  154. $objPHPExcel->getActiveSheet()->SetCellValue('R' . $filaExcel, $cpvParty);
  155. $objPHPExcel->getActiveSheet()->SetCellValue('S' . $filaExcel, $datosLicitacion['locatedParty'][0]['buyerProfileURIID']);
  156. $objPHPExcel->getActiveSheet()->SetCellValue('T' . $filaExcel, $datosLicitacion['locatedParty'][0]['contractingPartyTypeCode']);
  157. $objPHPExcel->getActiveSheet()->SetCellValue('U' . $filaExcel, $datosLicitacion['party'][0]['codpostal']);
  158. $objPHPExcel->getActiveSheet()->SetCellValue('V' . $filaExcel, $datosLicitacion['tenderProcess'][0]['procedureCode']);
  159. $objPHPExcel->getActiveSheet()->SetCellValue('W' . $filaExcel, $datosLicitacion['tenderProcess'][0]['contractingSystemCode']);
  160. $objPHPExcel->getActiveSheet()->SetCellValue('X' . $filaExcel, $datosLicitacion['tenderProcess'][0]['urgencyCode']);
  161. $objPHPExcel->getActiveSheet()->SetCellValue('Y' . $filaExcel, $datosLicitacion['tenderProcess'][0]['submissionMethodCode']);
  162. $objPHPExcel->getActiveSheet()->SetCellValue('Z' . $filaExcel, $datosLicitacion['tenderTerms'][0]['procurementLegislationDocumentReference']);
  163. $objPHPExcel->getActiveSheet()->SetCellValue('AA' . $filaExcel, $datosLicitacion['tenderTerms'][0]['allowedSubcontractTerms']);
  164. $objPHPExcel->getActiveSheet()->SetCellValue('AB' . $filaExcel, "");
  165. return $objPHPExcel;
  166. }
  167. private function datosCompletosHojaBitacora($objPHPExcel, $datosLicitacion)
  168. {
  169. }
  170. private function datosCompletosDocumentosGenerales($objPHPExcel)
  171. {
  172. }
  173. private function datosCompletosDocumentosAdicionales($objPHPExcel)
  174. {
  175. }
  176. private function datosCompletosDocumentosTecnicos($objPHPExcel)
  177. {
  178. }
  179. private function datosCompletosDocumentosLegales($objPHPExcel)
  180. {
  181. }
  182. private function cabecerasOpenPlacspFirstSheet($objPHPExcel)
  183. {
  184. $objPHPExcel->getActiveSheet()->SetCellValue('A1', "Identificador");
  185. $objPHPExcel->getActiveSheet()->SetCellValue('B1', "Link licitación");
  186. $objPHPExcel->getActiveSheet()->SetCellValue('C1', "Fecha actualización");
  187. $objPHPExcel->getActiveSheet()->SetCellValue('D1', "Vigente/Anulada/Archivada");
  188. $objPHPExcel->getActiveSheet()->SetCellValue('E1', "Primera publicación");
  189. $objPHPExcel->getActiveSheet()->SetCellValue('F1', "Estado");
  190. $objPHPExcel->getActiveSheet()->SetCellValue('G1', "Número de expediente");
  191. $objPHPExcel->getActiveSheet()->SetCellValue('H1', "Objeto del Contrato");
  192. $objPHPExcel->getActiveSheet()->SetCellValue('I1', "Valor estimado del contrato");
  193. $objPHPExcel->getActiveSheet()->SetCellValue('J1', "Presupuesto base sin impuestos");
  194. $objPHPExcel->getActiveSheet()->SetCellValue('K1', "Presupuesto base con impuestos");
  195. $objPHPExcel->getActiveSheet()->SetCellValue('L1', "CPV");
  196. $objPHPExcel->getActiveSheet()->SetCellValue('M1', "Tipo de contrato");
  197. $objPHPExcel->getActiveSheet()->SetCellValue('N1', "Lugar de ejecución");
  198. $objPHPExcel->getActiveSheet()->SetCellValue('O1', "Órgano de Contratación");
  199. $objPHPExcel->getActiveSheet()->SetCellValue('P1', "ID OC en PLACSP");
  200. $objPHPExcel->getActiveSheet()->SetCellValue('Q1', "NIF OC");
  201. $objPHPExcel->getActiveSheet()->SetCellValue('R1', "DIR3");
  202. $objPHPExcel->getActiveSheet()->SetCellValue('S1', "Enlace al Perfil de Contratante del OC");
  203. $objPHPExcel->getActiveSheet()->SetCellValue('T1', "Tipo de Administración");
  204. $objPHPExcel->getActiveSheet()->SetCellValue('U1', "Código Postal");
  205. $objPHPExcel->getActiveSheet()->SetCellValue('V1', "Tipo de procedimiento");
  206. $objPHPExcel->getActiveSheet()->SetCellValue('W1', "Sistema de contratación");
  207. $objPHPExcel->getActiveSheet()->SetCellValue('X1', "Tramitación");
  208. $objPHPExcel->getActiveSheet()->SetCellValue('Y1', "Forma de presentación de la oferta");
  209. $objPHPExcel->getActiveSheet()->SetCellValue('Z1', "Directiva de aplicación");
  210. $objPHPExcel->getActiveSheet()->SetCellValue('AA1', "Subcontratación permitida");
  211. $objPHPExcel->getActiveSheet()->SetCellValue('AB1', "Subcontratación permitida porcentaje");
  212. return $objPHPExcel;
  213. }
  214. }
  215. /* End of file ExportXls.php */
  216. /* Location: ./application/controllers/ExportXls.php */