Subversion Repositories Sigmater

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
6 Andrea 1
<?php
2
 
3
// ************************************************
4
// INCLUDE CLASSE ZIP
5
// ************************************************
6
require_once(APP_PATH.'include/LSTU_pclzip.lib.php');
7
 
8
// ************************************************
9
// INCLUDE CLASSE PEAR Mail/mimeDecode.php
10
// ************************************************
11
require_once('Mail/mimeDecode.php');
12
 
13
// *******************************************************
14
// Classi per il parsing xml
15
// *******************************************************
16
require_once(APP_PATH.'include/LSTM_Incrementale_Fab.class.php');
17
require_once(APP_PATH.'include/LSTM_Incrementale_Ter.class.php');
18
require_once(APP_PATH.'include/LSTM_Incrementale_Sog.class.php');
19
require_once(APP_PATH.'include/LSTM_Incrementale_ICI.class.php');
20
require_once(APP_PATH.'include/LSTM_Incrementale_TARSU.class.php');
21
require_once(APP_PATH.'include/LSTM_Incrementale_TARES.class.php');
22
require_once(APP_PATH.'impiantodb/include/LSTM_staging_catasto.inc');
23
require_once(APP_PATH.'impiantodb/LSTM_operazioni_db.php');
24
 
25
function gestione_errore($err, $msg, $associata = false) {
26
 
27
	global $conn, $flag_ass;
28
 
29
	out('ERRORE = '.$err);
30
 
31
	@OCIRollback($conn);
32
 
33
	if ($associata)
34
		$flag_ass = 1;
35
 
36
	wlog($err, 1, $msg);
37
 
38
	if (!update_codstato(11))
39
		wlog(30014, 1);
40
 
41
	$flag_ass = 0;
42
 
43
}
44
 
45
function gestione_update_stato($associata) {
46
 
47
	global $flag_ass;
48
 
49
	if ($associata) {
50
 
51
		$flag_ass = 1;
52
		$autocommit = 0;
53
	}
54
	else {
55
 
56
		$autocommit = 1;
57
	}	
58
 
59
	$ret = update_codstato(12, $autocommit);
60
 
61
	$flag_ass = 0;
62
 
63
	if (!$ret) {
64
 
65
		gestione_errore(30009, '', $associata);
66
		return false;
67
	}	
68
 
69
	return true;
70
}	
71
 
72
function parse_xml(&$xml, $keyservizio) {
73
 
74
	//////////////////////////////////////////////////////////
75
	// opzioni per il costruttore della classe XML_Unserializer
76
	//////////////////////////////////////////////////////////
77
	$attribs_name = 'attribs';
78
	$options = array(
79
	                 'complexType' => 'array',
80
	                 'parseAttributes'   => true,
81
	                 'attributesArray'   => $attribs_name
82
	                );
83
 
84
	switch ($keyservizio) {
85
 
86
               case 5:
87
			//////////////////////////////////////////////////////////
88
			// istanza della classe Incrementale_TARSU
89
			//////////////////////////////////////////////////////////
90
                        $Parser = &new Incrementale_TARSU($options, 'http://www.agenziaterritorio.it/TARSU.xsd');     
91
		break;
92
		   case 3:
93
			//////////////////////////////////////////////////////////
94
			// istanza della classe Incrementale_TARES
95
			//////////////////////////////////////////////////////////
96
                        $Parser = &new Incrementale_TARES($options, 'http://www.agenziaentrate.it/TARES');     
97
		break;
98
               case 6:
99
 
100
			//////////////////////////////////////////////////////////
101
			// istanza della classe Incrementale_ICI
102
			//////////////////////////////////////////////////////////
103
			$Parser = &new Incrementale_ICI($options, 'http://www.agenziaterritorio.it/ICI.xsd');
104
		break;
105
 
106
 
107
		case 7:
108
 
109
			//////////////////////////////////////////////////////////
110
			// istanza della classe Incrementale_Fab
111
			//////////////////////////////////////////////////////////
112
			$Parser = &new Incrementale_Fab($options, 'http://www.agenziaterritorio.it/IncrementaleOggettiFabbricati.xsd');
113
 
114
		break;
115
 
116
		case 8:
117
		case 27:
118
 
119
			//////////////////////////////////////////////////////////
120
			// istanza della classe Incrementale_Ter
121
			//////////////////////////////////////////////////////////
122
			$Parser = &new Incrementale_Ter($options, 'http://www.agenziaterritorio.it/IncrementaleOggettiTerreni.xsd');
123
 
124
		break;		
125
 
126
		case 9:
127
		case 10:
128
 
129
			//////////////////////////////////////////////////////////
130
			// istanza della classe Incrementale_Sog
131
			//////////////////////////////////////////////////////////
132
			$Parser = &new Incrementale_Sog($options, 'http://www.agenziaterritorio.it/IncrementaleSoggetti.xsd');
133
 
134
		break;				
135
	}
136
 
137
	//////////////////////////////////////////////////////////
138
	// deserializzazione dell'xml
139
	//////////////////////////////////////////////////////////
140
	$status = $Parser->P_Unserialize($xml, false);    
141
	if (!$status) {
142
 
143
		return array(false, 30008, $Parser->P_error);
144
	}
145
 
146
	//////////////////////////////////////////////////////////
147
	// composizione array dati per staging
148
	//////////////////////////////////////////////////////////    
149
	$Parser->compose_staging();
150
 
151
	$arr_staging = $Parser->get_staging();
152
 
153
	if (empty($arr_staging))
154
		return array(false, 30023, 'Risultato parsing nullo');
155
	return array(true, $arr_staging, '');
156
}
157
 
158
function load_staging_tables(&$arr_staging, $protocollo_staging, &$extra) {
159
 
160
	global $conn, $staging_catasto, $GL_OCI_LOB;
161
 
162
	foreach ($arr_staging as $_prodotto=>$arr_tabella) {
163
		$ret_w = true;	
164
		foreach ($arr_tabella as $nr=>$arr_riga) {	
165
 
166
			// per i riferimenti planimetrici viene effettuata una insert per ogni pagina
167
			// della planimetria. Il record differisce solo per il numero pagina.
168
                        //echo "Il valore della fornitura vale".$_prodotto."\n"; 	
169
			if ($_prodotto == 'plan') {
170
				// in $arr_riga[8] c'� il totale delle pagine della planimetria
171
				$tot_pag = $arr_riga[8];
172
 
173
				// ciclo per sostituire il totale delle pagine con il numero pagina
174
				for ($npag = 1; $npag <= $tot_pag; $npag++) {
175
 
176
					$arr_riga[8] = $npag;
177
					$filename_plan = APP_PATH.'tmp/'.$arr_riga[7].'.'.str_pad($npag, 3, '0', STR_PAD_LEFT);
178
                                        if(file_exists($filename_plan)) {  
179
						list($ret_w, $err, $msg)=insert_blob_plan($filename_plan,$arr_riga,$protocollo_staging);
180
						if (!$ret_w) {
181
                                			return array(false, 30022, '');
182
                                        	} 
183
                                        }	
184
				}
185
 
186
			}
187
			else {
188
 
189
                                 // controllo sul flag classamento MM 
190
           			 if($_prodotto == 'uiu'){
191
					if(!is_numeric($arr_riga[43])){
192
						$arr_riga[43]=-1;
193
					}
194
                                 }
195
				// chiamata alla funzione di scrittura sulle tabelle di staging
196
				$ret_w = write_impianto_db($conn, $_prodotto, null, $arr_riga, $staging_catasto, '', $protocollo_staging, 0);
197
			}
198
 
199
			if (!$ret_w) {
200
 
201
				return array(false, 30022, '');
202
			}
203
			/*
204
			elseif ($_prodotto == 'plan') {
205
 
206
				// se si tratta di planimetrie bisogna riempire anche il campo blob
207
				// (precedentemente inserito come EMPTY_BLOB()) usando la risorsa
208
				// globale $GL_OCI_LOB settata nelle funzioni oci_db;				
209
 
210
				global $GL_OCI_LOB;
211
 
212
				// chiamata alla funzione che prepara le planimetrie in un file zip;
213
				// parametri in input: nome planimetria, numero fogli;
214
				list($ret, $filename) = get_planimetrie_zipped($arr_riga[7], $arr_riga[8]);
215
 
216
				if (!$ret)
217
					return array(false, 30025, 'Creazione file zip planimetrie staging');
218
 
219
			    if (!$GL_OCI_LOB->savefile($filename)) {
220
 
221
			    	unlink($filename);
222
			        return array(false, 30024, '');
223
			    }
224
 
225
			    unlink($filename);
226
			}
227
			*/
228
			elseif ($_prodotto == 'uiu' || $_prodotto == 'particelle' || $_prodotto == 'titolarita') {
229
 
230
				// INSERT NELLA TABELLA TCW20_CARICAMENTO
231
 
232
				if ($_prodotto == 'uiu') {
233
 
234
					$arr_caricamento[0] = array(1, $arr_riga[22], 'F', $arr_riga[1], $arr_riga[2], $arr_riga[35], $arr_riga[4], 0, '', '', '', '', '', '', '', '', '', '', $extra[$nr][1], $extra[$nr][2], $extra[$nr][3], $extra[$nr][4], $extra[$nr][5]);
235
 
236
					if ($arr_riga[36] != '')
237
						$arr_caricamento[1] = array(1, $arr_riga[28], 'F', $arr_riga[1], $arr_riga[2], $arr_riga[36], $arr_riga[4], 1, '', '', '', '', '', '', '', '', '', '', $extra[$nr][1], $extra[$nr][2], $extra[$nr][3], $extra[$nr][4], $extra[$nr][5]);
238
 
239
				}
240
				elseif ($_prodotto == 'particelle') {
241
 
242
					$arr_caricamento[0] = array(5, $arr_riga[23], 'T', $arr_riga[1], $arr_riga[2], $arr_riga[36], $arr_riga[4], 0, '', '', '', '', '', '', '', '', '', '', '', '', '', '', '');
243
 
244
					if ($arr_riga[37] != '')
245
						$arr_caricamento[1] = array(5, $arr_riga[29], 'T', $arr_riga[1], $arr_riga[2], $arr_riga[37], $arr_riga[4], 1, '', '', '', '', '', '', '', '', '', '', '', '', '', '', '');
246
 
247
				}
248
				elseif ($_prodotto == 'titolarita') {
249
 
250
					// controllo tipo catasto per settare tipo operazione
251
					$tipo_operazione = ($arr_riga[6] == 'F') ? 9 : 12;
252
 
253
					$arr_caricamento[0] = array($tipo_operazione, $arr_riga[18], $arr_riga[6], $arr_riga[1], $arr_riga[2], $arr_riga[26], '', 0, '', '', '', '', '', '', '', '', '', '', '', '', '', '', '');
254
 
255
					if ($arr_riga[27] != '')
256
						$arr_caricamento[1] = array($tipo_operazione, $arr_riga[25], $arr_riga[6], $arr_riga[1], $arr_riga[2], $arr_riga[27], '', 1, '', '', '', '', '', '', '', '', '', '', '', '', '', '', '');
257
 
258
				}
259
 
260
				foreach ($arr_caricamento as $arr_carica_riga) {
261
 
262
					// chiamata alla funzione di scrittura sulle tabelle di staging
263
					$ret_w = write_impianto_db($conn, 'caricamento', null, $arr_carica_riga, $staging_catasto, '', $protocollo_staging, 0);
264
					if (!$ret_w)
265
						return array(false, 30022, '');
266
				}
267
 
268
				unset($arr_caricamento);
269
			}			
270
		}
271
	}
272
 
273
	return array(true, '', '');
274
}	
275
 
276
 
277
function get_xml(&$blob_zipped) {
278
 
279
    list($ret, $data_fname, $msg) = get_by_extension($blob_zipped, 'smime');
280
 
281
    if (!$ret)
282
    	return array(false, $data_fname, $msg);
283
 
284
    $smime = implode('', file($data_fname));
285
 
286
    unlink($data_fname);
287
 
288
	///////////////////////////////////////////////////////////////////
289
    // DECODIFICA DEL PKCS7 E RECUPERO DEL CORPO (BODY) DEL MESSAGGIO
290
    ///////////////////////////////////////////////////////////////////    
291
    $struct_pkcs7 = decode_pkcs7($smime);
292
 
293
	if (!isset($struct_pkcs7->parts[0]->body))
294
		return array(false, 30007, 'Decodifica PKCS7 fallita');
295
 
296
    $xml = $struct_pkcs7->parts[0]->body;	
297
 
298
	return array(true, $xml, '');
299
}
300
 
301
function gestione_fornitura_associata() {
302
 
303
	global $keyservizio, $keycom, $keysez, $progiscrizione, $periodo_da, $periodo_a, $keydett, $protocollo_ass;
304
 
305
	///////////////////////////////////////////////////////
306
	// CONTROLLO PRESENZA FORNITURA ASSOCIATA ED EVENTUALE
307
	// RECUPERO DI TOTALE_FILE E PROTOCOLLO
308
	///////////////////////////////////////////////////////		
309
	list($ret, $n_file_tot_ass, $protocollo_ass,$keydett_ass) = check_fornitura($progiscrizione, $periodo_da, $periodo_a, 1, $keydett, 4);
310
 
311
	if (!$ret)
312
		return array(false, 30013, '');
313
	elseif ($ret === 'NODATA')
314
		return array('NODATA', '', '');
315
 
316
	list($ret, $data_prot) = insert_protocollo_staging($keyservizio, $keycom, $keysez, $periodo_da, $periodo_a, $protocollo_ass, 0);
317
 
318
	if (!$ret)
319
		return array(false, $data_prot, '');
320
 
321
	$protocollo_staging = $data_prot;
322
 
323
	$arr_hash = array();
324
 
325
	/////////////////////////////////////////////////
326
	// CICLO SU OGNI FILE DELLA FORNITURA ASSOCIATA
327
	/////////////////////////////////////////////////		
328
	for ($idfile = 1; $idfile <= $n_file_tot_ass; $idfile++) {
329
 
330
		/////////////////////////////////////////////////
331
		// RECUPERO DEL FILE DELLA FORNITURA
332
		/////////////////////////////////////////////////	
333
		list($ret, $data, $msg) = extract_blob($progiscrizione, $periodo_da, $periodo_a, 1, $keydett_ass, $idfile);
334
 
335
		if (!$ret)			
336
			return array(false, $data, $msg);
337
 
338
		if ($keyservizio == 7) {
339
 
340
			///////////////////////////////////////////////////////
341
			// CALCOLO E MEMORIZZAZIONE DELL'HASH DELLE PLANIMETRIE
342
			// ($arr_hash passato per riferimento)
343
			///////////////////////////////////////////////////////
344
			list($ret, $err, $msg) = get_hash($data, $arr_hash);
345
		}
346
		elseif ($keyservizio == 27) {
347
 
348
			/////////////////////////////////////////////////
349
			// GESTIONE DELLE FORNITURE XML
350
			/////////////////////////////////////////////////
351
			list($ret, $err, $msg) = gestione_dati_xml($data, '', $protocollo_staging);
352
		}
353
 
354
		if (!$ret)
355
			return array(false, $err, $msg);			
356
	}	
357
 
358
        if(!update_codstato_ass(12,0,$keydett_ass))
359
		 return array(false,30009, 'Errore aggiornamento dello stato');   
360
 
361
	return array(true, $arr_hash, '');
362
}
363
 
364
function get_hash(&$blob_zipped, &$arr_hash) {
365
 
366
    list($ret, $data_fname, $msg) = get_by_extension($blob_zipped, 'zip');
367
 
368
    if (!$ret)
369
    	return array(false, $data_fname, $msg);
370
 
371
	$zip = new PclZip($data_fname);
372
 
373
	$arr_list = $zip->listContent();		
374
 
375
	if (!$arr_list)
376
		return array(false, 30021, 'Fallita lista del contenuto del file zip:'.$zip->errorInfo());
377
 
378
	foreach ($arr_list as $v) {
379
 
380
		if (!$zip->extractByIndex($v['index'], APP_PATH.'tmp'))
381
			return array(false, 30017, 'Fallita estrazione file da zip');
382
 
383
		$filename = basename($v['filename']);
384
 
385
		$arr_hash[$filename] = md5_file(APP_PATH.'tmp/'.$filename);
386
 
387
		//unlink(APP_PATH.'tmp/'.$filename);
388
	}
389
 
390
	unlink($data_fname);
391
 
392
	return array(true, '', '');
393
}
394
 
395
function check_hash($arr_hash, $arr_check) {
396
 
397
	foreach ($arr_check as $v) {
398
 
399
		$chiave = $v[1].'.'.str_pad($v[2], 3, '0', STR_PAD_LEFT);
400
 
401
		if (isset($arr_hash[$chiave])) {
402
 
403
			if ($arr_hash[$chiave] != $v[3])
404
				return array(false, 30019, 'Nome file: '.$chiave);
405
 
406
		}
407
		else {
408
 
409
			out('Nome file: '.$chiave.' non trovato');
410
			//return array(false, 30018, 'Nome file: '.$chiave);
411
		}	
412
	}
413
 
414
	return array(true, '', '');
415
}
416
 
417
function get_by_extension(&$blob_zipped, $ext) {
418
 
419
	$fname_blob = tempnam(APP_PATH.'tmp', 'BLOB_');
420
 
421
	if (!wfile($fname_blob, $blob_zipped))
422
		return array(false, 30005, 'Errore scrittura file: '.$fname_blob);
423
 
424
	$zip = new PclZip($fname_blob);
425
 
426
	$arr_list = $zip->listContent();
427
 
428
	if (!$arr_list)
429
		return array(false, 30020, 'Fallita lista del contenuto del file zip:'.$zip->errorInfo());
430
 
431
	foreach ($arr_list as $v) {
432
 
433
		$arr_name = explode('.', basename($v['filename']));
434
		$ext_file = end($arr_name);
435
 
436
		if ($ext_file == $ext) {
437
 
438
			$fname = APP_PATH.'tmp/'.basename($v['filename']);
439
			$index = $v['index'];
440
			break;
441
		}
442
	}
443
 
444
	if (!isset($index)) {
445
 
446
		unlink($fname_blob);
447
		return array(false, 30015, $ext.' non contenuto nel file zip');
448
	}
449
 
450
	if (!$zip->extractByIndex($index, APP_PATH.'tmp')) {
451
 
452
		unlink($fname_blob);
453
		return array(false, 30006, 'Fallita estrazione file: '.$fname);
454
	}
455
 
456
	unlink($fname_blob);
457
 
458
    return array(true, $fname, '');
459
}
460
 
461
function get_planimetrie_zipped($name, $number) {
462
 
463
	$fname_zip = tempnam(APP_PATH.'tmp', 'ZIP_');
464
 
465
	$zip = new PclZip($fname_zip);
466
 
467
	for ($i = 1; $i <= $number; $i++) {
468
 
469
		$filelist[] = APP_PATH.'tmp/'.$name.'.'.str_pad($i, 3, '0', STR_PAD_LEFT);
470
	}
471
 
472
	$ret = $zip->create($filelist, '', APP_PATH.'tmp');
473
 
474
	foreach ($filelist as $file) {
475
 
476
		unlink($file);
477
	}
478
 
479
	if (!$ret)
480
		return array(false, '');
481
 
482
	return array(true, $fname_zip);
483
}
484
 
485
function gestione_dati_xml(&$blob_zipped, $data_hash, $protocollo_staging) {
486
 
487
	global $keyservizio;
488
 
489
	/////////////////////////////////////////////////
490
	// RECUPERO DELL'XML DEL FILE DELLA FORNITURA
491
	/////////////////////////////////////////////////		
492
	list($ret, $data_xml, $msg) = get_xml($blob_zipped);
493
 
494
	if (!$ret)
495
		return array(false, $data_xml, $msg);
496
 
497
	////////////////////////////////////////////////////
498
	// PARSIG DELL'XML E CARICAMENTO DELL'ARRAY DI DATI
499
	////////////////////////////////////////////////////	
500
	list($ret, $data_staging, $msg) = parse_xml($data_xml, $keyservizio);
501
 
502
	if (!$ret)
503
		return array(false, $data_staging, $msg);
504
 
505
	if ('DATI_ASSENTI' != $data_staging) {
506
 
507
		if ($keyservizio == 7) {
508
 
509
			if (isset($data_staging['check'])) {	
510
				///////////////////////////////////////////////////////
511
				// SE IL SERVIZIO E' INCREMENTALE FABBRICATI
512
				// E DAL PARSING DELL'XML SI SONO OTTENUTI GLI HASH ->
513
				// CONTROLLO HASH
514
				///////////////////////////////////////////////////////
515
				list($ret, $err, $msg) = check_hash($data_hash, $data_staging['check']);
516
 
517
				// $data_staging['check'] viene eliminato perch� non deve essere passato
518
				// alla funzione load_staging_tables()
519
				unset($data_staging['check']);
520
 
521
				if (!$ret)
522
					return array(false, $err, $msg);
523
 
524
				out('OK HASH');
525
			}
526
 
527
			///////////////////////////////////////////////////////
528
			// SE IL SERVIZIO E' INCREMENTALE FABBRICATI
529
			// IMPOSTO $caricamento_extra PER I FLAGS
530
			// E POI RIPULISCO L'ARRAY DI STAGING
531
			///////////////////////////////////////////////////////
532
			$caricamento_extra = $data_staging['flags_fabbricati'];
533
			unset($data_staging['flags_fabbricati']);
534
                        //print_r($data_staging); 
535
		}
536
		else {
537
 
538
			$caricamento_extra = '';
539
		}	
540
 
541
		out('CARICAMENTO TABELLE DI STAGING');
542
 
543
		////////////////////////////////////////////////////
544
		// CARICAMENTO TABELLE DI STAGING
545
		////////////////////////////////////////////////////	
546
		list($ret, $err, $msg) = load_staging_tables($data_staging, $protocollo_staging, $caricamento_extra);
547
 
548
		if (!$ret)
549
			return array(false, $err, $msg);
550
	}
551
 
552
	return array(true, '', '');
553
}
554
 
555
function gestione_dati_zip(&$blob_zipped, $protocollo_fornitura, $protocollo_staging, $progressivo) {
556
 
557
	global $gl_PP_arr_xml;
558
 
559
	/////////////////////////////////////////////////
560
	// INCLUDE CLASSE PATH_PARSER
561
	/////////////////////////////////////////////////
562
 
563
	require_once(APP_PATH.'include/LSTM_class_path_parser.php');	
564
 
565
	/////////////////////////////////////////////////
566
	// RECUPERO DELL'XML DEL FILE DELLA FORNITURA
567
	/////////////////////////////////////////////////		
568
	list($ret, $data_xml, $msg) = get_xml($blob_zipped);
569
 
570
	if (!$ret)
571
		return array(false, $data_xml, $msg);
572
 
573
	/////////////////////////////////////////////////
574
    // LETTURA HASH DALL'XML
575
    /////////////////////////////////////////////////
576
 
577
        //MM Inizio Trattamento Dati Assenti
578
        //Cerco se i dati sono presenti
579
 
580
        $path_ass = '/DatiOut/DatiAssenti';
581
        //MODIFICA MM 
582
        if(read_xml_if_exist_single_tag($data_xml,$path_ass)){
583
         if(!empty($gl_PP_arr_xml)){
584
          if(array_key_exists($path_ass, $gl_PP_arr_xml)){
585
           $assenza_dati = $gl_PP_arr_xml[$path_ass];
586
           echo "Il valore dei Dati assenti vale ".$assenza_dati;
587
           if ('true' == $assenza_dati || '1' == $assenza_dati) 
588
            return array(true, '', '');
589
          }
590
         }
591
        }   
592
        //MM fine Trattamento Dati Assenti
593
 
594
        $path = '/DatiOut/DatiPresenti/ChecksumZip/Hash';
595
        read_xml_single_tag($data_xml, $path);
596
        $hash_in_xml = $gl_PP_arr_xml[$path];
597
 
598
	if (empty($hash_in_xml))
599
		return array(false, 30026, 'HASH DEL FILE ZIP NON PRESENTE');
600
 
601
	/////////////////////////////////////////////////
602
	// RECUPERO DELLO ZIP DEL FILE DELLA FORNITURA
603
	/////////////////////////////////////////////////		    
604
        list($ret, $data_fname, $msg) = get_by_extension($blob_zipped, 'zip');
605
 
606
        if (!$ret)
607
    	 return array(false, $data_fname, $msg);
608
 
609
		/////////////////////////////////////////////////
610
        // CALCOLO HASH DEL FILE
611
        /////////////////////////////////////////////////    	
612
        $hash_zip = md5_file($data_fname);
613
 
614
        //echo "IL VALORE DEL FILE HASH VALE=|".$hash_zip."|\n";
615
        //echo "IL VALORE DEL HASH NEL FILE XML VALE=|".$hash_in_xml."|\n";
616
        //echo "IL NOME FILE=|".$data_fname."|\n";
617
 
618
	/////////////////////////////////////////////////
619
        // CONFRONTO HASH
620
        /////////////////////////////////////////////////    
621
   	//if ($hash_zip != $hash_in_xml)
622
		//return array(false, 30027, '');
623
 
624
	////////////////////////////////////////////////////
625
	// INSERIMENTO DELLO ZIP NELLA TABELLA TCW24_BLOB_CART
626
	////////////////////////////////////////////////////	    
627
        list($ret, $err, $msg) = insert_blob_cart($data_fname, $protocollo_fornitura, $protocollo_staging, $progressivo);
628
 
629
        if (!$ret)
630
    	 return array(false, $err, $msg);
631
 
632
        return array(true, '', '');
633
}
634
?>