lunedì, settembre 18, 2006

Modalità di assegnazione dell'identificativo registrazione e dell'identificativo cliente

Quando viene registrata una nuova prestazione o un nuovo cliente, il programma assegna automaticamente un identificativo univoco. Questo vuol dire che all'interno del registro delle prestazioni non esisteranno mai due registrazioni diverse con identificativo uguale; analogamente per il registro dei clienti.

Quando viene modificata una registrazione, sia essa una prestazione ovvero l'anagrafica di un cliente, la vecchia registrazione viene marcata come modificata e una nuova registrazione affianca la precedente con i dati modificati e l'indicazione di registrazione sostitutiva. In questo caso, l'identificativo della registrazione non cambia, essendo il modo con cui la vecchia e nuova registrazione rimangono logicamente collegate.

Gli identificativi sono numeri interi maggiori di 0 e consecutivi. La numerazione usata per le prestazioni è diversa e separata dalla numerazione usata per l'anagrafe; questo vuol dire che possono esistere una prestazione e una anagrafica con uguale identificativo.

La struttura dei due archivi

Questa sezione della documentazione riporta delle informazioni molto tecniche, ma richieste dalla norma e per questo riportate.

I due archivi a cui si fa riferimento in oggetto sono la tabella dell'anagrafe (t_anagrafe) e la tabella delle prestazioni (t_prestazioni). Il legame tra i campi della tabella e gli attributi obbligatori previsti dall'Ufficio Italiano Cambi sono rappresentati mediante dei commenti al fine riga. Ad esempio, il campo t_anagrafe.tipo_operatore corrisponde all'attributo D01.

Per la versione per operatori non finanziari le due tabelle sono definite dal seguente frammento sql:

--------------------------------------------------------------------------------

-- table t_anagrafe

--------------------------------------------------------------------------------


create table t_anagrafe (

-- Identificativo informazione

tipo_operatore text(2) not null -- D01

references t_codici_soggetti(codice),

tipo_identificazione text(2) not null -- D03

constraint fk_anagrafe_1 references t_codici_identificazione(id_codice),

codice_cliente text(6) not null, -- D09

data_identificazione text(8) not null, -- D10


-- Complete generalita'

persona_giuridica integer(1) not null, -- boolean

soggetto_residente int(1) not null, -- boolean

nome_ragione_sociale text(70) -- D11

not null

check (length(nome_ragione_sociale)>0),

paese_estero_residenza text(30) -- D13

constraint ck_paese_estero_residenza

check ((soggetto_residente=1 and paese_estero_residenza is null) or

(soggetto_residente=0 and paese_estero_residenza is not null)),

comune_residenza text(30) -- D14.B

not null

check (length(comune_residenza)>0),

provincia_residenza text(15), -- D14.C

indirizzo_domicilio_sede text(35) -- D15

not null

check (length(indirizzo_domicilio_sede)>0),

cap_domicilio_sede text(5), -- D16

codice_fiscale text(16), -- D17

data_nascita_pf text(8) -- D18

constraint ck_data_nascita_pf

check ((persona_giuridica=0 and data_nascita_pf is not null) or

(persona_giuridica=1 and data_nascita_pf is null)),

comune_nascita_pf text(30) -- D19

constraint ck_comune_nascita_pf

check ((persona_giuridica=0 and comune_nascita_pf is not null) or

(persona_giuridica=1 and comune_nascita_pf is null)),

-- Estremi del documento di identificazione

tipo_documento_presentato text(2) -- D41

references t_tipi_documento_identificazione(id_codice),

numero_documento_presentato text(15), -- D42

data_rilascio text(8), -- D43

autorita_localita_rilascio text(30), -- D44

sesso text(1) -- D45

references t_sessi(id_codice),


-- Stato anagrafica

codice_stato text(1) -- D54.A

references t_stati_anagrafica(id_codice)

not null

check (length(codice_stato)=1),

data_rettifica text(8) -- D55.B

constraint ck_data_rettifica

check ((codice_stato='0' and data_rettifica is null) or

(codice_stato in ('1', '2', '3') and data_rettifica is not null)),

-- Extra

note text,


-- Extra constraints

primary key (codice_cliente, codice_stato, data_rettifica),

check ((persona_giuridica=1 and

tipo_documento_presentato is null and

numero_documento_presentato is null and

data_rilascio is null and

autorita_localita_rilascio is null and

sesso is null) or

(persona_giuridica=0 and

tipo_documento_presentato is not null and

numero_documento_presentato is not null and

data_rilascio is not null and

autorita_localita_rilascio is not null and

sesso is not null))

);

--------------------------------------------------------------------------------

-- table t_prestazioni

--------------------------------------------------------------------------------


create table t_prestazioni (

id integer primary key autoincrement,

-- Identificativo informazione

tipo_operatore text(2) not null -- A01.A

references t_codici_soggetti(codice),

identificativo_registrazione integer(7), -- A03


-- Caratteristiche della prestazione professionale

data_incarico text(8) not null, -- A21

tipo_registrazione text(1) not null -- A22

references t_tipi_registrazione(id_codice),

causale text(4) not null -- A26

references t_causali(codice),

frazionata text(1) not null

check (frazionata in ('0', '1')),

multipla text(1) not null

check (multipla in ('0', '1')),

connessa text(1) not null

check (connessa in ('0', '1')),


-- Dati sui soggetti coinvolti

codice_cliente text(6) not null -- D09A.1

references t_anagrafe(codice_cliente),

codice_soggetto_per_conto text(6) -- D09B.1

references t_anagrafe(codice_cliente), -- soggetto per conto del quale il cliente agisce

codice_controparte text(6) -- D09C.1

references t_anagrafe(codice_cliente), -- soggetto per conto del quale il cliente agisce


-- Dati sulla registrazione

data_registrazione text(8) not null, -- A51

stato_registrazione text(1) not null -- A54.A

references t_stati_prestazione(id_codice),

data_rettifica text(8) -- A54.B

check ((stato_registrazione='0' and data_rettifica is null) or

(stato_registrazione<>'0' and data_rettifica is not null)),


-- Dati sull'importo

divisa text(3) not null -- B12

references t_divise(swift),

importo_euro real(15, 2) not null, -- B14

contanti_euro real(15, 2), -- B15

tipo_mezzo_pagamento text(30), -- B16

tipo_bene text(30), -- B17

-- Extra

note text

-- Constraints

);



Per la versione per professionisti le due tabelle sono definite dal seguente frammento sql:

--------------------------------------------------------------------------------

-- table t_anagrafe

--------------------------------------------------------------------------------


create table t_anagrafe (

-- Identificativo informazione

codice_studio_professionale text(11) -- D01

references t_professionisti(codice_studio_professionale),

codice_identificatore text(5) -- D02

references t_incaricati(codice_registratore),

tipo_identificazione text(2) not null -- D03

constraint fk_anagrafe_1 references t_codici_identificazione(id_codice),

codice_cliente text(6) not null, -- D09

data_identificazione text(8) not null, -- D10


-- Complete generalita'

persona_giuridica integer(1) not null, -- boolean

soggetto_residente int(1) not null, -- boolean

nome_ragione_sociale text(70) -- D11

not null

check (length(nome_ragione_sociale)>0),

attivita_svolta text(50) -- D12

not null

check (length(attivita_svolta)>0),

paese_estero_residenza text(30) -- D13

constraint ck_paese_estero_residenza

check ((soggetto_residente=1 and paese_estero_residenza is null) or

(soggetto_residente=0 and paese_estero_residenza is not null)),

comune_residenza text(30) -- D14.B

not null

check (length(comune_residenza)>0),

provincia_residenza text(15), -- D14.C

indirizzo_domicilio_sede text(35) -- D15

not null

check (length(indirizzo_domicilio_sede)>0),

cap_domicilio_sede text(5), -- D16

codice_fiscale text(16), -- D17

data_nascita_pf text(8) -- D18

constraint ck_data_nascita_pf

check ((persona_giuridica=0 and data_nascita_pf is not null) or

(persona_giuridica=1 and data_nascita_pf is null)),

comune_nascita_pf text(30) -- D19

constraint ck_comune_nascita_pf

check ((persona_giuridica=0 and comune_nascita_pf is not null) or

(persona_giuridica=1 and comune_nascita_pf is null)),

-- Estremi del documento di identificazione

tipo_documento_presentato text(2) -- D41

references t_tipi_documento_identificazione(id_codice),

numero_documento_presentato text(15), -- D42

data_rilascio text(8), -- D43

autorita_localita_rilascio text(30), -- D44

sesso text(1) -- D45

references t_sessi(id_codice),


-- Stato anagrafica

codice_stato text(1) -- D54.A

references t_stati_anagrafica(id_codice)

not null

check (length(codice_stato)=1),

data_rettifica text(8) -- D55.B

constraint ck_data_rettifica

check ((codice_stato='0' and data_rettifica is null) or

(codice_stato in ('1', '2', '3') and data_rettifica is not null)),

-- Extra

note text,


-- Extra constraints

primary key (codice_cliente, codice_stato, data_rettifica),

check ((persona_giuridica=1 and

tipo_documento_presentato is null and

numero_documento_presentato is null and

data_rilascio is null and

autorita_localita_rilascio is null and

sesso is null) or

(persona_giuridica=0 and

tipo_documento_presentato is not null and

numero_documento_presentato is not null and

data_rilascio is not null and

autorita_localita_rilascio is not null and

sesso is not null))

);


--------------------------------------------------------------------------------

-- table t_prestazioni

--------------------------------------------------------------------------------


create table t_prestazioni (

id integer primary key autoincrement,

-- Identificativo informazione

codice_studio_professionale text(11) -- A01

references t_professionisti(codice_studio_professionale),

codice_registratore text(5) -- A02

references t_incaricati(codice_registratore),

identificativo_registrazione integer(7), -- A03


-- Caratteristiche della prestazione professionale

tipo_registrazione text(1) not null -- A22

references t_tipi_registrazione(id_codice),

prestazione_fornita text(50) not null, -- A26

frazionata text(1) not null

check (frazionata in ('0', '1')),

multipla text(1) not null

check (multipla in ('0', '1')),


-- Dati sui soggetti coinvolti

codice_cliente text(6) not null -- D09A.1

references t_anagrafe(codice_cliente),

codice_soggetto_per_conto text(6) -- D09A.2

references t_anagrafe(codice_cliente), -- soggetto per conto del quale il cliente agisce

tipo_legame text(2)

references t_tipi_legami(codice)

check ((codice_soggetto_per_conto is NULL and tipo_legame is NULL) or

(codice_soggetto_per_conto is not NULL and tipo_legame is not NULL)),


-- Dati sulla registrazione

data_registrazione text(8) not null, -- A51

stato_registrazione text(1) not null -- A54.A

references t_stati_prestazione(id_codice),

data_rettifica text(8) -- A54.B

check ((stato_registrazione='0' and data_rettifica is null) or

(stato_registrazione<>'0' and data_rettifica is not null)),


-- Dati sull'importo

divisa text(3)

references t_divise(swift),

importo_euro real(15, 2),

-- Extra

note text

-- Constraints

check ((divisa is null and importo_euro is null) or

(divisa is not null and importo_euro is not null))

);


domenica, settembre 17, 2006

Le modalità di esecuzione delle funzioni di ricerca

La norma impone che sui due archivi dei clienti e delle prestazioni, sia possibile effettuare ricerche su tutti gli attributi previsti dagli standard. In particolare per i soggetti delle prestazioni, potranno essere effettuate delle ricerche a prescindere dal ruolo ricoperto.

Il risultato della ricerca non sarà generalmente unico, ma comprenderà genericamente tutte le informazioni che soddisfano il criterio di ricerca impostato, questo è il caso di operazioni frazionate e multiple.

Le funzioni di ricerca sono attivabili mediante la casella Filtro presente nella parte alta delle finestre che visualizzano il registro dei clienti e il registro delle prestazioni.

Una volta inserito del testo nella casella filtro e premuto il tasto di invio, verranno visualizzate solo le registrazioni che contengono il testo oggetto della ricerca.

Per visualizzare tutte le registrazioni del registro cancellare il contenuto del filtro e premere il tasto invio.

... oppure contattami

Se non hai trovato quello che cerchi contattami con la posta elettronica: poderico@gmail.com

La pubblicità presente su questo sito ha lo scopo di ammortizzare i costi di tenuta dell'infrastruttura.
Il programma per la tenuta dell'arcivio unico informatico distribuito è completamente gratuito.

Post più popolari