Преглед изворни кода

Cambiar como obtener los datos, XMLSimpleElement -> Array. Preparar resultEntries para ser insertado de golpe. id_ajena_licitacion,id_compuesta

Nermosis пре 3 година
родитељ
комит
3a5dbae044
1 измењених фајлова са 314 додато и 287 уклоњено
  1. 314 287
      application/libraries/ParserFile.php

+ 314 - 287
application/libraries/ParserFile.php Прегледај датотеку

@@ -42,36 +42,36 @@ class ParserFile
42 42
 
43 43
             $filename = basename($file);
44 44
             $aux = 0;
45
-            foreach ($xml->entry as $clave => $row) {
45
+            foreach ($array['entry'] as $clave => $row) {
46 46
                 $arrayDeletedEntries = $xml->children('at', true);
47 47
 
48
-                $resultEntries[$filename][$aux]['general'] = $this->nodoEntry($row, $datosPerfil->id);
48
+                $resultEntries[$filename]['general'][$aux] = $this->nodoEntry($row, $datosPerfil->id);
49 49
 
50
-                $resultEntries[$filename][$aux]['contractInfo'] = $this->nodoContractFolderStatus($row);
50
+                $resultEntries[$filename]['contractInfo'][$aux] = $this->nodoContractFolderStatus($row);
51 51
 
52
-                $resultEntries[$filename][$aux]['locatedContractingParty'] = $this->nodoLocatedContractingParty($row);
52
+                $resultEntries[$filename]['locatedContractingParty'][$aux] = $this->nodoLocatedContractingParty($row);
53 53
 
54
-                $resultEntries[$filename][$aux]['party'] = $this->nodoParty($row);
54
+                $resultEntries[$filename]['party'][$aux] = $this->nodoParty($row);
55 55
 
56
-                $resultEntries[$filename][$aux]['procurementProject'] = $this->nodoPresupuesto($row);
56
+                $resultEntries[$filename]['procurementProject'][$aux] = $this->nodoPresupuesto($row);
57 57
 
58
-                $resultEntries[$filename][$aux]['procurementProjectLot'] = $this->nodoProcurementProjectLot($row);
58
+                $resultEntries[$filename]['procurementProjectLot'][$aux] = $this->nodoProcurementProjectLot($row);
59 59
 
60
-                $resultEntries[$filename][$aux]['tenderingTerms'] = $this->nodoTenderingTerms($row);
60
+                //$resultEntries[$filename]['tenderingTerms'][$aux] = $this->nodoTenderingTerms($row);
61 61
 
62
-                $resultEntries[$filename][$aux]['tenderingProcess'] = $this->nodoTenderingProcess($row);
62
+                //$resultEntries[$filename]['tenderingProcess'][$aux] = $this->nodoTenderingProcess($row);
63 63
 
64
-                $resultEntries[$filename][$aux]['tenderingResult'] = $this->nodoTenderResult($row);
64
+                //$resultEntries[$filename]['tenderingResult'][$aux] = $this->nodoTenderResult($row);
65 65
 
66
-                $resultEntries[$filename][$aux]['validNoticeInfo'] = $this->nodoValidNoticeInfo($row);
66
+                $resultEntries[$filename]['validNoticeInfo'][$aux] = $this->nodoValidNoticeInfo($row);
67 67
 
68
-                $resultEntries[$filename][$aux]['legalDocs'] = $this->nodoLegalDoc($row);
68
+                $resultEntries[$filename]['legalDocs'][$aux] = $this->nodoLegalDoc($row);
69 69
 
70
-                $resultEntries[$filename][$aux]['technicalDocs'] = $this->nodoTechnicalDocumentReference($row);
70
+                $resultEntries[$filename]['technicalDocs'][$aux] = $this->nodoTechnicalDocumentReference($row);
71 71
 
72
-                $resultEntries[$filename][$aux]['generalDocs'] = $this->nodoGeneralDocuments($row);
72
+                $resultEntries[$filename]['generalDocs'][$aux] = $this->nodoGeneralDocuments($row);
73 73
 
74
-                $resultEntries[$filename][$aux]['additionalDocs'] = $this->nodoAdditionalDocumentReference($row);
74
+                $resultEntries[$filename]['additionalDocs'][$aux] = $this->nodoAdditionalDocumentReference($row);
75 75
 
76 76
                 $aux++;
77 77
 
@@ -79,12 +79,9 @@ class ParserFile
79 79
             }
80 80
 
81 81
             $this->CI->parserdatabasebruto->setDatosParser($resultEntries, $fechaInicioParser, $datosPerfil);
82
-            $this->CI->parserdatabaselimpio->index();
83
-
84
-            //$str = print_r($resultEntries, true);
85
-
86
-            //file_put_contents($this->rutaDiaria . "/text_" . $filename . ".txt", $str);
87 82
 
83
+            $resultEntries = array();
84
+            //$this->CI->parserdatabaselimpio->index();
88 85
         }
89 86
 
90 87
         return;
@@ -93,13 +90,14 @@ class ParserFile
93 90
     private function nodoEntry($xml, $tipoPerfil)
94 91
     {
95 92
         $resultEntries = array();
96
-
97
-        $resultEntries['url_id_licitacion'] = (string) $xml->id;
98
-        $resultEntries['id_licitacion'] = (string) substr($xml->id, strrpos($xml->id, '/') + 1);
99
-        $resultEntries['link_uri'] = (string) $this->existAttribute($xml, "link", "string", 'href');
100
-        $resultEntries['summary'] = (string) $xml->summary;
101
-        $resultEntries['title'] = (string) $xml->title;
102
-        $resultEntries['updated'] = (string) $xml->updated;
93
+        $id_licitacion = (string) substr($xml['id'], strrpos($xml['id'], '/') + 1);
94
+        $resultEntries['url_id_licitacion'] = (string) $xml['id'];
95
+        $resultEntries['id_licitacion'] = $id_licitacion;
96
+        $this->idLicitacion = $id_licitacion;
97
+        //$resultEntries['link_uri'] = (string) $this->existAttribute($xml, "link", "string", 'href');
98
+        $resultEntries['summary'] = (string) $xml['summary'];
99
+        $resultEntries['title'] = (string) $xml['title'];
100
+        $resultEntries['updated'] = (string) $xml['updated'];
103 101
         $resultEntries['tipo_perfil_licitacion'] = $tipoPerfil;
104 102
         return $resultEntries;
105 103
     }
@@ -107,154 +105,159 @@ class ParserFile
107 105
     private function nodoContractFolderStatus($xml)
108 106
     {
109 107
         $resultEntries = array();
110
-        if (isset($xml->ContractFolderStatus)) {
111
-            $resultEntries['ContractFolderID'] = (string) $xml->ContractFolderStatus->ContractFolderID;
112
-            $resultEntries['ContractFolderStatusCode'] = (string) $xml->ContractFolderStatus->ContractFolderStatusCode;
113
-            $resultEntries['ContractFolderStatusCodeAttr'] = $this->existAttribute($xml->ContractFolderStatus, "ContractFolderStatusCode", "string", 'listURI');
108
+        if (array_key_exists("ContractFolderStatus", $xml)) {
109
+            $contractFolder = $xml['ContractFolderStatus'];
110
+
111
+            $resultEntries['ContractFolderID'] = (string) $contractFolder['ContractFolderID'];
112
+            $resultEntries['ContractFolderStatusCode'] = (string) $contractFolder['ContractFolderStatusCode'];
113
+            //$resultEntries['ContractFolderStatusCodeAttr'] = $this->existAttribute($contractFolder, "ContractFolderStatusCode", "string", 'listURI');
114
+            $resultEntries['id_ajena_licitacion'] = $this->idLicitacion;
115
+            $resultEntries['id_compuesta'] = $this->idLicitacion . "_01";
114 116
         }
115
-        $resultFinal = $this->array_remove_empty($resultEntries);
116
-        return $resultFinal;
117
+
118
+        return $resultEntries;
117 119
     }
118 120
 
119 121
     private function nodoLocatedContractingParty($xml)
120 122
     {
121 123
         $resultEntries = array();
122
-        if (isset($xml->ContractFolderStatus->LocatedContractingParty) && !empty($xml->ContractFolderStatus->LocatedContractingParty)) {
123
-            $LocatedContractingParty = $xml->ContractFolderStatus->LocatedContractingParty;
124
+        if (array_key_exists("LocatedContractingParty", $xml['ContractFolderStatus'])) {
125
+            $LocatedContractingParty = $xml['ContractFolderStatus']['LocatedContractingParty'];
124 126
 
125 127
             $resultEntries['locatedContractingParty']['contractingPartyTypeCode'] = $this->existNodo($LocatedContractingParty, "ContractingPartyTypeCode", 'string');
126
-            $resultEntries['locatedContractingParty']['contractingPartyTypeCodeUri'] = $this->existAttribute($LocatedContractingParty, "ContractingPartyTypeCode", 'string', 'listURI');
127
-
128
-            if (isset($LocatedContractingParty->ActivityCode)) {
129
-                if (count($LocatedContractingParty->ActivityCode) > 1) {
130
-                    for ($i = 0; $i < count($LocatedContractingParty->ActivityCode); $i++) {
131
-                        $resultEntries['activity'][$i]['activityCode'] = (string) $LocatedContractingParty->ActivityCode[$i];
132
-                        $resultEntries['activity'][$i]['activityCodeUri'] = (string) $LocatedContractingParty->ActivityCode[$i]->attributes()['listURI'];
133
-                    }
134
-                } else {
135
-                    $resultEntries['activity'][0]['activityCode'] = $this->existNodo($LocatedContractingParty, "ActivityCode", 'string');
136
-                    $resultEntries['activity'][0]['activityCodeUri'] = $this->existAttribute($LocatedContractingParty, "ActivityCode", 'string', 'listURI');
137
-
128
+            //$resultEntries['locatedContractingParty']['contractingPartyTypeCodeUri'] = $this->existAttribute($LocatedContractingParty, "ContractingPartyTypeCode", 'string', 'listURI');
129
+
130
+            if (array_key_exists("ActivityCode", $xml['ContractFolderStatus']['LocatedContractingParty'])) {
131
+                $activity = $xml['ContractFolderStatus']['LocatedContractingParty']['ActivityCode'];
132
+                for ($i = 0; $i < count($activity); $i++) {
133
+                    $resultEntries['activity'][$i]['activityCode'] = (string) $activity[$i];
134
+                    //$resultEntries['activity'][$i]['activityCodeUri'] = (string) $activity[$i]->attributes()['listURI'];
135
+                    $resultEntries['activity'][$i]['id_ajena_licitacion'] = $this->idLicitacion;
136
+                    $resultEntries['activity'][$i]['id_compuesta'] = $this->idLicitacion . "_02_" . $i;
138 137
                 }
139 138
             }
140 139
 
141 140
             $resultEntries['locatedContractingParty']['buyerProfileURIID'] = $this->existNodo($LocatedContractingParty, "BuyerProfileURIID", 'string');
142
-
143
-            /*if (isset($LocatedContractingParty->ParentLocatedParty)) {
144
-        $this->RecurseXML($LocatedContractingParty->ParentLocatedParty);
145
-        }*/
141
+            $resultEntries['locatedContractingParty']['id_ajena_licitacion'] = $this->idLicitacion;
142
+            $resultEntries['locatedContractingParty']['id_compuesta'] = $this->idLicitacion . "_02";
146 143
         }
147
-        $resultFinal = $this->array_remove_empty($resultEntries);
148
-        return $resultFinal;
144
+
145
+        return $resultEntries;
149 146
     }
150 147
 
151 148
     private function nodoParty($xml)
152 149
     {
153 150
         $resultEntries = array();
154
-        $contractFolder = $xml->ContractFolderStatus->LocatedContractingParty;
151
+        if (array_key_exists("Party", $xml['ContractFolderStatus']['LocatedContractingParty'])) {
152
+            $party = $xml['ContractFolderStatus']['LocatedContractingParty']['Party'];
155 153
 
156
-        if (isset($contractFolder->Party)) {
157
-            //Datos Empresa -> direccion,nif, etc
158
-            //LocatedContractingParty->Party
159
-            $party = $contractFolder->Party;
160 154
             $resultEntries['party']['websiteURI'] = $this->existNodo($party, "WebsiteURI", 'string');
161 155
 
162
-            if (isset($party->PartyIdentification) && !empty($party->PartyIdentification)) {
163
-                for ($i = 0; $i < count($party->PartyIdentification); $i++) {
164
-                    $resultEntries['partyIdentification'][$i]['idPartyIdent'] = $this->existNodo($party->PartyIdentification[$i], "ID", 'string');
165
-                    $resultEntries['partyIdentification'][$i]['attr'] = $this->existAttribute($party, $party->PartyIdentification[$i]->ID, "string", 'schemeName');
156
+            if (array_key_exists("PartyIdentification", $party)) {
157
+                for ($i = 0; $i < count($party['PartyIdentification']); $i++) {
158
+                    $resultEntries['partyIdentification'][$i]['idPartyIdent'] = $this->existNodo($party['PartyIdentification'][$i], "ID", 'string');
159
+                    //$resultEntries['partyIdentification'][$i]['attr'] = $this->existAttribute($party, $party['PartyIdentification'][$i]['ID'], "string", 'schemeName');
160
+                    $resultEntries['partyIdentification'][$i]['id_ajena_licitacion'] = $this->idLicitacion;
161
+                    $resultEntries['partyIdentification'][$i]['id_compuesta'] = $this->idLicitacion . "_03_" . $i;
166 162
                 }
167 163
             }
168 164
 
169
-            $resultEntries['party']['partyName'] = $this->existNodo($party->PartyName, "Name", 'string');
170
-            $resultEntries['party']['city'] = $this->existNodo($party->PostalAddress, "CityName", 'string');
171
-            $resultEntries['party']['codpostal'] = $this->existNodo($party->PostalAddress, "PostalZone", 'string');
172
-            $resultEntries['party']['direccion'] = $this->existNodo($party->PostalAddress->AddressLine, "Line", 'string');
173
-            $resultEntries['party']['country'] = $this->existNodo($party->PostalAddress->Country, "Name", 'string');
174
-            $resultEntries['party']['contact_name'] = $this->existNodo($party->Contact, "Name", 'string');
175
-            $resultEntries['party']['contact_email'] = $this->existNodo($party->Contact, "ElectronicMail", 'string');
165
+            $resultEntries['party']['partyName'] = $this->existNodo($party['PartyName'], "Name", 'string');
166
+            $resultEntries['party']['city'] = $this->existNodo($party['PostalAddress'], "CityName", 'string');
167
+            $resultEntries['party']['codpostal'] = $this->existNodo($party['PostalAddress'], "PostalZone", 'string');
168
+            $resultEntries['party']['direccion'] = $this->existNodo($party['PostalAddress']['AddressLine'], "Line", 'string');
169
+            $resultEntries['party']['country'] = $this->existNodo($party['PostalAddress']['Country'], "Name", 'string');
170
+            $resultEntries['party']['contact_name'] = $this->existNodo($party['Contact'], "Name", 'string');
171
+            $resultEntries['party']['contact_email'] = $this->existNodo($party['Contact'], "ElectronicMail", 'string');
172
+            $resultEntries['party']['id_ajena_licitacion'] = $this->idLicitacion;
173
+            $resultEntries['party']['id_compuesta'] = $this->idLicitacion . "_03";
174
+
176 175
         }
177
-        $resultFinal = $this->array_remove_empty($resultEntries);
178
-        return $resultFinal;
176
+        return $resultEntries;
179 177
     }
180 178
 
181 179
     private function nodoPresupuesto($xml)
182 180
     {
183 181
         $resultEntries = array();
184 182
 
185
-        $procurementProject = $xml->ContractFolderStatus->ProcurementProject;
186
-
187
-        if (isset($procurementProject)) {
188
-            //ProcurementProject
183
+        //$procurementProject = $xml->ContractFolderStatus->ProcurementProject;
184
+        if (array_key_exists("ProcurementProject", $xml['ContractFolderStatus'])) {
185
+            $procurementProject = $xml['ContractFolderStatus']['ProcurementProject'];
189 186
 
187
+            $resultEntries['budget']['id_ajena_licitacion'] = $this->idLicitacion;
188
+            $resultEntries['budget']['id_compuesta'] = $this->idLicitacion . "_04";
190 189
             $resultEntries['budget']['name'] = $this->existNodo($procurementProject, 'Name', 'string');
191 190
             $resultEntries['budget']['typeCode'] = $this->existNodo($procurementProject, 'TypeCode', 'string');
192 191
             $resultEntries['budget']['subTypeCode'] = $this->existNodo($procurementProject, 'SubTypeCode', 'string');
193 192
 
194
-            if (isset($procurementProject->BudgetAmount)) {
195
-                $resultEntries['budget']['estimatedOverallContractAmount'] = $this->existNodo($procurementProject->BudgetAmount, 'EstimatedOverallContractAmount', 'string');
196
-                $resultEntries['budget']['totalAmount'] = $this->existNodo($procurementProject->BudgetAmount, 'TotalAmount', 'string');
197
-                $resultEntries['budget']['taxExclusiveAmount'] = $this->existNodo($procurementProject->BudgetAmount, 'TaxExclusiveAmount', 'string');
193
+            if (array_key_exists("BudgetAmount", $procurementProject)) {
194
+                $resultEntries['budget']['estimatedOverallContractAmount'] = $this->existNodo($procurementProject['BudgetAmount'], 'EstimatedOverallContractAmount', 'string');
195
+                $resultEntries['budget']['totalAmount'] = $this->existNodo($procurementProject['BudgetAmount'], 'TotalAmount', 'string');
196
+                $resultEntries['budget']['taxExclusiveAmount'] = $this->existNodo($procurementProject['BudgetAmount'], 'TaxExclusiveAmount', 'string');
198 197
             }
199 198
 
200
-            if (isset($procurementProject->RequiredCommodityClassification)) {
201
-                for ($i = 0; $i < count($procurementProject->RequiredCommodityClassification); $i++) {
202
-                    $resultEntries['itemClass'][$i]['itemClassification_value'] = $this->existNodo($procurementProject->RequiredCommodityClassification[$i], 'ItemClassificationCode', 'string');
203
-                    $resultEntries['itemClass'][$i]['itemClassification_attr'] = (string) $procurementProject->RequiredCommodityClassification[$i]->ItemClassificationCode['listURI'];
199
+            if (array_key_exists("RequiredCommodityClassification", $procurementProject)) {
200
+                for ($i = 0; $i < count($procurementProject['RequiredCommodityClassification']); $i++) {
201
+                    $resultEntries['itemClass'][$i]['itemClassification_value'] = $this->existNodo($procurementProject['RequiredCommodityClassification'][$i], 'ItemClassificationCode', 'string');
202
+                    //$resultEntries['itemClass'][$i]['itemClassification_attr'] = (string) $procurementProject['RequiredCommodityClassification'][$i]['ItemClassificationCode']['listURI'];
203
+                    $resultEntries['itemClass'][$i]['id_ajena_licitacion'] = $this->idLicitacion;
204
+                    $resultEntries['itemClass'][$i]['id_compuesta'] = $this->idLicitacion . "_04_" . $i;
204 205
                 }
205 206
             }
206 207
 
207
-            if (isset($procurementProject->RealizedLocation)) {
208
-                $resultEntries['budget']['countrySubentity'] = $this->existNodo($procurementProject->RealizedLocation, 'CountrySubentity', 'string');
209
-                if (isset($procurementProject->RealizedLocation->CountrySubentityCode)) {
210
-                    $resultEntries['budget']['countrySubentityCode'] = $this->existNodo($procurementProject->RealizedLocation, 'CountrySubentityCode', 'string');
211
-                    $resultEntries['budget']['countrySubentityCodeAttr'] = $this->existAttribute($procurementProject->RealizedLocation, "CountrySubentityCode", "string", 'listURI');
208
+            if (array_key_exists("RealizedLocation", $procurementProject)) {
209
+                $resultEntries['budget']['countrySubentity'] = $this->existNodo($procurementProject['RealizedLocation'], 'CountrySubentity', 'string');
210
+                if (array_key_exists("CountrySubentityCode", $procurementProject['RealizedLocation'])) {
211
+                    $resultEntries['budget']['countrySubentityCode'] = $this->existNodo($procurementProject['RealizedLocation'], 'CountrySubentityCode', 'string');
212
+                    //$resultEntries['budget']['countrySubentityCodeAttr'] = $this->existAttribute($procurementProject['RealizedLocation'], "CountrySubentityCode", "string", 'listURI');
212 213
                 }
213 214
 
214
-                if (isset($procurementProject->RealizedLocation->Address)) {
215
-                    $resultEntries['budget']['cityName'] = $this->existNodo($procurementProject->RealizedLocation->Address->Country, 'CityName', 'string');
216
-                    $resultEntries['budget']['IdentificationCode'] = $this->existNodo($procurementProject->RealizedLocation->Address->Country, 'IdentificationCode', 'string');
217
-                    $resultEntries['budget']['countryName'] = $this->existNodo($procurementProject->RealizedLocation->Address->Country, 'Name', 'string');
215
+                if (array_key_exists("Address", $procurementProject['RealizedLocation'])) {
216
+                    $resultEntries['budget']['cityName'] = $this->existNodo($procurementProject['RealizedLocation']['Address']['Country'], 'CityName', 'string');
217
+                    $resultEntries['budget']['IdentificationCode'] = $this->existNodo($procurementProject['RealizedLocation']['Address']['Country'], 'IdentificationCode', 'string');
218
+                    $resultEntries['budget']['countryName'] = $this->existNodo($procurementProject['RealizedLocation']['Address']['Country'], 'Name', 'string');
218 219
                 }
219 220
             }
220 221
 
221
-            $resultEntries['budget']['durationMesure'] = $this->existNodo($procurementProject->PlannedPeriod, 'DurationMeasure', 'string');
222
-            $resultEntries['budget']['duracion_inicio'] = $this->existNodo($procurementProject->PlannedPeriod, 'StartDate', 'string');
223
-            $resultEntries['budget']['duracion_fin'] = $this->existNodo($procurementProject->PlannedPeriod, 'EndDate', 'string');
224
-            $resultEntries['budget']['medida'] = $this->existAttribute($procurementProject->PlannedPeriod, "DurationMeasure", "string", 'unitCode');
222
+            $resultEntries['budget']['durationMesure'] = $this->existNodo($procurementProject['PlannedPeriod'], 'DurationMeasure', 'string');
223
+            $resultEntries['budget']['duracion_inicio'] = $this->existNodo($procurementProject['PlannedPeriod'], 'StartDate', 'string');
224
+            $resultEntries['budget']['duracion_fin'] = $this->existNodo($procurementProject['PlannedPeriod'], 'EndDate', 'string');
225
+            $resultEntries['budget']['medida'] = $this->existAttribute($procurementProject['PlannedPeriod'], "DurationMeasure", "string", 'unitCode');
225 226
 
226
-            $resultEntries['budget']['contractExtension'] = $this->existNodo($procurementProject->ContractExtension, 'OptionsDescription', 'string');
227
+            $resultEntries['budget']['contractExtension'] = $this->existNodo($procurementProject['ContractExtension'], 'OptionsDescription', 'string');
227 228
         }
228 229
 
229
-        $resultFinal = $this->array_remove_empty($resultEntries);
230
-        return $resultFinal;
230
+        return $resultEntries;
231 231
     }
232 232
 
233 233
     private function nodoProcurementProjectLot($xml)
234 234
     {
235 235
         $resultEntries = array();
236
-        $procurementProjectLot = $xml->ContractFolderStatus->ProcurementProjectLot;
237
-
238
-        if (isset($procurementProjectLot)) {
236
+        if (array_key_exists("ProcurementProjectLot", $xml['ContractFolderStatus'])) {
237
+            $procurementProjectLot = $xml['ContractFolderStatus']['ProcurementProjectLot'];
239 238
             for ($i = 0; $i < count($procurementProjectLot); $i++) {
240
-                $resultEntries[$i]['idProcurementLot'] = $this->existNodo($procurementProjectLot[$i], 'ID', 'string');
241
-                $resultEntries[$i]['name'] = $this->existNodo($procurementProjectLot[$i]->ProcurementProject, 'Name', 'string');
242
-                $resultEntries[$i]['totalAmount'] = $this->existNodo($procurementProjectLot[$i]->ProcurementProject->BudgetAmount, 'TotalAmount', 'string');
243
-                $resultEntries[$i]['taxExclusiveAmount'] = $this->existNodo($procurementProjectLot[$i]->ProcurementProject->BudgetAmount, 'TaxExclusiveAmount', 'string');
244
-
245
-                $clasificacionItems = $procurementProjectLot[$i]->ProcurementProject->RequiredCommodityClassification;
246
-                if (isset($clasificacionItems)) {
239
+                $resultEntries["lot"][$i]['idProcurementLot'] = $this->existNodo($procurementProjectLot[$i], 'ID', 'string');
240
+                $resultEntries["lot"][$i]['name'] = $this->existNodo($procurementProjectLot[$i]['ProcurementProject'], 'Name', 'string');
241
+                $resultEntries["lot"][$i]['totalAmount'] = $this->existNodo($procurementProjectLot[$i]['ProcurementProject']['BudgetAmount'], 'TotalAmount', 'string');
242
+                $resultEntries["lot"][$i]['taxExclusiveAmount'] = $this->existNodo($procurementProjectLot[$i]['ProcurementProject']['BudgetAmount'], 'TaxExclusiveAmount', 'string');
243
+                $resultEntries["lot"][$i]['id_ajena_licitacion'] = $this->idLicitacion;
244
+                $resultEntries["lot"][$i]['id_compuesta'] = $this->idLicitacion . "_05_" . $i;
245
+
246
+                if (array_key_exists("RequiredCommodityClassification", $xml['ContractFolderStatus']['ProcurementProject'])) {
247
+                    $clasificacionItems = $xml['ContractFolderStatus']['ProcurementProjectLot']['RequiredCommodityClassification'];
247 248
                     for ($j = 0; $j < count($clasificacionItems); $j++) {
248
-                        $resultEntries[$i]['itemClassification'][$j]['idItem'] = $this->existNodo($clasificacionItems[$j], "ItemClassificationCode", "string");
249
-                        $resultEntries[$i]['itemClassification'][$j]['id_attr'] = $this->existAttribute($clasificacionItems[$j], "ItemClassificationCode", "string", 'listURI');
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;
250 253
                     }
251 254
                 }
252 255
 
253
-                if (isset($procurementProjectLot[$i]->ProcurementProject->RealizedLocation)) {
254
-                    $resultEntries[$i]['countrySubentity'] = $this->existNodo($procurementProjectLot[$i]->ProcurementProject->RealizedLocation, 'CountrySubentity', 'string');
255
-                    $resultEntries[$i]['countrySubentityCode'] = $this->existNodo($procurementProjectLot[$i]->ProcurementProject->RealizedLocation, 'CountrySubentityCode', 'string');
256
-                    $resultEntries[$i]['identificationCode'] = $this->existNodo($procurementProjectLot[$i]->ProcurementProject->RealizedLocation->Address->Country, 'IdentificationCode', 'string');
257
-                    $resultEntries[$i]['nameLocation'] = $this->existNodo($procurementProjectLot[$i]->ProcurementProject->RealizedLocation->Address->Country, 'Name', 'string');
256
+                if (array_key_exists("RealizedLocation", $xml['ContractFolderStatus']['ProcurementProject'])) {
257
+                    $resultEntries["lot"][$i]['countrySubentity'] = $this->existNodo($procurementProjectLot[$i]['ProcurementProject']['RealizedLocation'], 'CountrySubentity', 'string');
258
+                    $resultEntries["lot"][$i]['countrySubentityCode'] = $this->existNodo($procurementProjectLot[$i]['ProcurementProject']['RealizedLocation'], 'CountrySubentityCode', 'string');
259
+                    $resultEntries["lot"][$i]['identificationCode'] = $this->existNodo($procurementProjectLot[$i]['ProcurementProject']['RealizedLocation']['Address']['Country'], 'IdentificationCode', 'string');
260
+                    $resultEntries["lot"][$i]['nameLocation'] = $this->existNodo($procurementProjectLot[$i]['ProcurementProject']['RealizedLocation']['Address']['Country'], 'Name', 'string');
258 261
                 }
259 262
             }
260 263
         }
@@ -262,198 +265,235 @@ class ParserFile
262 265
         return $resultFinal;
263 266
     }
264 267
 
265
-    private function nodoTenderResult($xml)
268
+    /*private function nodoTenderResult($xml)
266 269
     {
267
-        $resultEntries = array();
268
-        $tenderResult = $xml->ContractFolderStatus->TenderResult;
269
-        for ($i = 0; $i < count($tenderResult); $i++) {
270
-            $resultEntries[$i]['resultCode'] = $this->existNodo($tenderResult[$i], 'ResultCode', 'string');
271
-            $resultEntries[$i]['description'] = $this->existNodo($tenderResult[$i], 'Description', 'string');
272
-            $resultEntries[$i]['awardDate'] = $this->existNodo($tenderResult[$i], 'AwardDate', 'string');
273
-            $resultEntries[$i]['receivedTenderQuantity'] = $this->existNodo($tenderResult[$i], 'ReceivedTenderQuantity', 'string');
274
-            $resultEntries[$i]['lowerTenderAmount'] = $this->existNodo($tenderResult[$i], 'LowerTenderAmount', 'string');
275
-            $resultEntries[$i]['higherTenderAmount'] = $this->existNodo($tenderResult[$i], 'HigherTenderAmount', 'string');
276
-            $resultEntries[$i]['startDate'] = $this->existNodo($tenderResult[$i], 'StartDate', 'string');
277
-            $resultEntries[$i]['smeawardedIndicator'] = $this->existNodo($tenderResult[$i], 'SMEAwardedIndicator', 'string');
278
-            //AwardedTenderedProject
279
-            $resultEntries[$i]['contract_id'] = $this->existNodo($tenderResult[$i]->Contract, 'ID', 'string');
280
-            $resultEntries[$i]['contract_issueDate'] = $this->existNodo($tenderResult[$i]->Contract, 'IssueDate', 'string');
281
-
282
-            $winningParty = $tenderResult[$i]->WinningParty;
283
-            if (isset($winningParty)) {
284
-                $resultEntries[$i]['partyIdentification'] = $this->existNodo($winningParty->PartyIdentification, 'ID', 'string');
285
-                $resultEntries[$i]['partyName'] = $this->existNodo($winningParty->PartyName, 'Name', 'string');
286
-            }
287
-            $awardedTenderedProject = $tenderResult[$i]->AwardedTenderedProject;
288
-            if (isset($awardedTenderedProject)) {
289
-                $resultEntries[$i]['procurementProjectLotID'] = $this->existNodo($awardedTenderedProject, 'ProcurementProjectLotID', 'string');
290
-                $resultEntries[$i]['TaxExclusiveAmount'] = $this->existNodo($awardedTenderedProject->LegalMonetaryTotal, 'TaxExclusiveAmount', 'string');
291
-                $resultEntries[$i]['PayableAmount'] = $this->existNodo($awardedTenderedProject->LegalMonetaryTotal, 'PayableAmount', 'string');
292
-            }
293
-        }
294
-        //$resultFinal = $this->array_remove_empty($resultEntries);
295
-        $resultFinal = $this->checkArrayValuesEmpty($resultEntries);
296
-        return $resultFinal;
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;
297 302
     }
298 303
 
299 304
     private function nodoTenderingTerms($xml)
300 305
     {
301
-        $resultEntries = array();
302
-        $TenderingTerms = $xml->ContractFolderStatus->TenderingTerms;
303
-
304
-        if (isset($TenderingTerms)) {
305
-
306
-            $resultEntries[0]['requiredCurriculaIndicator'] = $this->existNodo($TenderingTerms, 'RequiredCurriculaIndicator', 'string');
307
-            $resultEntries[0]['variantConstraintIndicator'] = $this->existNodo($TenderingTerms, 'VariantConstraintIndicator', 'string');
308
-            $resultEntries[0]['fundingProgramCode'] = $this->existNodo($TenderingTerms, 'FundingProgramCode', 'string');
309
-            if (isset($TenderingTerms->RequiredFinancialGuarantee->GuaranteeTypeCode)) {
310
-                $resultEntries[0]['guaranteeTypeCode'] = $this->existNodo($TenderingTerms->RequiredFinancialGuarantee, 'GuaranteeTypeCode', 'string');
311
-                $resultEntries[0]['guaranteeTypeCode_attr'] = $this->existAttribute($TenderingTerms->RequiredFinancialGuarantee, "GuaranteeTypeCode", "string", 'listURI');
312
-                $resultEntries[0]['requiredFinancialGuarantee_Amount'] = $this->existNodo($TenderingTerms->RequiredFinancialGuarantee, 'AmountRate', 'string');
313
-            }
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
+    }
314 321
 
315
-            $resultEntries[0]['procurementLegislationDocumentReference'] = $this->existNodo($TenderingTerms->ProcurementLegislationDocumentReference, 'ID', 'string');
316
-            $resultEntries[0]['allowedSubcontractTerms'] = $this->existNodo($TenderingTerms->AllowedSubcontractTerms, 'Description', 'string');
322
+    $resultEntries[0]['procurementLegislationDocumentReference'] = $this->existNodo($TenderingTerms->ProcurementLegislationDocumentReference, 'ID', 'string');
323
+    $resultEntries[0]['allowedSubcontractTerms'] = $this->existNodo($TenderingTerms->AllowedSubcontractTerms, 'Description', 'string');
317 324
 
318
-            $tendererAwardingTerms = $TenderingTerms->AwardingTerms;
319
-            if (isset($tendererAwardingTerms) && !empty($tendererAwardingTerms)) {
320
-                for ($i = 0; $i < count($tendererAwardingTerms->AwardingCriteria); $i++) {
321
-                    $resultEntries[1][$i]['evaluationCriteriaTypeCode'] = $this->existNodo($tendererAwardingTerms[$i], 'Description', 'string');
322
-                    $resultEntries[1][$i]['description'] = $this->existNodo($tendererAwardingTerms[$i], 'WeightNumeric', 'string');
323
-                }
324
-            }
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
+    }
325 334
 
326
-            $tendererQualificationRequest = $TenderingTerms->TendererQualificationRequest;
327
-            if (isset($tendererQualificationRequest) && !empty($tendererQualificationRequest)) {
328
-                $resultEntries[0]['description'] = $this->existNodo($tendererQualificationRequest, 'Description', 'string');
329
-                $resultEntries[0]['personalSituation'] = $this->existNodo($tendererQualificationRequest, 'PersonalSituation', 'string');
330
-                for ($i = 0; $i < count($tendererQualificationRequest); $i++) {
331
-                    if (isset($tendererQualificationRequest[$i]->TechnicalEvaluationCriteria->EvaluationCriteriaTypeCode)) {
332
-                        $resultEntries[2][$i]['evaluationCriteriaTypeCode'] = $this->existNodo($tendererQualificationRequest[$i]->TechnicalEvaluationCriteria, 'EvaluationCriteriaTypeCode', 'string');
333
-                        $resultEntries[2][$i]['evaluationCriteriaTypeCode_attr'] = $this->existAttribute($tendererQualificationRequest[$i]->TechnicalEvaluationCriteria, "EvaluationCriteriaTypeCode", "sting", 'listURI');
334
-                        $resultEntries[2][$i]['description'] = $this->existNodo($tendererQualificationRequest[$i]->TechnicalEvaluationCriteria, 'Description', 'string');
335
-                    }
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
+    }
336 347
 
337
-                }
338
-            }
348
+    }
349
+    }
339 350
 
340
-            if (isset($TenderingTerms->TendererQualificationRequest->FinancialEvaluationCriteria)
341
-                && !empty($TenderingTerms->TendererQualificationRequest->FinancialEvaluationCriteria)) {
342
-                $financialEvaluationCriteria = $TenderingTerms->TendererQualificationRequest->FinancialEvaluationCriteria;
343
-                for ($i = 0; $i < count($financialEvaluationCriteria); $i++) {
344
-                    $resultEntries[3][$i]['evaluationCriteriaTypeCode'] = $this->existNodo($financialEvaluationCriteria[$i], 'EvaluationCriteriaTypeCode', 'string');
345
-                    $resultEntries[3][$i]['evaluationCriteriaTypeCode_attr'] = $this->existAttribute($financialEvaluationCriteria[$i], "EvaluationCriteriaTypeCode", "string", 'listURI');
346
-                    $resultEntries[3][$i]['description'] = $this->existNodo($financialEvaluationCriteria[$i], 'Description', 'string');
347
-                }
348
-            }
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
+    }
349 362
 
350
-            if (isset($TenderingTerms->TendererQualificationRequest->SpecificTendererRequirement)
351
-                && !empty($TenderingTerms->TendererQualificationRequest->SpecificTendererRequirement)) {
352
-                $specificTendererRequirement = $TenderingTerms->TendererQualificationRequest->SpecificTendererRequirement;
353
-                for ($i = 0; $i < count($specificTendererRequirement); $i++) {
363
+    if (isset($TenderingTerms->TendererQualificationRequest->SpecificTendererRequirement)
364
+    && !empty($TenderingTerms->TendererQualificationRequest->SpecificTendererRequirement)) {
365
+    $specificTendererRequirement = $TenderingTerms->TendererQualificationRequest->SpecificTendererRequirement;
366
+    for ($i = 0; $i < count($specificTendererRequirement); $i++) {
354 367
 
355
-                    $resultEntries[4][$i]['evaluationCriteriaTypeCode'] = $this->existNodo($specificTendererRequirement[$i]->SpecificTendererRequirement, 'RequirementTypeCode', 'string');
356
-                    $resultEntries[4][$i]['evaluationCriteriaTypeCode_attr'] = $this->existAttribute($specificTendererRequirement[$i]->SpecificTendererRequirement, "RequirementTypeCode", "string", 'listURI');
357
-                }
358
-            }
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
+    }
359 374
 
360
-            $resultEntries[0]['language'] = $this->existNodo($TenderingTerms->Language, 'ID', 'string');
361
-        }
375
+    $resultEntries[0]['language'] = $this->existNodo($TenderingTerms->Language, 'ID', 'string');
376
+    }
362 377
 
363
-        //$resultFinal = $this->array_remove_empty($resultEntries);
364
-        $resultFinal = $this->checkArrayValuesEmpty($resultEntries);
365
-        return $resultFinal;
378
+    //$resultFinal = $this->array_remove_empty($resultEntries);
379
+    $resultFinal = $this->checkArrayValuesEmpty($resultEntries);
380
+    return $resultFinal;
366 381
     }
367 382
 
368 383
     private function nodoTenderingProcess($xml)
369 384
     {
370
-        $resultEntries = array();
371
-        $tenderingProcess = $xml->ContractFolderStatus->TenderingProcess;
372
-
373
-        if (isset($tenderingProcess)) {
374
-            //TenderingProcess
375
-            $resultEntries['procedureCode'] = $this->existNodo($tenderingProcess, 'ProcedureCode', 'string');
376
-            $resultEntries['procedureCode_attr'] = $this->existAttribute($tenderingProcess, "ProcedureCode", "string", 'listURI');
377
-
378
-            $resultEntries['urgencyCode'] = $this->existNodo($tenderingProcess, 'UrgencyCode', 'string');
379
-            $resultEntries['urgencyCode_attr'] = $this->existAttribute($tenderingProcess, "UrgencyCode", "string", 'listURI');
380
-
381
-            $resultEntries['contractingSystemCode'] = $this->existNodo($tenderingProcess, 'ContractingSystemCode', 'string');
382
-            $resultEntries['contractingSystemCode_attr'] = $this->existAttribute($tenderingProcess, "ContractingSystemCode", "string", 'listURI');
383
-
384
-            $resultEntries['partPresentationCode'] = $this->existNodo($tenderingProcess, 'PartPresentationCode', 'string');
385
-            $resultEntries['partPresentationCode_attr'] = $this->existAttribute($tenderingProcess, "PartPresentationCode", "string", 'listURI');
386
-
387
-            $resultEntries['submissionMethodCode'] = $this->existNodo($tenderingProcess, 'SubmissionMethodCode', 'string');
388
-            $resultEntries['submissionMethodCode_attr'] = $this->existAttribute($tenderingProcess, "SubmissionMethodCode", "string", 'listURI');
389
-
390
-            $resultEntries['maximumLotPresentationQuantity'] = $this->existNodo($tenderingProcess, 'MaximumLotPresentationQuantity', 'string');
391
-            $resultEntries['maximumTendererAwardedLotsQuantity'] = $this->existNodo($tenderingProcess, 'MaximumTendererAwardedLotsQuantity', 'string');
392
-            $resultEntries['deadLineEndDate'] = $this->existNodo($tenderingProcess->TenderSubmissionDeadlinePeriod, 'EndDate', 'string');
393
-            $resultEntries['deadLineEndTime'] = $this->existNodo($tenderingProcess->TenderSubmissionDeadlinePeriod, 'EndTime', 'string');
394
-            $resultEntries['deadLineDescription'] = $this->existNodo($tenderingProcess->TenderSubmissionDeadlinePeriod, 'Description', 'string');
395
-            $resultEntries['auctionTerms'] = $this->existNodo($tenderingProcess->AuctionTerms, 'AuctionConstraintIndicator', 'string');
396
-            $resultEntries['LotsCombinationContractingAuthorityRights'] = $this->existNodo($tenderingProcess, 'LotsCombinationContractingAuthorityRights', 'string');
397
-            $resultEntries['documentAvailablePeriod_EndDate'] = $this->existNodo($tenderingProcess->DocumentAvailabilityPeriod, 'EndDate', 'string');
398
-            $resultEntries['documentAvailablePeriod_EndTime'] = $this->existNodo($tenderingProcess->DocumentAvailabilityPeriod, 'EndTime', 'string');
399
-        }
400
-        //$resultFinal = $this->array_remove_empty($resultEntries);
401
-        $resultFinal = $this->checkArrayValuesEmpty($resultEntries);
402
-        return $resultFinal;
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";
403 416
     }
417
+    //$resultFinal = $this->array_remove_empty($resultEntries);
418
+    $resultFinal = $this->checkArrayValuesEmpty($resultEntries);
419
+    return $resultFinal;
420
+    }*/
404 421
 
405 422
     private function nodoLegalDoc($xml)
406 423
     {
407 424
         $resultEntries = array();
408
-        $legalDocumentReference = $xml->ContractFolderStatus->LegalDocumentReference;
409
-
410
-        if (isset($legalDocumentReference)) {
425
+        if (array_key_exists("LegalDocumentReference", $xml['ContractFolderStatus'])) {
426
+            $legalDocumentReference = $xml['ContractFolderStatus']['LegalDocumentReference'];
411 427
 
412
-            for ($i = 0; $i < count($legalDocumentReference); $i++) {
413
-                $resultEntries[$i]['idDoc'] = $this->existNodo($legalDocumentReference[$i], 'ID', 'string');
414
-                $resultEntries[$i]['attachment'] = $this->existNodo($legalDocumentReference[$i]->Attachment->ExternalReference, 'URI', 'string');
415
-                $resultEntries[$i]['documentHash'] = $this->existNodo($legalDocumentReference[$i]->Attachment->ExternalReference, 'DocumentHash', 'string');
416
-            }
428
+            $resultEntries['idDoc'] = $this->existNodo($legalDocumentReference, 'ID', 'string');
429
+            $resultEntries['attachment'] = $this->existNodo($legalDocumentReference['Attachment']['ExternalReference'], 'URI', 'string');
430
+            $resultEntries['documentHash'] = $this->existNodo($legalDocumentReference['Attachment']['ExternalReference'], 'DocumentHash', 'string');
431
+            $resultEntries['id_ajena_licitacion'] = $this->idLicitacion;
432
+            $resultEntries['id_compuesta'] = $this->idLicitacion . "_09";
417 433
 
434
+            return $resultEntries;
418 435
         }
419
-        $resultFinal = $this->checkArrayValuesEmpty($resultEntries);
420
-        return $resultFinal;
436
+        //$resultFinal = $this->checkArrayValuesEmpty($resultEntries);
437
+        //return $this->idLicitacion;
421 438
     }
422 439
 
423 440
     private function nodoTechnicalDocumentReference($xml)
424 441
     {
425 442
         $resultEntries = array();
426
-        $technicalDocumentReference = $xml->ContractFolderStatus->TechnicalDocumentReference;
427
-
428
-        if (isset($technicalDocumentReference)) {
429
-
430
-            for ($i = 0; $i < count($technicalDocumentReference); $i++) {
431
-                $resultEntries[$i]['idDoc'] = $this->existNodo($technicalDocumentReference[$i], 'ID', 'string');
432
-                $resultEntries[$i]['attachment'] = $this->existNodo($technicalDocumentReference[$i]->Attachment->ExternalReference, 'URI', 'string');
433
-                $resultEntries[$i]['documentHash'] = $this->existNodo($technicalDocumentReference[$i]->Attachment->ExternalReference, 'DocumentHash', 'string');
434
-            }
435
-
443
+        if (array_key_exists("TechnicalDocumentReference", $xml['ContractFolderStatus'])) {
444
+            $technicalDocumentReference = $xml['ContractFolderStatus']['TechnicalDocumentReference'];
445
+            $resultEntries['idDoc'] = $this->existNodo($technicalDocumentReference, 'ID', 'string');
446
+            $resultEntries['attachment'] = $this->existNodo($technicalDocumentReference['Attachment']['ExternalReference'], 'URI', 'string');
447
+            $resultEntries['documentHash'] = $this->existNodo($technicalDocumentReference['Attachment']['ExternalReference'], 'DocumentHash', 'string');
448
+            $resultEntries['id_ajena_licitacion'] = $this->idLicitacion;
449
+            $resultEntries['id_compuesta'] = $this->idLicitacion . "_10";
450
+
451
+            return $resultEntries;
436 452
         }
437
-        $resultFinal = $this->checkArrayValuesEmpty($resultEntries);
438
-        return $resultFinal;
453
+        //$resultFinal = $this->checkArrayValuesEmpty($resultEntries);
454
+        //return $this->idLicitacion;
439 455
     }
440 456
 
441 457
     private function nodoAdditionalDocumentReference($xml)
442 458
     {
443 459
         $resultEntries = array();
444
-        $additionalDocumentReference = $xml->ContractFolderStatus->AdditionalDocumentReference;
445
-
446
-        if (isset($additionalDocumentReference)) {
447
-
460
+        if (array_key_exists("AdditionalDocumentReference", $xml['ContractFolderStatus'])) {
461
+            $additionalDocumentReference = $xml['ContractFolderStatus']['AdditionalDocumentReference'];
462
+            if (array_key_first($additionalDocumentReference) !== 0) {
463
+                $additionalDocumentReference = array(0 => $additionalDocumentReference);
464
+            }
448 465
             for ($i = 0; $i < count($additionalDocumentReference); $i++) {
449 466
                 $resultEntries[$i]['idDoc'] = $this->existNodo($additionalDocumentReference[$i], 'ID', 'string');
450
-                $resultEntries[$i]['attachment'] = $this->existNodo($additionalDocumentReference[$i]->Attachment->ExternalReference, 'URI', 'string');
451
-                $resultEntries[$i]['documentHash'] = $this->existNodo($additionalDocumentReference[$i]->Attachment->ExternalReference, 'DocumentHash', 'string');
467
+                $resultEntries[$i]['attachment'] = $this->existNodo($additionalDocumentReference[$i]['Attachment']['ExternalReference'], 'URI', 'string');
468
+                $resultEntries[$i]['documentHash'] = $this->existNodo($additionalDocumentReference[$i]['Attachment']['ExternalReference'], 'DocumentHash', 'string');
469
+                $resultEntries[$i]['id_ajena_licitacion'] = $this->idLicitacion;
470
+                $resultEntries[$i]['id_compuesta'] = $this->idLicitacion . "_11_" . $i;
452 471
             }
472
+            return $resultEntries;
473
+        }
474
+        //$resultFinal = $this->checkArrayValuesEmpty($resultEntries);
475
+        //return $this->idLicitacion;
476
+    }
477
+
478
+    private function nodoGeneralDocuments($xml)
479
+    {
480
+        $resultEntries = array();
481
+        if (array_key_exists("GeneralDocument", $xml['ContractFolderStatus'])) {
482
+            $generalDocument = $xml['ContractFolderStatus']['GeneralDocument'];
453 483
 
484
+            if (array_key_first($generalDocument) !== 0) {
485
+                $generalDocument = array(0 => $generalDocument);
486
+            }
487
+            for ($i = 0; $i < count($generalDocument); $i++) {
488
+                $resultEntries[$i]['idDoc'] = $this->existNodo($generalDocument[$i]['GeneralDocumentDocumentReference'], 'ID', 'string');
489
+                $resultEntries[$i]['attachment'] = $this->existNodo($generalDocument[$i]['GeneralDocumentDocumentReference']['Attachment']['ExternalReference'], 'URI', 'string');
490
+                $resultEntries[$i]['fileName'] = $this->existNodo($generalDocument[$i]['GeneralDocumentDocumentReference']['Attachment']['ExternalReference'], 'FileName', 'string');
491
+                $resultEntries[$i]['id_ajena_licitacion'] = $this->idLicitacion;
492
+                $resultEntries[$i]['id_compuesta'] = $this->idLicitacion . "_13_" . $i;
493
+            }
494
+            return $resultEntries;
454 495
         }
455
-        $resultFinal = $this->checkArrayValuesEmpty($resultEntries);
456
-        return $resultFinal;
496
+        //return $this->idLicitacion;
457 497
     }
458 498
 
459 499
     private function nodoValidNoticeInfo($xml)
@@ -465,48 +505,35 @@ class ParserFile
465 505
             for ($i = 0; $i < count($validNoticeInfo); $i++) {
466 506
                 $resultEntries[$i]['noticeTypeCode'] = $this->existNodo($validNoticeInfo[$i], 'NoticeTypeCode', 'string');
467 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;
468 510
 
469 511
                 if (isset($validNoticeInfo[$i]->AdditionalPublicationStatus)) {
470 512
                     for ($j = 0; $j < count($validNoticeInfo[$i]->AdditionalPublicationStatus->AdditionalPublicationDocumentReference); $j++) {
471 513
 
472 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;
473 517
                         if ($validNoticeInfo[$i]->AdditionalPublicationStatus->AdditionalPublicationDocumentReference[$j]->DocumentTypeCode) {
474 518
                             $resultEntries[$i]['documento'][$j]['documento'] = $this->existNodo($validNoticeInfo[$i]->AdditionalPublicationStatus->AdditionalPublicationDocumentReference[$j]->Attachment->ExternalReference, 'URI', 'string');
475 519
                             $resultEntries[$i]['documento'][$j]['filename'] = $this->existNodo($validNoticeInfo[$i]->AdditionalPublicationStatus->AdditionalPublicationDocumentReference[$j]->Attachment->ExternalReference, 'FileName', 'string');
476
-
520
+                            $resultEntries[$i]['documento'][$j]['id_ajena_licitacion'] = $this->idLicitacion;
521
+                            $resultEntries[$i]['documento'][$j]['id_compuesta'] = $this->idLicitacion . "_12_" . $i . "_" . $j;
477 522
                         }
478 523
                     }
479 524
                 }
480 525
             }
481 526
         }
482 527
 
483
-        $resultFinal = $this->checkArrayValuesEmpty($resultEntries);
528
+        //$resultFinal = $this->checkArrayValuesEmpty($resultEntries);
484 529
         return $resultEntries;
485 530
     }
486 531
 
487
-    private function nodoGeneralDocuments($xml)
488
-    {
489
-        $resultEntries = array();
490
-        $generalDocument = $xml->ContractFolderStatus->GeneralDocument->GeneralDocumentDocumentReference;
491
-
492
-        if (isset($generalDocument)) {
493
-
494
-            for ($i = 0; $i < count($generalDocument); $i++) {
495
-                $resultEntries[$i]['idDoc'] = $this->existNodo($generalDocument[$i], 'ID', 'string');
496
-                $resultEntries[$i]['attachment'] = $this->existNodo($generalDocument[$i]->Attachment->ExternalReference, 'URI', 'string');
497
-                $resultEntries[$i]['fileName'] = $this->existNodo($generalDocument[$i]->Attachment->ExternalReference, 'FileName', 'string');
498
-            }
499
-
500
-        }
501
-        $resultFinal = $this->checkArrayValuesEmpty($resultEntries);
502
-        return $resultFinal;
503
-    }
504
-
505 532
     private function existNodo($nodo, $nodoHijo, $tipo)
506 533
     {
507 534
 
508 535
         if (isset($nodo) && @count($nodo) > 0) {
509
-            return $this->switchTipo($tipo, $nodo->{$nodoHijo});
536
+            return $this->switchTipo($tipo, $nodo[$nodoHijo]);
510 537
         } else {
511 538
             return "";
512 539
         }