Welcome to Sign in | Help
in Search

Am nevoie de ajutor!

Last post 06-04-2010, 5:34 PM by ThePuiu. 2 replies.
Sort Posts: Previous Next
  •  06-03-2010, 1:17 PM 8314

    Am nevoie de ajutor!

    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 8315 in reply to 8314

    Re: Am nevoie de ajutor!

    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 8328 in reply to 8315

    Re: Am nevoie de ajutor!

    Katalyn, multumesc pentru amabilitate! Din recomandarile tale de modificare a structurii utile am considerat doar trecerea campului MONEDA si CURS in tabela IESIRI. Campul TVA trebuie sa fie legat de produsul vandut care poate sa aiba TVA 0 sau 19 pe aceeasi factura. Problemele legate de intracomunitar o sa le rezolve contabilitatea! Deasemenea campul MONEDA nu poate sa fie scos din CHITANTE pt ca asa cum am precizat (poate nu am fost destul de explicit!) clientul vrea ca incasarea unei facturi sa poata sa fie facuta in oricare dintre cele 2 monede existente si in combinatii ale acestora (o fact de 100 EUR sa poata fi platita cu 2 chit: una de 50EUR si una de 209.55RON la un CURS de 4.1910) Deci, selectul propus de tine nu ma ajuta....
    LE. campul ID_SOCIETATE este folosit pt identificarea firmei curente (asta in cazul in care omul foloseste softul la mai multe firme ale sale). Pt identificarea clientului exista campul ID_CLIENT.
View as RSS news feed in XML
Powered by Community Server (Commercial Edition), by Telligent Systems