Bläddra i källkod

Mas cambios para insercion masiva y ajustar a xmlsimpleelement->array

Nermosis 3 år sedan
förälder
incheckning
02e9379165

+ 23 - 19
application/controllers/Parser.php Visa fil

@@ -24,39 +24,43 @@ class Parser extends CI_Controller
24 24
 
25 25
     public function index()
26 26
     {
27
-        $existCronRun = $this->Parser_model->existCronRun();
27
+        /*$existCronRun = $this->Parser_model->existCronRun();
28 28
 
29 29
         if ($existCronRun['num_rows'] > 0) {
30
-            if ($existCronRun['datos']->cron_ejecucion == 0) {
30
+        if ($existCronRun['datos']->cron_ejecucion == 0) {
31 31
 
32
-                $this->Parser_model->inicioParser();
32
+        $this->Parser_model->inicioParser();
33 33
 
34
-                $resultSetPerfiles = $this->Parser_model->getUrlArchivos();
34
+        $resultSetPerfiles = $this->Parser_model->getUrlArchivos();
35 35
 
36
-                foreach ($resultSetPerfiles['datos'] as $row) {
37
-                    $fechaCarpeta = date("Y-m-d_H-i-s");
38
-                    $rutaPerfil = $this->rutaDiaria . "/" . $row->prefijos_tablas;
36
+        foreach ($resultSetPerfiles['datos'] as $row) {
37
+        $fechaCarpeta = date("Y-m-d_H-i-s");
38
+        $rutaPerfil = $this->rutaDiaria . "/" . $row->prefijos_tablas;
39 39
 
40
-                    $this->newFolder($rutaPerfil);
40
+        $this->newFolder($rutaPerfil);
41 41
 
42
-                    if ($this->newFolder($rutaPerfil . "/" . $fechaCarpeta)) {
43
-                        $this->rutaDiariaFecha = $rutaPerfil . "/" . $fechaCarpeta . "/";
42
+        if ($this->newFolder($rutaPerfil . "/" . $fechaCarpeta)) {
43
+        $this->rutaDiariaFecha = $rutaPerfil . "/" . $fechaCarpeta . "/";
44 44
 
45
-                        $this->downloadProcess($row->url_descarga);
45
+        $this->downloadProcess($row->url_descarga);
46 46
 
47
-                        $this->parserfile->index($this->rutaDiariaFecha, $fechaCarpeta, $row);
48
-                    }
49
-                }
47
+        $this->parserfile->index($this->rutaDiariaFecha, $fechaCarpeta, $row);
48
+        }
49
+        }
50 50
 
51
-            } else {
52
-                echo "EXISTE UN CRON EN MARCHA.";
53
-            }
54 51
         } else {
55
-            echo "No existe parametro que iniciar.";
52
+        echo "EXISTE UN CRON EN MARCHA.";
53
+        }
54
+        } else {
55
+        echo "No existe parametro que iniciar.";
56 56
         }
57 57
 
58 58
         $this->Parser_model->stopParser();
59
-
59
+         */
60
+        $resultSetPerfiles = $this->Parser_model->getUrlArchivos();
61
+        foreach ($resultSetPerfiles['datos'] as $row) {
62
+            $this->parserfile->index($this->rutaDiaria . "PER_PCSP_EX/2022-02-10_09-02-17", date("Y-m-n"), $row);
63
+        }
60 64
     }
61 65
 
62 66
     private function downloadProcess($urlXML)

+ 95 - 17
application/libraries/ParserDatabaseBruto.php Visa fil

@@ -28,10 +28,12 @@ class ParserDatabaseBruto
28 28
 
29 29
                 $this->setDatosMultiples($datosArchivo, "contractInfo", "BRUTO_contract_folder", "ContractInfo");
30 30
 
31
-                $this->setDatosMultiples($datosArchivo, "tenderingProcess", "BRUTO_tendering_process", "TenderingProcess");
31
+                $this->setDocumentosSingle($datosArchivo, "tenderingProcess", ["BRUTO_tendering_process", "mapa_nivel_tendering_process"], "TenderingProcess");
32 32
 
33 33
                 $this->setProcurementProjectArray($datosArchivo);
34 34
 
35
+                $this->setProcurementProjectLotArray($datosArchivo);
36
+
35 37
                 /*$this->setDatosMultiples($datosArchivo, "tenderingTerms", "bruto_tendering_terms", "TenderingTerms");
36 38
 
37 39
                 $this->setDatosMultiples($datosArchivo['tenderingTerms'], 1, "bruto_tendering_terms", "TenderingTerms");
@@ -50,17 +52,17 @@ class ParserDatabaseBruto
50 52
 
51 53
                 $this->setDatosMultiples($datosArchivo['validNoticeInfo'], "documento", "BRUTO_valid_notice_info_documento", "validNoticeInfoDocumento");
52 54
 
53
-                $this->setDatosMultiples($datosArchivo['validNoticeInfo'], "fechas", "BRUTO_valid_notice_info_fecha", "validNoticeInfoFechas");
55
+                $this->setDatosMultiples($datosArchivo['validNoticeInfo'], "fechas", "BRUTO_valid_notice_info_fecha", "validNoticeInfoFechas");*/
54 56
 
55
-                $this->setDatosMultiples($datosArchivo, "tenderingResult", "BRUTO_tender_result", "TenderResult");*/
57
+                $this->setInsertArryByArray($datosArchivo, "tenderingResult", ["BRUTO_tender_result", "mapa_nivel_tender_result"], "TenderResult");
56 58
 
57
-                $this->setDocumentos($datosArchivo, "legalDocs", ["BRUTO_legal_documents", "mapa_nivel_legal_docs"], "legalDocs");
59
+                $this->setDocumentosSingle($datosArchivo, "legalDocs", ["BRUTO_legal_documents", "mapa_nivel_legal_docs"], "legalDocs");
58 60
 
59
-                $this->setDocumentos($datosArchivo, "technicalDocs", ["BRUTO_technical_documents", "mapa_nivel_technical_docs"], "TechnicalDocs");
61
+                $this->setDocumentosSingle($datosArchivo, "technicalDocs", ["BRUTO_technical_documents", "mapa_nivel_technical_docs"], "TechnicalDocs");
60 62
 
61
-                $this->setDocumentos($datosArchivo, "generalDocs", ["BRUTO_general_documents", "mapa_nivel_general_docs"], "GeneralDocs");
63
+                $this->setInsertArryByArray($datosArchivo, "generalDocs", ["BRUTO_general_documents", "mapa_nivel_general_docs"], "GeneralDocs");
62 64
 
63
-                $this->setDocumentos($datosArchivo, "additionalDocs", ["BRUTO_additional_documents", "mapa_nivel_additional_docs"], "additionalDocs");
65
+                $this->setInsertArryByArray($datosArchivo, "additionalDocs", ["BRUTO_additional_documents", "mapa_nivel_additional_docs"], "additionalDocs");
64 66
             }
65 67
         }
66 68
 
@@ -104,6 +106,48 @@ class ParserDatabaseBruto
104 106
         $this->setDatosMultiples($result, "itemClass", "bruto_procurement_project_itemclass", "ProcurementProject_ItemClass");
105 107
     }
106 108
 
109
+    private function setProcurementProjectLotArray($datosToSet)
110
+    {
111
+        $result = array();
112
+        $coleccionMapa = array();
113
+        $countColeccion = 0;
114
+        $mapaDatos = $this->CI->Parser_model->getMapaByTabla("mapa_nivel_procurement_project_lot");
115
+
116
+        foreach ($mapaDatos['datos'] as $dataField) {
117
+            $coleccionMapa[] = $dataField->campo_bbdd;
118
+        }
119
+        $countColeccion = count($coleccionMapa);
120
+
121
+        foreach ($datosToSet['procurementProjectLot'] as $rowData) {
122
+            if ($rowData != null) {
123
+
124
+                foreach ($rowData['lot'] as $loteIndividual) {
125
+                    $procurementProjectLot = $loteIndividual;
126
+                    if ($countColeccion > count($procurementProjectLot)) {
127
+                        foreach ($coleccionMapa as $dataField) {
128
+                            if (!array_key_exists($dataField, $procurementProjectLot)) {
129
+                                $procurementProjectLot[$dataField] = "";
130
+                            }
131
+                        }
132
+                    }
133
+                    $result['procurementProjectLot'][] = $procurementProjectLot;
134
+                }
135
+
136
+                if (array_key_exists('itemClassification', $rowData)) {
137
+                    foreach ($rowData['itemClassification'] as $itemClass) {
138
+                        $result['itemClassification'][] = $itemClass;
139
+                    }
140
+                }
141
+
142
+            }
143
+
144
+        }
145
+
146
+        $this->setDatosMultiples($result, "procurementProjectLot", "bruto_procurement_project_lot", "procurementProjectLot");
147
+
148
+        $this->setDatosMultiples($result, "itemClassification", "bruto_procurement_project_lot_item", "procurementProjectLot_itemClassification");
149
+    }
150
+
107 151
     private function setLocatedContractingParty($datosToSet)
108 152
     {
109 153
         $result = array();
@@ -178,7 +222,7 @@ class ParserDatabaseBruto
178 222
         $this->setDatosMultiples($result, "partyIdentification", "bruto_party_party_idenfitication", "Party_PartyIdentification");
179 223
     }
180 224
 
181
-    private function setDocumentos($datosToSet, $arrayKey, $tablasMapa, $nombreLog)
225
+    private function setDocumentosSingle($datosToSet, $arrayKey, $tablasMapa, $nombreLog)
182 226
     {
183 227
         if (array_key_exists($arrayKey, $datosToSet)) {
184 228
             $result = array();
@@ -189,19 +233,53 @@ class ParserDatabaseBruto
189 233
             foreach ($mapaDatos['datos'] as $dataField) {
190 234
                 $coleccionMapa[] = $dataField->campo_bbdd;
191 235
             }
192
-
236
+            $countColeccion = count($coleccionMapa);
193 237
             foreach ($datosToSet[$arrayKey] as $rowData) {
238
+                if ($rowData != null) {
239
+                    if ($countColeccion > count($rowData)) {
240
+                        foreach ($coleccionMapa as $dataField) {
241
+                            if (!array_key_exists($dataField, $rowData)) {
242
+                                $resultFinal[$dataField] = "";
243
+                            }
244
+                        }
245
+                    }
194 246
 
195
-                /* if ($countColeccion > count($resultFinal)) {
196
-                foreach ($coleccionMapa as $dataField) {
197
-                if (!array_key_exists($dataField, $resultFinal)) {
198
-                $resultFinal[$dataField] = "";
247
+                    $result[$arrayKey][] = $rowData;
199 248
                 }
200
-                }
201
-                } */
249
+            }
250
+
251
+            $this->setDatosMultiples($result, $arrayKey, $tablasMapa[0], $nombreLog);
252
+        }
253
+
254
+    }
202 255
 
203
-                foreach ($rowData as $documento) {
204
-                    $result[$arrayKey][] = $documento;
256
+    private function setInsertArryByArray($datosToSet, $arrayKey, $tablasMapa, $nombreLog)
257
+    {
258
+        if (array_key_exists($arrayKey, $datosToSet)) {
259
+            $result = array();
260
+            $coleccionMapa = array();
261
+            $countColeccion = 0;
262
+            $mapaDatos = $this->CI->Parser_model->getMapaByTabla($tablasMapa[1]);
263
+
264
+            foreach ($mapaDatos['datos'] as $dataField) {
265
+                $coleccionMapa[] = $dataField->campo_bbdd;
266
+            }
267
+            $countColeccion = count($coleccionMapa);
268
+            foreach ($datosToSet[$arrayKey] as $rowData) {
269
+
270
+                if ($rowData !== null) {
271
+                    foreach ($rowData as $documento) {
272
+
273
+                        $aux = $documento;
274
+                        if ($countColeccion > count($documento)) {
275
+                            foreach ($coleccionMapa as $dataField) {
276
+                                if (!array_key_exists($dataField, $documento)) {
277
+                                    $aux[$dataField] = "";
278
+                                }
279
+                            }
280
+                        }
281
+                        $result[$arrayKey][] = $aux;
282
+                    }
205 283
                 }
206 284
 
207 285
             }

+ 225 - 183
application/libraries/ParserFile.php Visa fil

@@ -1,6 +1,6 @@
1 1
 <?php
2 2
 defined('BASEPATH') or exit('No direct script access allowed');
3
-
3
+error_reporting(E_ALL & ~E_NOTICE);
4 4
 class ParserFile
5 5
 {
6 6
 
@@ -57,13 +57,13 @@ class ParserFile
57 57
 
58 58
                 $resultEntries[$filename]['procurementProjectLot'][$aux] = $this->nodoProcurementProjectLot($row);
59 59
 
60
-                //$resultEntries[$filename]['tenderingTerms'][$aux] = $this->nodoTenderingTerms($row);
60
+                $resultEntries[$filename]['tenderingTerms'][$aux] = $this->nodoTenderingTerms($row);
61 61
 
62
-                //$resultEntries[$filename]['tenderingProcess'][$aux] = $this->nodoTenderingProcess($row);
62
+                $resultEntries[$filename]['tenderingProcess'][$aux] = $this->nodoTenderingProcess($row);
63 63
 
64
-                //$resultEntries[$filename]['tenderingResult'][$aux] = $this->nodoTenderResult($row);
64
+                $resultEntries[$filename]['tenderingResult'][$aux] = $this->nodoTenderResult($row);
65 65
 
66
-                $resultEntries[$filename]['validNoticeInfo'][$aux] = $this->nodoValidNoticeInfo($row);
66
+                //$resultEntries[$filename]['validNoticeInfo'][$aux] = $this->nodoValidNoticeInfo($row);
67 67
 
68 68
                 $resultEntries[$filename]['legalDocs'][$aux] = $this->nodoLegalDoc($row);
69 69
 
@@ -129,6 +129,9 @@ class ParserFile
129 129
 
130 130
             if (array_key_exists("ActivityCode", $xml['ContractFolderStatus']['LocatedContractingParty'])) {
131 131
                 $activity = $xml['ContractFolderStatus']['LocatedContractingParty']['ActivityCode'];
132
+                if (!is_array($activity)) {
133
+                    $activity = array(0 => $activity);
134
+                }
132 135
                 for ($i = 0; $i < count($activity); $i++) {
133 136
                     $resultEntries['activity'][$i]['activityCode'] = (string) $activity[$i];
134 137
                     //$resultEntries['activity'][$i]['activityCodeUri'] = (string) $activity[$i]->attributes()['listURI'];
@@ -197,6 +200,14 @@ class ParserFile
197 200
             }
198 201
 
199 202
             if (array_key_exists("RequiredCommodityClassification", $procurementProject)) {
203
+                $firstKey = array_key_first($procurementProject['RequiredCommodityClassification']);
204
+                if ($this->idLicitacion == "8815986") {
205
+                    $var = 1;
206
+                }
207
+                if ($firstKey === "ItemClassificationCode") {
208
+                    $procurementProject['RequiredCommodityClassification'] = array(0 => $procurementProject['RequiredCommodityClassification']);
209
+                }
210
+
200 211
                 for ($i = 0; $i < count($procurementProject['RequiredCommodityClassification']); $i++) {
201 212
                     $resultEntries['itemClass'][$i]['itemClassification_value'] = $this->existNodo($procurementProject['RequiredCommodityClassification'][$i], 'ItemClassificationCode', 'string');
202 213
                     //$resultEntries['itemClass'][$i]['itemClassification_attr'] = (string) $procurementProject['RequiredCommodityClassification'][$i]['ItemClassificationCode']['listURI'];
@@ -222,9 +233,11 @@ class ParserFile
222 233
             $resultEntries['budget']['durationMesure'] = $this->existNodo($procurementProject['PlannedPeriod'], 'DurationMeasure', 'string');
223 234
             $resultEntries['budget']['duracion_inicio'] = $this->existNodo($procurementProject['PlannedPeriod'], 'StartDate', 'string');
224 235
             $resultEntries['budget']['duracion_fin'] = $this->existNodo($procurementProject['PlannedPeriod'], 'EndDate', 'string');
225
-            $resultEntries['budget']['medida'] = $this->existAttribute($procurementProject['PlannedPeriod'], "DurationMeasure", "string", 'unitCode');
236
+            //$resultEntries['budget']['medida'] = $this->existAttribute($procurementProject['PlannedPeriod'], "DurationMeasure", "string", 'unitCode');
226 237
 
227
-            $resultEntries['budget']['contractExtension'] = $this->existNodo($procurementProject['ContractExtension'], 'OptionsDescription', 'string');
238
+            if (array_key_exists("ContractExtension", $procurementProject)) {
239
+                $resultEntries['budget']['contractExtension'] = $this->existNodo($procurementProject['ContractExtension'], 'OptionsDescription', 'string');
240
+            }
228 241
         }
229 242
 
230 243
         return $resultEntries;
@@ -235,6 +248,11 @@ class ParserFile
235 248
         $resultEntries = array();
236 249
         if (array_key_exists("ProcurementProjectLot", $xml['ContractFolderStatus'])) {
237 250
             $procurementProjectLot = $xml['ContractFolderStatus']['ProcurementProjectLot'];
251
+            $firstKey = array_key_first($procurementProjectLot);
252
+
253
+            if ($firstKey !== 0) {
254
+                $procurementProjectLot = array(0 => $procurementProjectLot);
255
+            }
238 256
             for ($i = 0; $i < count($procurementProjectLot); $i++) {
239 257
                 $resultEntries["lot"][$i]['idProcurementLot'] = $this->existNodo($procurementProjectLot[$i], 'ID', 'string');
240 258
                 $resultEntries["lot"][$i]['name'] = $this->existNodo($procurementProjectLot[$i]['ProcurementProject'], 'Name', 'string');
@@ -243,181 +261,191 @@ class ParserFile
243 261
                 $resultEntries["lot"][$i]['id_ajena_licitacion'] = $this->idLicitacion;
244 262
                 $resultEntries["lot"][$i]['id_compuesta'] = $this->idLicitacion . "_05_" . $i;
245 263
 
246
-                if (array_key_exists("RequiredCommodityClassification", $xml['ContractFolderStatus']['ProcurementProject'])) {
247
-                    $clasificacionItems = $xml['ContractFolderStatus']['ProcurementProjectLot']['RequiredCommodityClassification'];
248
-                    for ($j = 0; $j < count($clasificacionItems); $j++) {
249
-                        $resultEntries['itemClassification'][$i][$j]['idItem'] = $this->existNodo($clasificacionItems[$j], "ItemClassificationCode", "string");
250
-                        //$resultEntries["itemClassification"][$i]['itemClassification'][$j]['id_attr'] = $this->existAttribute($clasificacionItems[$j], "ItemClassificationCode", "string", 'listURI');
251
-                        $resultEntries["itemClassification"][$i]['id_ajena_licitacion'] = $this->idLicitacion;
252
-                        $resultEntries["itemClassification"][$i]['id_compuesta'] = $this->idLicitacion . "_05_" . $i . "_" . $j;
253
-                    }
254
-                }
255
-
256
-                if (array_key_exists("RealizedLocation", $xml['ContractFolderStatus']['ProcurementProject'])) {
264
+                if (array_key_exists("RealizedLocation", $procurementProjectLot[$i]['ProcurementProject'])) {
257 265
                     $resultEntries["lot"][$i]['countrySubentity'] = $this->existNodo($procurementProjectLot[$i]['ProcurementProject']['RealizedLocation'], 'CountrySubentity', 'string');
258 266
                     $resultEntries["lot"][$i]['countrySubentityCode'] = $this->existNodo($procurementProjectLot[$i]['ProcurementProject']['RealizedLocation'], 'CountrySubentityCode', 'string');
259 267
                     $resultEntries["lot"][$i]['identificationCode'] = $this->existNodo($procurementProjectLot[$i]['ProcurementProject']['RealizedLocation']['Address']['Country'], 'IdentificationCode', 'string');
260 268
                     $resultEntries["lot"][$i]['nameLocation'] = $this->existNodo($procurementProjectLot[$i]['ProcurementProject']['RealizedLocation']['Address']['Country'], 'Name', 'string');
269
+
270
+                    if (array_key_exists("RequiredCommodityClassification", $procurementProjectLot[$i]['ProcurementProject'])) {
271
+                        $clasificacionItems = $procurementProjectLot[$i]['ProcurementProject']['RequiredCommodityClassification'];
272
+                        $firstKey = array_key_first($clasificacionItems);
273
+                        if ($firstKey !== 0) {
274
+                            $clasificacionItems = array(0 => $clasificacionItems);
275
+                        }
276
+                        for ($j = 0; $j < count($clasificacionItems); $j++) {
277
+
278
+                            $resultEntries['itemClassification'][] = array(
279
+                                "idItem" => $this->existNodo($clasificacionItems[$j], "ItemClassificationCode", "string"),
280
+                                "id_ajena_licitacion" => $this->idLicitacion,
281
+                                "id_compuesta" => $this->idLicitacion . "_05_" . $i . "_" . $j,
282
+                                //$resultEntries["itemClassification"][$i]['itemClassification'][$j]['id_attr'] = $this->existAttribute($clasificacionItems[$j], "ItemClassificationCode", "string", 'listURI');
283
+                            );
284
+                        }
285
+                    }
261 286
                 }
262 287
             }
263 288
         }
264
-        $resultFinal = $this->array_remove_empty($resultEntries);
265
-        return $resultFinal;
289
+
290
+        return $resultEntries;
266 291
     }
267 292
 
268
-    /*private function nodoTenderResult($xml)
293
+    private function nodoTenderResult($xml)
269 294
     {
270
-    $resultEntries = array();
271
-    $tenderResult = $xml->ContractFolderStatus->TenderResult;
272
-    for ($i = 0; $i < count($tenderResult); $i++) {
273
-    $resultEntries[$i]['id_ajena_licitacion'] = $this->idLicitacion;
274
-    $resultEntries[$i]['id_compuesta'] = $this->idLicitacion . "_06_" . $i;
275
-    $resultEntries[$i]['resultCode'] = $this->existNodo($tenderResult[$i], 'ResultCode', 'string');
276
-    $resultEntries[$i]['description'] = $this->existNodo($tenderResult[$i], 'Description', 'string');
277
-    $resultEntries[$i]['awardDate'] = $this->existNodo($tenderResult[$i], 'AwardDate', 'string');
278
-    $resultEntries[$i]['receivedTenderQuantity'] = $this->existNodo($tenderResult[$i], 'ReceivedTenderQuantity', 'string');
279
-    $resultEntries[$i]['lowerTenderAmount'] = $this->existNodo($tenderResult[$i], 'LowerTenderAmount', 'string');
280
-    $resultEntries[$i]['higherTenderAmount'] = $this->existNodo($tenderResult[$i], 'HigherTenderAmount', 'string');
281
-    $resultEntries[$i]['startDate'] = $this->existNodo($tenderResult[$i], 'StartDate', 'string');
282
-    $resultEntries[$i]['smeawardedIndicator'] = $this->existNodo($tenderResult[$i], 'SMEAwardedIndicator', 'string');
283
-    //AwardedTenderedProject
284
-    $resultEntries[$i]['contract_id'] = $this->existNodo($tenderResult[$i]->Contract, 'ID', 'string');
285
-    $resultEntries[$i]['contract_issueDate'] = $this->existNodo($tenderResult[$i]->Contract, 'IssueDate', 'string');
286
-
287
-    $winningParty = $tenderResult[$i]->WinningParty;
288
-    if (isset($winningParty)) {
289
-    $resultEntries[$i]['partyIdentification'] = $this->existNodo($winningParty->PartyIdentification, 'ID', 'string');
290
-    $resultEntries[$i]['partyName'] = $this->existNodo($winningParty->PartyName, 'Name', 'string');
291
-    }
292
-    $awardedTenderedProject = $tenderResult[$i]->AwardedTenderedProject;
293
-    if (isset($awardedTenderedProject)) {
294
-    $resultEntries[$i]['procurementProjectLotID'] = $this->existNodo($awardedTenderedProject, 'ProcurementProjectLotID', 'string');
295
-    $resultEntries[$i]['TaxExclusiveAmount'] = $this->existNodo($awardedTenderedProject->LegalMonetaryTotal, 'TaxExclusiveAmount', 'string');
296
-    $resultEntries[$i]['PayableAmount'] = $this->existNodo($awardedTenderedProject->LegalMonetaryTotal, 'PayableAmount', 'string');
297
-    }
298
-    }
299
-    //$resultFinal = $this->array_remove_empty($resultEntries);
300
-    $resultFinal = $this->checkArrayValuesEmpty($resultEntries);
301
-    return $resultFinal;
295
+        $resultEntries = array();
296
+        if (array_key_exists("TenderResult", $xml['ContractFolderStatus'])) {
297
+            $tenderResult = $xml['ContractFolderStatus']['TenderResult'];
298
+            $firstKey = array_key_first($tenderResult);
299
+            if ($firstKey !== 0) {
300
+                $tenderResult = array(0 => $tenderResult);
301
+            }
302
+            for ($i = 0; $i < count($tenderResult); $i++) {
303
+                $resultEntries[$i]['id_ajena_licitacion'] = $this->idLicitacion;
304
+                $resultEntries[$i]['id_compuesta'] = $this->idLicitacion . "_06_" . $i;
305
+                $resultEntries[$i]['resultCode'] = $this->existNodo($tenderResult[$i], 'ResultCode', 'string');
306
+                $resultEntries[$i]['description'] = $this->existNodo($tenderResult[$i], 'Description', 'string');
307
+                $resultEntries[$i]['awardDate'] = $this->existNodo($tenderResult[$i], 'AwardDate', 'string');
308
+                $resultEntries[$i]['receivedTenderQuantity'] = $this->existNodo($tenderResult[$i], 'ReceivedTenderQuantity', 'string');
309
+                $resultEntries[$i]['lowerTenderAmount'] = $this->existNodo($tenderResult[$i], 'LowerTenderAmount', 'string');
310
+                $resultEntries[$i]['higherTenderAmount'] = $this->existNodo($tenderResult[$i], 'HigherTenderAmount', 'string');
311
+                $resultEntries[$i]['startDate'] = $this->existNodo($tenderResult[$i], 'StartDate', 'string');
312
+                $resultEntries[$i]['smeawardedIndicator'] = $this->existNodo($tenderResult[$i], 'SMEAwardedIndicator', 'string');
313
+                //AwardedTenderedProject
314
+                $resultEntries[$i]['contract_id'] = $this->existNodo($tenderResult[$i]->Contract, 'ID', 'string');
315
+                $resultEntries[$i]['contract_issueDate'] = $this->existNodo($tenderResult[$i]->Contract, 'IssueDate', 'string');
316
+
317
+                if (array_key_exists("WinningParty", $tenderResult[$i])) {
318
+                    $winningParty = $tenderResult[$i]['WinningParty'];
319
+                    $resultEntries[$i]['partyIdentification'] = $this->existNodo($winningParty->PartyIdentification, 'ID', 'string');
320
+                    $resultEntries[$i]['partyName'] = $this->existNodo($winningParty->PartyName, 'Name', 'string');
321
+                }
322
+                if (array_key_exists("AwardedTenderedProject", $tenderResult[$i])) {
323
+                    $awardedTenderedProject = $tenderResult[$i]['AwardedTenderedProject'];
324
+                    $resultEntries[$i]['procurementProjectLotID'] = $this->existNodo($awardedTenderedProject, 'ProcurementProjectLotID', 'string');
325
+                    $resultEntries[$i]['TaxExclusiveAmount'] = $this->existNodo($awardedTenderedProject->LegalMonetaryTotal, 'TaxExclusiveAmount', 'string');
326
+                    $resultEntries[$i]['PayableAmount'] = $this->existNodo($awardedTenderedProject->LegalMonetaryTotal, 'PayableAmount', 'string');
327
+                }
328
+            }
329
+        }
330
+
331
+        //$resultFinal = $this->array_remove_empty($resultEntries);
332
+        $resultFinal = $this->checkArrayValuesEmpty($resultEntries);
333
+        return $resultFinal;
302 334
     }
303 335
 
304 336
     private function nodoTenderingTerms($xml)
305 337
     {
306
-    $resultEntries = array();
307
-    $TenderingTerms = $xml->ContractFolderStatus->TenderingTerms;
308
-
309
-    if (isset($TenderingTerms)) {
310
-
311
-    $resultEntries[0]['requiredCurriculaIndicator'] = $this->existNodo($TenderingTerms, 'RequiredCurriculaIndicator', 'string');
312
-    $resultEntries[0]['variantConstraintIndicator'] = $this->existNodo($TenderingTerms, 'VariantConstraintIndicator', 'string');
313
-    $resultEntries[0]['fundingProgramCode'] = $this->existNodo($TenderingTerms, 'FundingProgramCode', 'string');
314
-    $resultEntries[0]['id_ajena_licitacion'] = $this->idLicitacion;
315
-    $resultEntries[0]['id_compuesta'] = $this->idLicitacion . "_07";
316
-    if (isset($TenderingTerms->RequiredFinancialGuarantee->GuaranteeTypeCode)) {
317
-    $resultEntries[0]['guaranteeTypeCode'] = $this->existNodo($TenderingTerms->RequiredFinancialGuarantee, 'GuaranteeTypeCode', 'string');
318
-    $resultEntries[0]['guaranteeTypeCode_attr'] = $this->existAttribute($TenderingTerms->RequiredFinancialGuarantee, "GuaranteeTypeCode", "string", 'listURI');
319
-    $resultEntries[0]['requiredFinancialGuarantee_Amount'] = $this->existNodo($TenderingTerms->RequiredFinancialGuarantee, 'AmountRate', 'string');
320
-    }
338
+        $resultEntries = array();
339
+        if (array_key_exists("TenderingTerms", $xml['ContractFolderStatus'])) {
340
+            $TenderingTerms = $xml['ContractFolderStatus']['TenderingTerms'];
341
+
342
+            $resultEntries[0]['requiredCurriculaIndicator'] = $this->existNodo($TenderingTerms, 'RequiredCurriculaIndicator', 'string');
343
+            $resultEntries[0]['variantConstraintIndicator'] = $this->existNodo($TenderingTerms, 'VariantConstraintIndicator', 'string');
344
+            $resultEntries[0]['fundingProgramCode'] = $this->existNodo($TenderingTerms, 'FundingProgramCode', 'string');
345
+            $resultEntries[0]['id_ajena_licitacion'] = $this->idLicitacion;
346
+            $resultEntries[0]['id_compuesta'] = $this->idLicitacion . "_07";
347
+
348
+            if (array_key_exists("RequiredFinancialGuarantee", $TenderingTerms)) {
349
+                $resultEntries[0]['guaranteeTypeCode'] = $this->existNodo($TenderingTerms['RequiredFinancialGuarantee'], 'GuaranteeTypeCode', 'string');
350
+                $resultEntries[0]['guaranteeTypeCode_attr'] = $this->existAttribute($TenderingTerms['RequiredFinancialGuarantee'], "GuaranteeTypeCode", "string", 'listURI');
351
+                $resultEntries[0]['requiredFinancialGuarantee_Amount'] = $this->existNodo($TenderingTerms['RequiredFinancialGuarantee'], 'AmountRate', 'string');
352
+            }
321 353
 
322
-    $resultEntries[0]['procurementLegislationDocumentReference'] = $this->existNodo($TenderingTerms->ProcurementLegislationDocumentReference, 'ID', 'string');
323
-    $resultEntries[0]['allowedSubcontractTerms'] = $this->existNodo($TenderingTerms->AllowedSubcontractTerms, 'Description', 'string');
354
+            $resultEntries[0]['procurementLegislationDocumentReference'] = $this->existNodo($TenderingTerms['ProcurementLegislationDocumentReference'], 'ID', 'string');
355
+            $resultEntries[0]['allowedSubcontractTerms'] = $this->existNodo($TenderingTerms['AllowedSubcontractTerms'], 'Description', 'string');
324 356
 
325
-    $tendererAwardingTerms = $TenderingTerms->AwardingTerms;
326
-    if (isset($tendererAwardingTerms) && !empty($tendererAwardingTerms)) {
327
-    for ($i = 0; $i < count($tendererAwardingTerms->AwardingCriteria); $i++) {
328
-    $resultEntries[1][$i]['evaluationCriteriaTypeCode'] = $this->existNodo($tendererAwardingTerms[$i], 'Description', 'string');
329
-    $resultEntries[1][$i]['description'] = $this->existNodo($tendererAwardingTerms[$i], 'WeightNumeric', 'string');
330
-    $resultEntries[1][$i]['id_ajena_licitacion'] = $this->idLicitacion;
331
-    $resultEntries[1][$i]['id_compuesta'] = $this->idLicitacion . "_07_" . $i;
332
-    }
333
-    }
357
+            if (array_key_exists("AwardingTerms", $TenderingTerms)) {
358
+                $tendererAwardingTerms = $TenderingTerms['AwardingTerms'];
359
+                for ($i = 0; $i < count($tendererAwardingTerms['AwardingCriteria']); $i++) {
360
+                    $resultEntries[1][$i]['evaluationCriteriaTypeCode'] = $this->existNodo($tendererAwardingTerms[$i], 'Description', 'string');
361
+                    $resultEntries[1][$i]['description'] = $this->existNodo($tendererAwardingTerms[$i], 'WeightNumeric', 'string');
362
+                    $resultEntries[1][$i]['id_ajena_licitacion'] = $this->idLicitacion;
363
+                    $resultEntries[1][$i]['id_compuesta'] = $this->idLicitacion . "_07_" . $i;
364
+                }
365
+            }
334 366
 
335
-    $tendererQualificationRequest = $TenderingTerms->TendererQualificationRequest;
336
-    if (isset($tendererQualificationRequest) && !empty($tendererQualificationRequest)) {
337
-    $resultEntries[0]['description'] = $this->existNodo($tendererQualificationRequest, 'Description', 'string');
338
-    $resultEntries[0]['personalSituation'] = $this->existNodo($tendererQualificationRequest, 'PersonalSituation', 'string');
339
-    for ($i = 0; $i < count($tendererQualificationRequest); $i++) {
340
-    if (isset($tendererQualificationRequest[$i]->TechnicalEvaluationCriteria->EvaluationCriteriaTypeCode)) {
341
-    $resultEntries[2][$i]['evaluationCriteriaTypeCode'] = $this->existNodo($tendererQualificationRequest[$i]->TechnicalEvaluationCriteria, 'EvaluationCriteriaTypeCode', 'string');
342
-    $resultEntries[2][$i]['evaluationCriteriaTypeCode_attr'] = $this->existAttribute($tendererQualificationRequest[$i]->TechnicalEvaluationCriteria, "EvaluationCriteriaTypeCode", "sting", 'listURI');
343
-    $resultEntries[2][$i]['description'] = $this->existNodo($tendererQualificationRequest[$i]->TechnicalEvaluationCriteria, 'Description', 'string');
344
-    $resultEntries[2][$i]['id_ajena_licitacion'] = $this->idLicitacion;
345
-    $resultEntries[2][$i]['id_compuesta'] = $this->idLicitacion . "_07_" . $i;
346
-    }
367
+            if (array_key_exists("TendererQualificationRequest", $TenderingTerms)) {
368
+                $tendererQualificationRequest = $TenderingTerms['TendererQualificationRequest'];
369
+                $resultEntries[0]['description'] = $this->existNodo($tendererQualificationRequest, 'Description', 'string');
370
+                $resultEntries[0]['personalSituation'] = $this->existNodo($tendererQualificationRequest, 'PersonalSituation', 'string');
371
+                for ($i = 0; $i < count($tendererQualificationRequest); $i++) {
372
+                    if (isset($tendererQualificationRequest[$i]->TechnicalEvaluationCriteria->EvaluationCriteriaTypeCode)) {
373
+                        $resultEntries[2][$i]['evaluationCriteriaTypeCode'] = $this->existNodo($tendererQualificationRequest[$i]['TechnicalEvaluationCriteria'], 'EvaluationCriteriaTypeCode', 'string');
374
+                        $resultEntries[2][$i]['evaluationCriteriaTypeCode_attr'] = $this->existAttribute($tendererQualificationRequest[$i]['TechnicalEvaluationCriteria'], "EvaluationCriteriaTypeCode", "sting", 'listURI');
375
+                        $resultEntries[2][$i]['description'] = $this->existNodo($tendererQualificationRequest[$i]['TechnicalEvaluationCriteria'], 'Description', 'string');
376
+                        $resultEntries[2][$i]['id_ajena_licitacion'] = $this->idLicitacion;
377
+                        $resultEntries[2][$i]['id_compuesta'] = $this->idLicitacion . "_07_" . $i;
378
+                    }
347 379
 
348
-    }
349
-    }
380
+                }
350 381
 
351
-    if (isset($TenderingTerms->TendererQualificationRequest->FinancialEvaluationCriteria)
352
-    && !empty($TenderingTerms->TendererQualificationRequest->FinancialEvaluationCriteria)) {
353
-    $financialEvaluationCriteria = $TenderingTerms->TendererQualificationRequest->FinancialEvaluationCriteria;
354
-    for ($i = 0; $i < count($financialEvaluationCriteria); $i++) {
355
-    $resultEntries[3][$i]['evaluationCriteriaTypeCode'] = $this->existNodo($financialEvaluationCriteria[$i], 'EvaluationCriteriaTypeCode', 'string');
356
-    $resultEntries[3][$i]['evaluationCriteriaTypeCode_attr'] = $this->existAttribute($financialEvaluationCriteria[$i], "EvaluationCriteriaTypeCode", "string", 'listURI');
357
-    $resultEntries[3][$i]['description'] = $this->existNodo($financialEvaluationCriteria[$i], 'Description', 'string');
358
-    $resultEntries[3][$i]['id_ajena_licitacion'] = $this->idLicitacion;
359
-    $resultEntries[3][$i]['id_compuesta'] = $this->idLicitacion . "_07_" . $i;
360
-    }
361
-    }
382
+                if (array_key_exists("FinancialEvaluationCriteria", $TenderingTerms['TendererQualificationRequest'])) {
383
+                    $financialEvaluationCriteria = $TenderingTerms['TendererQualificationRequest']['FinancialEvaluationCriteria'];
384
+                    for ($i = 0; $i < count($financialEvaluationCriteria); $i++) {
385
+                        $resultEntries[3][$i]['evaluationCriteriaTypeCode'] = $this->existNodo($financialEvaluationCriteria[$i], 'EvaluationCriteriaTypeCode', 'string');
386
+                        $resultEntries[3][$i]['evaluationCriteriaTypeCode_attr'] = $this->existAttribute($financialEvaluationCriteria[$i], "EvaluationCriteriaTypeCode", "string", 'listURI');
387
+                        $resultEntries[3][$i]['description'] = $this->existNodo($financialEvaluationCriteria[$i], 'Description', 'string');
388
+                        $resultEntries[3][$i]['id_ajena_licitacion'] = $this->idLicitacion;
389
+                        $resultEntries[3][$i]['id_compuesta'] = $this->idLicitacion . "_07_" . $i;
390
+                    }
391
+                }
362 392
 
363
-    if (isset($TenderingTerms->TendererQualificationRequest->SpecificTendererRequirement)
364
-    && !empty($TenderingTerms->TendererQualificationRequest->SpecificTendererRequirement)) {
365
-    $specificTendererRequirement = $TenderingTerms->TendererQualificationRequest->SpecificTendererRequirement;
366
-    for ($i = 0; $i < count($specificTendererRequirement); $i++) {
393
+                if (array_key_exists("SpecificTendererRequirement", $TenderingTerms['TendererQualificationRequest'])) {
394
+                    $specificTendererRequirement = $TenderingTerms['TendererQualificationRequest']['SpecificTendererRequirement'];
395
+                    for ($i = 0; $i < count($specificTendererRequirement); $i++) {
367 396
 
368
-    $resultEntries[4][$i]['evaluationCriteriaTypeCode'] = $this->existNodo($specificTendererRequirement[$i]->SpecificTendererRequirement, 'RequirementTypeCode', 'string');
369
-    $resultEntries[4][$i]['evaluationCriteriaTypeCode_attr'] = $this->existAttribute($specificTendererRequirement[$i]->SpecificTendererRequirement, "RequirementTypeCode", "string", 'listURI');
370
-    $resultEntries[4][$i]['id_ajena_licitacion'] = $this->idLicitacion;
371
-    $resultEntries[4][$i]['id_compuesta'] = $this->idLicitacion . "_07_" . $i;
372
-    }
373
-    }
397
+                        $resultEntries[4][$i]['evaluationCriteriaTypeCode'] = $this->existNodo($specificTendererRequirement[$i]['SpecificTendererRequirement'], 'RequirementTypeCode', 'string');
398
+                        $resultEntries[4][$i]['evaluationCriteriaTypeCode_attr'] = $this->existAttribute($specificTendererRequirement[$i]['SpecificTendererRequirement'], "RequirementTypeCode", "string", 'listURI');
399
+                        $resultEntries[4][$i]['id_ajena_licitacion'] = $this->idLicitacion;
400
+                        $resultEntries[4][$i]['id_compuesta'] = $this->idLicitacion . "_07_" . $i;
401
+                    }
402
+                }
403
+            }
374 404
 
375
-    $resultEntries[0]['language'] = $this->existNodo($TenderingTerms->Language, 'ID', 'string');
376
-    }
405
+            $resultEntries[0]['language'] = $this->existNodo($TenderingTerms['Language'], 'ID', 'string');
406
+        }
377 407
 
378
-    //$resultFinal = $this->array_remove_empty($resultEntries);
379
-    $resultFinal = $this->checkArrayValuesEmpty($resultEntries);
380
-    return $resultFinal;
408
+        //$resultFinal = $this->array_remove_empty($resultEntries);
409
+        $resultFinal = $this->checkArrayValuesEmpty($resultEntries);
410
+        return $resultFinal;
381 411
     }
382 412
 
383 413
     private function nodoTenderingProcess($xml)
384 414
     {
385
-    $resultEntries = array();
386
-    $tenderingProcess = $xml->ContractFolderStatus->TenderingProcess;
387
-
388
-    if (isset($tenderingProcess)) {
389
-    //TenderingProcess
390
-    $resultEntries['procedureCode'] = $this->existNodo($tenderingProcess, 'ProcedureCode', 'string');
391
-    $resultEntries['procedureCode_attr'] = $this->existAttribute($tenderingProcess, "ProcedureCode", "string", 'listURI');
392
-
393
-    $resultEntries['urgencyCode'] = $this->existNodo($tenderingProcess, 'UrgencyCode', 'string');
394
-    $resultEntries['urgencyCode_attr'] = $this->existAttribute($tenderingProcess, "UrgencyCode", "string", 'listURI');
395
-
396
-    $resultEntries['contractingSystemCode'] = $this->existNodo($tenderingProcess, 'ContractingSystemCode', 'string');
397
-    $resultEntries['contractingSystemCode_attr'] = $this->existAttribute($tenderingProcess, "ContractingSystemCode", "string", 'listURI');
398
-
399
-    $resultEntries['partPresentationCode'] = $this->existNodo($tenderingProcess, 'PartPresentationCode', 'string');
400
-    $resultEntries['partPresentationCode_attr'] = $this->existAttribute($tenderingProcess, "PartPresentationCode", "string", 'listURI');
401
-
402
-    $resultEntries['submissionMethodCode'] = $this->existNodo($tenderingProcess, 'SubmissionMethodCode', 'string');
403
-    $resultEntries['submissionMethodCode_attr'] = $this->existAttribute($tenderingProcess, "SubmissionMethodCode", "string", 'listURI');
404
-
405
-    $resultEntries['maximumLotPresentationQuantity'] = $this->existNodo($tenderingProcess, 'MaximumLotPresentationQuantity', 'string');
406
-    $resultEntries['maximumTendererAwardedLotsQuantity'] = $this->existNodo($tenderingProcess, 'MaximumTendererAwardedLotsQuantity', 'string');
407
-    $resultEntries['deadLineEndDate'] = $this->existNodo($tenderingProcess->TenderSubmissionDeadlinePeriod, 'EndDate', 'string');
408
-    $resultEntries['deadLineEndTime'] = $this->existNodo($tenderingProcess->TenderSubmissionDeadlinePeriod, 'EndTime', 'string');
409
-    $resultEntries['deadLineDescription'] = $this->existNodo($tenderingProcess->TenderSubmissionDeadlinePeriod, 'Description', 'string');
410
-    $resultEntries['auctionTerms'] = $this->existNodo($tenderingProcess->AuctionTerms, 'AuctionConstraintIndicator', 'string');
411
-    $resultEntries['LotsCombinationContractingAuthorityRights'] = $this->existNodo($tenderingProcess, 'LotsCombinationContractingAuthorityRights', 'string');
412
-    $resultEntries['documentAvailablePeriod_EndDate'] = $this->existNodo($tenderingProcess->DocumentAvailabilityPeriod, 'EndDate', 'string');
413
-    $resultEntries['documentAvailablePeriod_EndTime'] = $this->existNodo($tenderingProcess->DocumentAvailabilityPeriod, 'EndTime', 'string');
414
-    $resultEntries['id_ajena_licitacion'] = $this->idLicitacion;
415
-    $resultEntries['id_compuesta'] = $this->idLicitacion . "_08";
416
-    }
417
-    //$resultFinal = $this->array_remove_empty($resultEntries);
418
-    $resultFinal = $this->checkArrayValuesEmpty($resultEntries);
419
-    return $resultFinal;
420
-    }*/
415
+        $resultEntries = array();
416
+        if (array_key_exists("TenderingProcess", $xml['ContractFolderStatus'])) {
417
+            $tenderingProcess = $xml['ContractFolderStatus']['TenderingProcess'];
418
+
419
+            //TenderingProcess
420
+            $resultEntries['procedureCode'] = $this->existNodo($tenderingProcess, 'ProcedureCode', 'string');
421
+            $resultEntries['procedureCode_attr'] = $this->existAttribute($tenderingProcess, "ProcedureCode", "string", 'listURI');
422
+
423
+            $resultEntries['urgencyCode'] = $this->existNodo($tenderingProcess, 'UrgencyCode', 'string');
424
+            $resultEntries['urgencyCode_attr'] = $this->existAttribute($tenderingProcess, "UrgencyCode", "string", 'listURI');
425
+
426
+            $resultEntries['contractingSystemCode'] = $this->existNodo($tenderingProcess, 'ContractingSystemCode', 'string');
427
+            $resultEntries['contractingSystemCode_attr'] = $this->existAttribute($tenderingProcess, "ContractingSystemCode", "string", 'listURI');
428
+
429
+            $resultEntries['partPresentationCode'] = $this->existNodo($tenderingProcess, 'PartPresentationCode', 'string');
430
+            $resultEntries['partPresentationCode_attr'] = $this->existAttribute($tenderingProcess, "PartPresentationCode", "string", 'listURI');
431
+
432
+            $resultEntries['submissionMethodCode'] = $this->existNodo($tenderingProcess, 'SubmissionMethodCode', 'string');
433
+            $resultEntries['submissionMethodCode_attr'] = $this->existAttribute($tenderingProcess, "SubmissionMethodCode", "string", 'listURI');
434
+
435
+            $resultEntries['maximumLotPresentationQuantity'] = $this->existNodo($tenderingProcess, 'MaximumLotPresentationQuantity', 'string');
436
+            $resultEntries['maximumTendererAwardedLotsQuantity'] = $this->existNodo($tenderingProcess, 'MaximumTendererAwardedLotsQuantity', 'string');
437
+            $resultEntries['deadLineEndDate'] = $this->existNodo($tenderingProcess['TenderSubmissionDeadlinePeriod'], 'EndDate', 'string');
438
+            $resultEntries['deadLineEndTime'] = $this->existNodo($tenderingProcess['TenderSubmissionDeadlinePeriod'], 'EndTime', 'string');
439
+            $resultEntries['deadLineDescription'] = $this->existNodo($tenderingProcess['TenderSubmissionDeadlinePeriod'], 'Description', 'string');
440
+            $resultEntries['auctionTerms'] = $this->existNodo($tenderingProcess['AuctionTerms'], 'AuctionConstraintIndicator', 'string');
441
+            $resultEntries['LotsCombinationContractingAuthorityRights'] = $this->existNodo($tenderingProcess, 'LotsCombinationContractingAuthorityRights', 'string');
442
+            $resultEntries['documentAvailablePeriod_EndDate'] = $this->existNodo($tenderingProcess['DocumentAvailabilityPeriod'], 'EndDate', 'string');
443
+            $resultEntries['documentAvailablePeriod_EndTime'] = $this->existNodo($tenderingProcess['DocumentAvailabilityPeriod'], 'EndTime', 'string');
444
+            $resultEntries['id_ajena_licitacion'] = $this->idLicitacion;
445
+            $resultEntries['id_compuesta'] = $this->idLicitacion . "_08";
446
+        }
447
+        return $resultEntries;
448
+    }
421 449
 
422 450
     private function nodoLegalDoc($xml)
423 451
     {
@@ -496,38 +524,52 @@ class ParserFile
496 524
         //return $this->idLicitacion;
497 525
     }
498 526
 
499
-    private function nodoValidNoticeInfo($xml)
527
+    /*private function nodoValidNoticeInfo($xml)
500 528
     {
501
-        $resultEntries = array();
502
-        $validNoticeInfo = $xml->ContractFolderStatus->ValidNoticeInfo;
529
+    $resultEntries = array();
530
+    if (array_key_exists("ValidNoticeInfo", $xml['ContractFolderStatus'])) {
531
+    $validNoticeInfo = $xml['ContractFolderStatus']['ValidNoticeInfo'];
532
+    $firstKey = array_key_first($validNoticeInfo);
533
+    if ($firstKey !== 0) {
534
+    $validNoticeInfo = array(0 => $validNoticeInfo);
535
+    }
536
+    for ($i = 0; $i < count($validNoticeInfo); $i++) {
537
+    $resultEntries[$i]['noticeTypeCode'] = $this->existNodo($validNoticeInfo[$i], 'NoticeTypeCode', 'string');
538
+    $resultEntries[$i]['publicationMediaName'] = $this->existNodo($validNoticeInfo[$i]['AdditionalPublicationStatus'], 'PublicationMediaName', 'string');
539
+    $resultEntries[$i]['id_ajena_licitacion'] = $this->idLicitacion;
540
+    $resultEntries[$i]['id_compuesta'] = $this->idLicitacion . "_12_" . $i;
503 541
 
504
-        if (isset($validNoticeInfo)) {
505
-            for ($i = 0; $i < count($validNoticeInfo); $i++) {
506
-                $resultEntries[$i]['noticeTypeCode'] = $this->existNodo($validNoticeInfo[$i], 'NoticeTypeCode', 'string');
507
-                $resultEntries[$i]['publicationMediaName'] = $this->existNodo($validNoticeInfo[$i]->AdditionalPublicationStatus, 'PublicationMediaName', 'string');
508
-                $resultEntries[$i]['id_ajena_licitacion'] = $this->idLicitacion;
509
-                $resultEntries[$i]['id_compuesta'] = $this->idLicitacion . "_12_" . $i;
510
-
511
-                if (isset($validNoticeInfo[$i]->AdditionalPublicationStatus)) {
512
-                    for ($j = 0; $j < count($validNoticeInfo[$i]->AdditionalPublicationStatus->AdditionalPublicationDocumentReference); $j++) {
513
-
514
-                        $resultEntries[$i]['fechas'][$j]['fechas'] = $this->existNodo($validNoticeInfo[$i]->AdditionalPublicationStatus->AdditionalPublicationDocumentReference[$j], 'IssueDate', 'string');
515
-                        $resultEntries[$i]['fechas'][$j]['id_ajena_licitacion'] = $this->idLicitacion;
516
-                        $resultEntries[$i]['fechas'][$j]['id_compuesta'] = $this->idLicitacion . "_12_" . $i . "_" . $j;
517
-                        if ($validNoticeInfo[$i]->AdditionalPublicationStatus->AdditionalPublicationDocumentReference[$j]->DocumentTypeCode) {
518
-                            $resultEntries[$i]['documento'][$j]['documento'] = $this->existNodo($validNoticeInfo[$i]->AdditionalPublicationStatus->AdditionalPublicationDocumentReference[$j]->Attachment->ExternalReference, 'URI', 'string');
519
-                            $resultEntries[$i]['documento'][$j]['filename'] = $this->existNodo($validNoticeInfo[$i]->AdditionalPublicationStatus->AdditionalPublicationDocumentReference[$j]->Attachment->ExternalReference, 'FileName', 'string');
520
-                            $resultEntries[$i]['documento'][$j]['id_ajena_licitacion'] = $this->idLicitacion;
521
-                            $resultEntries[$i]['documento'][$j]['id_compuesta'] = $this->idLicitacion . "_12_" . $i . "_" . $j;
522
-                        }
523
-                    }
524
-                }
525
-            }
526
-        }
542
+    if (array_key_exists("AdditionalPublicationStatus", $xml['ContractFolderStatus']['ValidNoticeInfo'][$i])) {
543
+    $additionalPublicationDocument = $xml['ContractFolderStatus']['ValidNoticeInfo'][$i]['AdditionalPublicationStatus'];
544
+    //echo ($this->idLicitacion . "</br>");
545
+    if (!is_countable($additionalPublicationDocument['AdditionalPublicationDocumentReference'])) {
546
+    echo "idlici" . $this->idLicitacion;
547
+    }
527 548
 
528
-        //$resultFinal = $this->checkArrayValuesEmpty($resultEntries);
529
-        return $resultEntries;
549
+    if ($firstKey !== 0) {
550
+    $additionalPublicationDocument['AdditionalPublicationDocumentReference'] = array(0 => $additionalPublicationDocument['AdditionalPublicationDocumentReference']);
551
+    }
552
+    for ($j = 0; $j < count($additionalPublicationDocument['AdditionalPublicationDocumentReference']); $j++) {
553
+
554
+    $firstKey = array_key_first($additionalPublicationDocument['AdditionalPublicationDocumentReference']);
555
+
556
+    $resultEntries[$i]['fechas'][$j]['fechas'] = $this->existNodo($additionalPublicationDocument['AdditionalPublicationDocumentReference'][$j], 'IssueDate', 'string');
557
+    $resultEntries[$i]['fechas'][$j]['id_ajena_licitacion'] = $this->idLicitacion;
558
+    $resultEntries[$i]['fechas'][$j]['id_compuesta'] = $this->idLicitacion . "_12_" . $i . "_" . $j;
559
+    if ($additionalPublicationDocument['AdditionalPublicationDocumentReference'][$j]['DocumentTypeCode']) {
560
+    $resultEntries[$i]['documento'][$j]['documento'] = $this->existNodo($additionalPublicationDocument['AdditionalPublicationDocumentReference'][$j]['Attachment']['ExternalReference'], 'URI', 'string');
561
+    $resultEntries[$i]['documento'][$j]['filename'] = $this->existNodo($additionalPublicationDocument['AdditionalPublicationDocumentReference'][$j]['Attachment']['ExternalReference'], 'FileName', 'string');
562
+    $resultEntries[$i]['documento'][$j]['id_ajena_licitacion'] = $this->idLicitacion;
563
+    $resultEntries[$i]['documento'][$j]['id_compuesta'] = $this->idLicitacion . "_12_" . $i . "_" . $j;
564
+    }
530 565
     }
566
+    }
567
+    }
568
+    }
569
+
570
+    //$resultFinal = $this->checkArrayValuesEmpty($resultEntries);
571
+    return $resultEntries;
572
+    }*/
531 573
 
532 574
     private function existNodo($nodo, $nodoHijo, $tipo)
533 575
     {