|
Am nevoie de ajutor!
Last post 06-04-2010, 5:34 PM by ThePuiu. 2 replies.
-
06-03-2010, 1:17 PM |
-
ThePuiu
-
-
-
Joined on 02-14-2007
-
Oradea
-
db_owner
-
-
|
Salut, vreau sa fac o mica aplicatie de facturare pt un prieten care are o firma de transport. Trebuie sa faca facturi in RON si in EUR, iar incasarea trebuie sa se poata face tot asa in RON sau in EUR si/sau combinatii ale acestor monede. Am plecat de la ideea ca ar fi bine ca facturile si chitantele facute in EUR sa aiba trecut pe ele si valoarea in RON la cursul zilei respective. Facturarea am realizat-o fara probleme, dar m-am impotmolit la creearea unuei interogari care sa-mi returneze facturile neachitate sau achitate partial.... Tabelele folosite arata cam asa:
[IESIRI](
[ID] [int] IDENTITY(1,1) NOT NULL,
[ID_SOCIETATE] [int] NULL,
[NUMAR] [int] NULL,
[SERIE] [nvarchar](5) NULL,
[DATA] [datetime] NULL,
[ID_CLIENT] [int] NULL,
[ID_USER] [int] NULL)
[IESIRI_DETAIL](
[ID] [int] IDENTITY(1,1) NOT NULL,
[ID_IESIRE] [int] NULL,
[PRODUS] [nvarchar](250) NULL,
[ UM] [nvarchar](5) NULL,
[CANTITATE] [decimal](18, 2) NULL,
[MONEDA] [nvarchar](3) NULL,
[CURS] [decimal](18, 4) NULL,
[TVA] [decimal](18, 2) NULL,
[BAZA] [decimal](18, 2) NULL,
[BAZA_RON] [decimal](18, 2) NULL,
[PRET] [decimal](18, 2) NULL,
[PRET_RON] [decimal](18, 2) NULL,
[VAL_TVA] [decimal](18, 2) NULL,
[VAL_TVA_RON] [decimal](18, 2) NULL)
[CHITANTE](
[ID] [int] IDENTITY(1,1) NOT NULL,
[ID_SOCIETATE] [int] NULL,
[ID_IESIRE] [int] NULL,
[NUMAR] [int] NULL,
[DATA] [datetime] NULL,
[VALOARE] [decimal](18, 2) NULL,
[MONEDA] [nvarchar](3) NULL,
[ID_USER] [int] NULL,
[CURS] [decimal](18, 4) NULL)
Pt ca treburile sa fie si mai incurcate as vrea ca daca se alege sa se factureze/incaseze numai in RON sa nu mai fie nevoie de cursul valutar (in CURS se va pune 1). Deci, am nevoie de o idee de cum as putea face interogarea ca prin precizarea ID-ului clientului sa obtin o lista cu facturile neincasate sau incasate partial (atentie- o factura poate sa fie incasata cu 1 sau mai multe chitante in una sau mai multe (2) monede). Nu se pot achita mai multe facturi cu o singura chitanta.
Sper ca m-am facut inteles! Daca trebuie rein cu informatii! Multumesc anticipat, Puiu
|
|
-
06-04-2010, 9:37 AM |
-
katalyn
-
-
-
Joined on 09-20-2006
-
Bucureşti
-
sysadmin
-
-
|
Personal as modifica putin arhitectura, as muta Moneda si Curs in [IESIRI] sau chiar intr-un catalog separat iar default in [IESIRI] as pune RON. La TVA as face la fel, catalog (eventual cu perioada de valabilitate) si default pe 19. In Chitante as scoate MONEDA pt ca iesirea are deja moneda, cursul te intereseaza pt a calcula diferentele de curs. Ce mai trebuie sa tii cont este si faptul ca facturarea pentru Romania presupune si facturarea TVA iar pt vanzari intracomunitare nu trebuie sa colectezi TVA dar trebuie sa-l platesti. La aceste lucruri Razvan se pricepe cel mai bine.
Cu toate acestea, uite un select care ar trebui sa-ti aduca info dorite:
DECLARE @ID_SOCIETATE INT --daca nu initializezi aceasta variabila, vei vedea lista iesirilor pentru care ai incasari mai mici sau mai mari decat valoarea lor
SELECT i.ID_SOCIETATE, i.NUMAR, i.SERIE, i.DATA, SUM(id.Baza) AS BAZA, SUM(id.[BAZA_RON]) AS [BAZA_RON], SUM(id.[VAL_TVA]) as [VAL_TVA], SUM(id.[VAL_TVA_RON]) AS [VAL_TVA_RON], c.CURS AS CursChitanta, c.DATA AS DataChitanta, c.MONEDA AS MonedaChitanta, c.NUMAR AS NumarChitanta, SUM(c.VALOARE) AS ValoareAchitata FROM IESIRI i INNER JOIN [IESIRI_DETAIL] id ON i.ID = id.ID_IESIRE LEFT JOIN [CHITANTE] c ON i.ID = c.ID_IESIRE WHERE i.ID_SOCIETATE = ISNULL(@ID_SOCIETATE, i.ID_SOCIETATE) GROUP BY i.ID_SOCIETATE, i.NUMAR, i.SERIE, i.DATA, c.CURS, c.DATA, c.MONEDA, c.NUMAR HAVING SUM(id.[BAZA_RON]) <> ISNULL(SUM(c.VALOARE),0)Sper sa te fi ajutat cat de cat, dar repet, eu as modifica putin arhitectura.
Cătălin D.
|
|
-
06-04-2010, 5:34 PM |
|
|
|