openstamanager/modules/anagrafiche/import.php

269 lines
7.0 KiB
PHP
Raw Normal View History

2018-02-23 19:04:05 +01:00
<?php
include_once __DIR__.'/../../core.php';
2018-11-09 11:34:27 +01:00
use Modules\Anagrafiche\Anagrafica;
2018-02-23 19:04:05 +01:00
switch (post('op')) {
2018-06-22 17:04:37 +02:00
case 'example':
$module = filter('module');
$list = [
2020-02-27 18:37:44 +01:00
['Codice', 'Ragione sociale', 'Tipologia', 'Partita IVA', 'Codice destinatario', 'Nazione', 'Indirizzo', 'CAP', 'Città', 'Provincia', 'Telefono', 'Fax', 'Cellulare', 'Email', 'PEC', 'IBAN', 'Note', 'Tipo'],
['00001', 'Mia anagrafica', 'Azienda', '12345678910', '1234567', 'ITALIA', 'Via Giuseppe Mazzini, 123', '12345', 'Este', 'PD', '+39 0429 60 25 12', '+39 0429 456 781', '+39 321 12 34 567', 'email@anagrafica.it', 'pec@anagrafica.it', 'IT60 X054 2811 1010 0000 0123 456', 'Note dell\'anagrafica di esempio', 'Cliente,Fornitore'],
2018-06-22 17:04:37 +02:00
];
directory('../../files/'.$module);
$fp = fopen('../../files/'.$module.'/'.$module.'.csv', 'w');
2018-08-11 15:49:46 +02:00
fprintf($fp, chr(0xEF).chr(0xBB).chr(0xBF));
2018-06-22 17:04:37 +02:00
foreach ($list as $fields) {
fputcsv($fp, $fields, ';');
}
fclose($fp);
exit;
break;
case 'import':
2018-11-09 11:34:27 +01:00
$sede_fields = [
2020-06-09 16:59:26 +02:00
//'piva',
//'codice_fiscale',
//'codice_destinatario',
2018-11-09 11:34:27 +01:00
'indirizzo',
'indirizzo2',
'citta',
'cap',
'provincia',
'km',
'id_nazione',
'telefono',
'fax',
'cellulare',
'email',
'idzona',
'gaddress',
'lat',
'lng',
];
2018-02-23 19:04:05 +01:00
2019-11-19 14:39:25 +01:00
$id_azienda = setting('Azienda predefinita');
2019-11-19 14:39:25 +01:00
foreach ($data as $key => $dati_anagrafica) {
if (!empty($dati_anagrafica)) {
2020-02-27 18:37:44 +01:00
$id_tipo_anagrafica = (array) $dati_anagrafica['idtipoanagrafica'];
unset($dati_anagrafica['idtipoanagrafica']);
2019-11-19 14:39:25 +01:00
// Separazione dei campi relativi alla sede legale
2018-11-09 11:34:27 +01:00
$dati_sede = [];
foreach ($sede_fields as $field) {
2019-11-19 14:39:25 +01:00
if (isset($dati_anagrafica[$field])) {
$dati_sede[$field] = $dati_anagrafica[$field];
unset($dati_anagrafica[$field]);
}
}
// Ricerca di eventuale anagrafica corrispondente sulla base del campo definito come primary_key (es. codice)
2018-11-09 11:34:27 +01:00
if (!empty($primary_key)) {
2019-11-19 14:39:25 +01:00
$anagrafica = Anagrafica::where($primary_key, '=', $dati_anagrafica[$primary_key])->first();
}
// Se non trovo nessuna anagrafica corrispondente, allora la creo
2018-11-09 11:34:27 +01:00
if (empty($anagrafica)) {
2019-01-02 14:15:16 +01:00
$anagrafica = Anagrafica::build($dati_anagrafica['ragione_sociale']);
}
2020-01-11 13:36:43 +01:00
2019-11-19 14:39:25 +01:00
// Impedisco di aggiornare la mia anagrafica azienda
if ($dati_anagrafica[$primary_key] != $id_azienda) {
//se non imposto nessun codice evito di resettare quello calcolato automaticamente o già presente
2020-01-11 13:36:43 +01:00
if (empty($dati_anagrafica['codice'])) {
unset($dati_anagrafica['codice']);
}
2019-11-19 14:39:25 +01:00
$anagrafica->fill($dati_anagrafica);
$anagrafica->tipologie = $id_tipo_anagrafica;
$anagrafica->save();
2018-11-09 11:34:27 +01:00
2019-11-19 14:39:25 +01:00
$sede = $anagrafica->sedeLegale;
$sede->fill($dati_sede);
$sede->save();
}
}
}
2018-02-23 19:04:05 +01:00
break;
}
return [
[
'field' => 'codice',
'label' => 'Codice',
'primary_key' => true,
'names' => [
'Codice interno',
'Numero',
2020-02-27 18:37:44 +01:00
'Codice',
2020-01-11 13:36:43 +01:00
],
2018-02-23 19:04:05 +01:00
],
[
'field' => 'ragione_sociale',
'label' => 'Ragione sociale',
'names' => [
'Nome',
'Denominazione',
2020-02-27 18:37:44 +01:00
'Ragione sociale',
2020-01-11 13:36:43 +01:00
],
],
[
'field' => 'codice_destinatario',
'label' => 'Codice destinatario',
'names' => [
'Codice destinatario',
'Codice SDI',
'Codice univoco',
'Codice univoco ufficio',
'SDI',
2020-01-11 13:36:43 +01:00
],
2018-02-23 19:04:05 +01:00
],
[
'field' => 'provincia',
'label' => 'Provincia',
],
[
'field' => 'citta',
'label' => 'Città',
'names' => [
'Citt_',
'Citt&agrave;',
2020-02-27 18:37:44 +01:00
'Città',
2020-06-10 12:37:42 +02:00
'Citta',
2020-01-11 13:36:43 +01:00
],
2018-02-23 19:04:05 +01:00
],
[
'field' => 'telefono',
'label' => 'Telefono',
],
[
'field' => 'indirizzo',
'label' => 'Indirizzo',
],
2018-11-30 16:10:15 +01:00
[
'field' => 'indirizzo2',
'label' => 'Civico',
2018-02-23 19:04:05 +01:00
],
[
'field' => 'cap',
'label' => 'CAP',
],
[
'field' => 'cellulare',
'label' => 'Cellulare',
],
[
'field' => 'fax',
'label' => 'Fax',
],
[
'field' => 'email',
'label' => 'Email',
'names' => [
'E-mail',
'Indirizzo email',
'Mail',
2020-02-27 18:37:44 +01:00
'Email',
2020-01-11 13:36:43 +01:00
],
],
[
'field' => 'pec',
'label' => 'PEC',
'names' => [
'E-mail PEC',
'Email certificata',
'Indirizzo email certificata',
2020-02-27 18:37:44 +01:00
'PEC',
2020-01-11 13:36:43 +01:00
],
2018-02-23 19:04:05 +01:00
],
[
'field' => 'codice_fiscale',
'label' => 'Codice Fiscale',
],
2018-11-30 16:10:15 +01:00
[
'field' => 'data_nascita',
'label' => 'Data di nascita',
],
2018-11-30 16:10:15 +01:00
[
'field' => 'luogo_nascita',
'label' => 'Luogo di nascita',
],
2018-11-30 16:10:15 +01:00
[
'field' => 'sesso',
'label' => 'Sesso',
2018-02-23 19:04:05 +01:00
],
[
'field' => 'piva',
'label' => 'Partita IVA',
'names' => [
'P.IVA',
'P.IVA/TAX ID',
'TAX ID',
2020-06-10 12:37:42 +02:00
'Partita IVA',
2020-01-11 13:36:43 +01:00
],
2018-02-23 19:04:05 +01:00
],
[
'field' => 'codiceiban',
'label' => 'IBAN',
],
[
'field' => 'note',
'label' => 'Note',
'names' => [
'Note Extra',
2020-02-27 18:37:44 +01:00
'Note',
2020-01-11 13:36:43 +01:00
],
2018-02-23 19:04:05 +01:00
],
[
2018-02-23 19:04:05 +01:00
'field' => 'id_nazione',
'label' => 'Nazione',
'names' => [
'Nazione',
'Paese',
'id_nazione',
'idnazione',
'nazione',
],
2020-03-27 13:27:23 +01:00
'query' => 'SELECT id as result FROM an_nazioni WHERE LOWER(nome) = LOWER(|value|) OR LOWER(iso2) = LOWER(|value|)',
2018-02-23 19:04:05 +01:00
],
[
'field' => 'idagente',
'label' => 'ID Agente',
],
[
'field' => 'idpagamento_vendite',
'label' => 'ID Pagamento',
'names' => [
'Pagamento',
'ID Pagamento',
'id_pagamento',
'idpagamento_vendite',
'idpagamento',
],
2018-02-23 19:04:05 +01:00
],
[
2020-02-27 18:37:44 +01:00
'field' => 'idtipoanagrafica',
'label' => 'Tipo',
'names' => [
2020-02-27 18:37:44 +01:00
'Tipo',
'tipo',
'idtipo',
],
2018-02-23 19:04:05 +01:00
'query' => 'SELECT idtipoanagrafica as result FROM an_tipianagrafiche WHERE descrizione = |value|',
],
2020-02-27 18:37:44 +01:00
[
'field' => 'tipo',
'label' => 'Tipologia',
],
2018-02-23 19:04:05 +01:00
];