Ci riprovo, query con calcolo ripartizioni

sabato 20 dicembre 2008 - 15.54

squilibrio Profilo | Expert

Scusate se riposto, ma ho fatto 3 giorni di prove e mi perdo :-(((

spero in un vostro aiuto

Ciao a tutti, avrei bisogno del vostro aiuto per la creazione di una query un po' complessa

Lo scenario è il seguente:

tabella Progetti con un elenco di progetti
per ogni progetto posso avere piu fasi, tabella ProgettiFasi
ogni fase ha un valore
le fasi possono essere "estrattocontate" al cliente, tramite emissione di un EC, tabella EstrattiConto
in un EC posso quindi avere piu fasi, di progetti differenti, ma dello stesso cliente ovviamente, tabella EstrattiContoDettaglio
il totale EC (fatto quindi da piu fasi, eventualmente di diversi progetti) è poi organizzato in dilazioni, tabella EstrattiContoDilazioni
ogni dilazione viene poi fatturata singolarmente (rapporto 1:1)

io devo creare una query che mi visualizzi, per ogni progetto (questo è importate) la situazione, ovvero:

Totale EC fatturati (quindi somma dilazioni di EC fatturate) per progetto (utilizzando l'apposito campo presente nelle Dilazioni)
Totale EC da fatturare (quindi somma dilazioni di EC non ancora fatturate) per progetto (utilizzando l'apposito campo presente nelle Dilazioni)
Totale Fatturato "diretto" per Progetto, in questo caso non si è passato dall'Estratto Conto ma una fase è stata direttamente fatturata, è molto piu semplice in quanto basta utilizzare il riferimento FattureDettaglio.IDFase presente nel dettaglio Fatture


il problema si pone nelle prime due operazioni, dato che manca la relazione tra la dilazione ed il progetto di riferimento (avendo le dilazioni "spacchettature" diverse rispetto alle fasi/progetti che compongono l'EC), quindi la logica dovrebbe essere ricostruita in questo modo:

Fase P1 500
Fase P2 1500
Totale EC 2000
quindi ho una ripartizione del tipo
P1 33,33%
P2 66,66%

a questo punto se le dilazioni dell' EC erano
dilazione 1 1000 (ovviamente per ogni dilazione posso emettere fattura)
dilazione 2 1000 (ovviamente per ogni dilazione posso emettere fattura)

vuole dire che i 1000 valgono per
33,33% sul progetto P1 (quindi nel "contenitore" P1 metto 333)
66,66% sul progetto P2 (quindi nel "contenitore" P2 metto 666)

resta da decidere poi se la colonna è quella del
Totale EC fatturati (se EstrattiContoDilazioni.EmessaFT = true)
Totale EC da fatturare (se EstrattiContoDilazioni.EmessaFT = false)


Spero in un vostro aiuto... a me si incrociano gli occhi :-((((


Grazie infinite in anticipo!!!



CREATE TABLE [dbo].[Progetti](
[IDProgetto] [int] IDENTITY(1,1) NOT NULL,
[CodiceProgetto] [varchar](100) COLLATE Latin1_General_CI_AS NULL,
[Descrizione] [varchar](200) COLLATE Latin1_General_CI_AS NULL
CONSTRAINT [PK_Documenti] PRIMARY KEY CLUSTERED
(
[IDProgetto] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]



CREATE TABLE [dbo].[ProgettiFasi](
[IDProgettoFase] [int] IDENTITY(1,1) NOT NULL,
[IDProgetto] [int] NULL,
[FaseInserireEC] [bit] NULL CONSTRAINT [DF_ProgettiFasi_FaseInserireEC] DEFAULT ((0)),
[FaseInserireFT] [bit] NULL CONSTRAINT [DF_ProgettiFasi_FaseInserireFT] DEFAULT ((0)),
[FaseEmessoEC] [bit] NULL CONSTRAINT [DF_ProgettiFasi_FaseEmessoEC] DEFAULT ((0)),
[FaseEmessaFT] [bit] NULL CONSTRAINT [DF_ProgettiFasi_FaseEmessaFT] DEFAULT ((0)),
[DescrizioneFase] [varchar](max) COLLATE Latin1_General_CI_AS NULL,
[DescrizioneIVA] [varchar](200) COLLATE Latin1_General_CI_AS NULL,
[IDAliquota] [int] NULL,
[ValoreImponibile] [decimal](18, 2) NULL CONSTRAINT [DF_ProgettiFasi_ValoreImponibile] DEFAULT ((0)),
[IDAzienda] [int] NULL,
CONSTRAINT [PK_Fasi] PRIMARY KEY CLUSTERED
(
[IDProgettoFase] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]



CREATE TABLE [dbo].[EstrattiConto](
[IDEstrattoConto] [int] IDENTITY(1,1) NOT NUL
[IDCliente] [int] NULL,
[Incassato] [bit] NULL CONSTRAINT [DF_EstrattiConto_Incassato] DEFAULT ((0)),
[EmessaFT] [bit] NULL CONSTRAINT [DF_EstrattiConto_EmessaFT] DEFAULT ((0))
CONSTRAINT [PK_EstrattiConto] PRIMARY KEY CLUSTERED
(
[IDEstrattoConto] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]




CREATE TABLE [dbo].[EstrattiContoDettaglio](
[IDEstrattoContoDettaglio] [int] IDENTITY(1,1) NOT NULL,
[IDEstrattoConto] [int] NULL,
[IDAliquota] [int] NULL,
[IDProgettoFase] [int] NULL,
[Descrizione] [varchar](200) COLLATE Latin1_General_CI_AS NULL,
[Imponibile] [decimal](18, 2) NULL,
CONSTRAINT [PK_EstrattoContoDettaglio] PRIMARY KEY CLUSTERED
(
[IDEstrattoContoDettaglio] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]




CREATE TABLE [dbo].[EstrattiContoDilazioni](
[IDEstrattoContoDilazione] [int] IDENTITY(1,1) NOT NULL,
[IDEstrattoConto] [int] NULL,
[DataDilazione] [datetime] NULL,
[ValoreDilazione] [decimal](18, 2) NULL,
[Incassata] [bit] NULL CONSTRAINT [DF_EstrattiContoDilazioni_Incassata] DEFAULT ((0)),
[EmessaFT] [bit] NULL CONSTRAINT [DF_EstrattiContoDilazioni_EmessaFT] DEFAULT ((0)),
CONSTRAINT [PK_EstrattiContoDilazione] PRIMARY KEY CLUSTERED
(
[IDEstrattoContoDilazione] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]



CREATE TABLE [dbo].[FattureDettaglio](
[IDFatturaDettaglio] [int] IDENTITY(1,1) NOT NULL,
[IDFattura] [int] NULL CONSTRAINT [DF_FattureDettaglio_IDFattura] DEFAULT ((0)),
[IDFase] [int] NULL CONSTRAINT [DF_FattureDettaglio_IDFase] DEFAULT ((0)),
[IDAliquota] [int] NULL,
[DescrizioneRiga] [varchar](max) COLLATE Latin1_General_CI_AS NULL,
[ValoreAliquota] [decimal](10, 4) NULL,
[ValoreRiga] [decimal](18, 4) NULL,
[IDProgetto] [int] NULL,
[Qt] [int] NULL CONSTRAINT [DF_FattureDettaglio_Qt] DEFAULT ((1)),
CONSTRAINT [PK_FattureDettaglio] PRIMARY KEY CLUSTERED
(
[IDFatturaDettaglio] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5