Per poter verificare se una merce è di origine preferenziale o meno bisogna controllare per la tariffa doganale quale regola utilizzare per il calcolo. In questo esempio consideriamo una regola semplice ovvero il valore dei componenti che costituiscono il prodotto finito di origine non preferenziale deve essere inferiore ad una certa percentuale. La base di partenza per questo calcolo è di aver richiesto ai fornitori un certificato di origine nel caso non disponessimo del certificato la merce va considerata di origine non preferenziale. Partiamo dalla seguenti tabelle:
Anagrafica: CODICE, COS, ACQ, DOG
Codici: CODICE, CLIENTE
Origine: CODICE, PREF
Distinta: PADRE, FIGLIO, COEF
La procedura prevede l’esplosione dei codici e l’esecuzione in cascata delle query che calcolano la percentuale di codici con origine non preferenziale.
Esplodi distinta
SELECT [CODICI].CODICE, DISTINTA.FIGLIO AS C1, DISTINTA_1.FIGLIO AS C2, DISTINTA_2.FIGLIO AS C3, DISTINTA_3.FIGLIO AS C4, DISTINTA_4.FIGLIO AS C5, DISTINTA.COEF AS CO1, DISTINTA_1.COEF AS CO2, DISTINTA_2.COEF AS CO3, DISTINTA_3.COEF AS CO4, DISTINTA_4.COEF AS CO5, [CODICI].CLIENTE INTO [distinta eslposa] FROM [CODICI] LEFT JOIN ((((DISTINTA LEFT JOIN DISTINTA AS DISTINTA_1 ON DISTINTA.FIGLIO = DISTINTA_1.PADRE) LEFT JOIN DISTINTA AS DISTINTA_2 ON DISTINTA_1.FIGLIO = DISTINTA_2.PADRE) LEFT JOIN DISTINTA AS DISTINTA_3 ON DISTINTA_2.FIGLIO = DISTINTA_3.PADRE) LEFT JOIN DISTINTA AS DISTINTA_4 ON DISTINTA_3.FIGLIO = DISTINTA_4.PADRE) ON [CODICI].CODICE = DISTINTA.PADRE; |
SELECT [CODICI].CODICE, DISTINTA.FIGLIO AS C1, DISTINTA_1.FIGLIO AS C2, DISTINTA_2.FIGLIO AS C3, DISTINTA_3.FIGLIO AS C4, DISTINTA_4.FIGLIO AS C5, DISTINTA.COEF AS CO1, DISTINTA_1.COEF AS CO2, DISTINTA_2.COEF AS CO3, DISTINTA_3.COEF AS CO4, DISTINTA_4.COEF AS CO5, [CODICI].CLIENTE INTO [distinta eslposa] FROM [CODICI] LEFT JOIN ((((DISTINTA LEFT JOIN DISTINTA AS DISTINTA_1 ON DISTINTA.FIGLIO = DISTINTA_1.PADRE) LEFT JOIN DISTINTA AS DISTINTA_2 ON DISTINTA_1.FIGLIO = DISTINTA_2.PADRE) LEFT JOIN DISTINTA AS DISTINTA_3 ON DISTINTA_2.FIGLIO = DISTINTA_3.PADRE) LEFT JOIN DISTINTA AS DISTINTA_4 ON DISTINTA_3.FIGLIO = DISTINTA_4.PADRE) ON [CODICI].CODICE = DISTINTA.PADRE;
Padri
SELECT [distinta eslposa].CODICE, IIf([C5] IS NOT NULL,[C5],IIf([C4] IS NOT NULL,[C4],IIf([C3] IS NOT NULL,[C3],IIf([C2] IS NOT NULL,[C2],IIf([C1] IS NOT NULL,[C1],[CODICE]))))) AS FIGLIO, IIf([CO1] IS NULL,1,[CO1]*nz([CO2],1)*nz([CO3],1)*nz([CO4],1)*nz([CO5],1)) AS COEF, [distinta eslposa].CLIENTE INTO CODEXP FROM [distinta eslposa]; |
SELECT [distinta eslposa].CODICE, IIf([C5] Is Not Null,[C5],IIf([C4] Is Not Null,[C4],IIf([C3] Is Not Null,[C3],IIf([C2] Is Not Null,[C2],IIf([C1] Is Not Null,[C1],[CODICE]))))) AS FIGLIO, IIf([CO1] Is Null,1,[CO1]*nz([CO2],1)*nz([CO3],1)*nz([CO4],1)*nz([CO5],1)) AS COEF, [distinta eslposa].CLIENTE INTO CODEXP FROM [distinta eslposa];
AGG CT00
SELECT CODEXP.CODICE, CODEXP.FIGLIO, CODEXP.COEF, CODEXP.CLIENTE, [Anagrafica].COS AS C2P, [Anagrafica].ACQAS CAP, [ANA ARTICOLI].COS AS C2F, [ANA ARTICOLI].ACQAS CAF INTO CT00 FROM (CODEXP INNER JOIN [Anagrafica] ON CODEXP.CODICE = [Anagrafica].CODICE) INNER JOIN [ANA ARTICOLI] ON CODEXP.FIGLIO = [ANA ARTICOLI].CODICE; |
SELECT CODEXP.CODICE, CODEXP.FIGLIO, CODEXP.COEF, CODEXP.CLIENTE, [Anagrafica].COS AS C2P, [Anagrafica].ACQAS CAP, [ANA ARTICOLI].COS AS C2F, [ANA ARTICOLI].ACQAS CAF INTO CT00 FROM (CODEXP INNER JOIN [Anagrafica] ON CODEXP.CODICE = [Anagrafica].CODICE) INNER JOIN [ANA ARTICOLI] ON CODEXP.FIGLIO = [ANA ARTICOLI].CODICE;
AGG CT01
SELECT CT00.CODICE, CT00.FIGLIO, CT00.COEF, CT00.CLIENTE, IIf([CAP]=0,[C2P],[CAP]) AS [COSTO P], IIf([CAF]=0,[C2F],[CAF]) AS [CO UNIT F], [CO UNIT F]*[COEF] AS [COSTO F] INTO CT01 FROM CT00; |
SELECT CT00.CODICE, CT00.FIGLIO, CT00.COEF, CT00.CLIENTE, IIf([CAP]=0,[C2P],[CAP]) AS [COSTO P], IIf([CAF]=0,[C2F],[CAF]) AS [CO UNIT F], [CO UNIT F]*[COEF] AS [COSTO F] INTO CT01 FROM CT00;
AGG CT02
SELECT CT01.CODICE, CT01.FIGLIO, CT01.CLIENTE, CT01.[COSTO P], CT01.[COSTO F], IIf([PREFE] IS NULL,"NC",[PREFE]) AS PREF INTO CT02 FROM CT01 LEFT JOIN [ORIGINE] ON CT01.FIGLIO = [ORIGINE].CODICE; |
SELECT CT01.CODICE, CT01.FIGLIO, CT01.CLIENTE, CT01.[COSTO P], CT01.[COSTO F], IIf([PREFE] Is Null,"NC",[PREFE]) AS PREF INTO CT02 FROM CT01 LEFT JOIN [ORIGINE] ON CT01.FIGLIO = [ORIGINE].CODICE;
AGG CT03
SELECT CT02.CODICE, CT02.CLIENTE, CT02.[COSTO P], CT02.PREF, SUM(CT02.[COSTO F]) AS [TOT COMP] INTO CT03 FROM CT02 GROUP BY CT02.CODICE, CT02.CLIENTE, CT02.[COSTO P], CT02.PREF; |
SELECT CT02.CODICE, CT02.CLIENTE, CT02.[COSTO P], CT02.PREF, Sum(CT02.[COSTO F]) AS [TOT COMP] INTO CT03 FROM CT02 GROUP BY CT02.CODICE, CT02.CLIENTE, CT02.[COSTO P], CT02.PREF;
CT04
SELECT CT03.CODICE, CT03.CLIENTE, CT03.[COSTO P], CT03.PREF, CT03.[TOT COMP], [TOT COMP]/[COSTO P] AS PPRE, IIf([PREF]="NC","N",[PREF]) AS TP FROM CT03 WHERE (((CT03.[COSTO P])<>0 AND (CT03.[COSTO P]) IS NOT NULL)); |
SELECT CT03.CODICE, CT03.CLIENTE, CT03.[COSTO P], CT03.PREF, CT03.[TOT COMP], [TOT COMP]/[COSTO P] AS PPRE, IIf([PREF]="NC","N",[PREF]) AS TP FROM CT03 WHERE (((CT03.[COSTO P])<>0 And (CT03.[COSTO P]) Is Not Null));
CT05
SELECT CT04.CODICE, CT04.CLIENTE, CT04.TP, SUM(CT04.PPRE) AS PCOMP FROM CT04 GROUP BY CT04.CODICE, CT04.CLIENTE, CT04.TP; |
SELECT CT04.CODICE, CT04.CLIENTE, CT04.TP, Sum(CT04.PPRE) AS PCOMP FROM CT04 GROUP BY CT04.CODICE, CT04.CLIENTE, CT04.TP;
NN
SELECT CT05.CODICE, COUNT(CT05.TP) AS N FROM CT05 GROUP BY CT05.CODICE; |
SELECT CT05.CODICE, Count(CT05.TP) AS N FROM CT05 GROUP BY CT05.CODICE;
AGG FINALE01 (Sostituire VALORE con la soglia definita dalla regola doganale)
SELECT CT05.CODICE, CT05.CLIENTE, IIf([PCOMP] AGG FINALE <pre lang="SQL">SELECT FINALE1.CODICE, FINALE1.CLIENTE, FINALE1.ORIGINE, FINALE1.[COD DOG], FINALE1.PCOMP INTO FINALE FROM FINALE1 WHERE (((FINALE1.E)=1)); |
SELECT CT05.CODICE, CT05.CLIENTE, IIf([PCOMP] AGG FINALE <pre lang="SQL">SELECT FINALE1.CODICE, FINALE1.CLIENTE, FINALE1.ORIGINE, FINALE1.[COD DOG], FINALE1.PCOMP INTO FINALE FROM FINALE1 WHERE (((FINALE1.E)=1));