17. februar 2005 - 18:29Der er
22 kommentarer og 1 løsning
Hvordan opretter man en faktura?
Hej Eksperter.
Jeg vil gerne have muligheden for at lave en faktura i mit program, men er lidt i tvivl om fremgangsmåden.
Problemet ligger i de varer som skal tilføjes til fakturaen. Hvad gør man ved dem?
Skal man oprette et datagrid hvori man én efter én skal indsætte de forskellige varer, og så i et felt skrive pris og antal, eller skal man lave et almindelig form med Labels, som hvor teksten så blive sat til de varer som bliver tilføjet?
1) Oprette et et sæt af klasser som repræsenterer dine data
- En vare-klasse som indeholder information om din vare, pris, farve, størrelse, vægt og alt det gejl - En ordrelinje-klasse som indeholder et vareobject, antal, tidspunkt m.m. - En fakturaklasse som indeholder x ordre-objecter, navn, adresse, m.m. Evt. et kundeobject hvis du har et kunde kartotek.
På din form skal der være være en "ny faktura"-knap som åbner et nyt vindue. I dette vindue har du en nogle textbokse du kan udfylde med information omkring kunden. Disse skal informationer skal gemmes i dit Fakturaobject som oprettes samtidig med at vinduet åbnes.
Nedenunder har du en form før søgemulighed for at søge efter en vare i dit lager, og ved siden af nogle teksboxe til antal, evt. rabat m.m. og en "tilføj"-knap. Når du trykker på den skal der oprettes et ordrelinje-object med de information om varen og antal og det skal tilføjes til faktura-objectet.
Nedunder igen kan du så så have en form for liste, måske et datagid eller en listbox der representærer de ordrelinjer der er i fakturaobjectet. Ud for hver kan der være en rediger og slet-knap.
Til aller sidst skal du have en anuller og udfør knap. Annuller knappen lukker vinduet og sletter faktura-objectet, mens udfør sørger for at gemme det i en form for database eller lign, og skrive en faktura ud til kunden.
Mange tak for din grundige beskrivelse. Den bekræfter lidt hvordan jeg vil have gjort det!!! Beklager at jeg ikke har gjort opmærksom på at jeg har lavet min database. Den bestå af mange tabeller, men i forbindelse med faktura skal der bruge fire som udgangspunkt: Ordre, ordrelinie samt varer og kunder. Det vil sige, at når man kommer på siden "opret faktura" eksempelvis, vil der allerede i ordre tabellen være oprettet en faktura? Er det sådan man gør, for som du selv nævner, kan man annullere faktura, hvor den så bliver slettet, og det vil give nogle spring i Id'erne mellem de fakturaer der bliver oprettet rigtigt....hvis du forstår? Selvfølgelig kan dette være ligemeget, men hvis det er en "tosse" der skal benytte systemet, vil dette ikke blive så "pænt" i ordreoversigten... Håber du vil give en kommentar til dette...
Har lige et enkelt spørgsmål mere efter at have læst dit svar:
Er det muligt at tilføje varer til et datagrid uden at de er gemt i databasen, og så på et senere tidspunkt løbe datagrittet igennem, hvor den gemmer dem alle i databasen?
ja... lad os sige at du har du faktura-object, og inde i den har du en OrdrelinjeCollection. Det er så den collection du skal binde til dit datagrid.
Dim faktura As Faktura = New Faktura()
Dim ol As Ordrelinje = New Ordrelinje() ol.Vare = New Vare("Gummestøvler"); ol.Antal = 4;
faktura.Ordrelinjer.Add(ol)
ditDataGrid.DataSource = faktura.Odrelinjer
Når du skal loade en faktura fra databasen skal du have noget kode der genskaber nøjagtig samme objectmodel som du havde da du oprettede fakturaen i første omgang. F.eks:
Dim faktura as Fakura = Faktura.HentFraDatabase(40) //40 er dit fakturanr ditDataGrid.DataSource = faktura.Ordrelinjer;
Håber du kan se ideen i det.
En anden mulighed er at bruge en O/R-mapper til at gemme og hente fra databasen med.
Hvis du eventuelt ligger inde med et eksempel på ovenstående vil det være helt super. Tror ikke det kommer til at ligne det jeg umiddelbart har lavet til administration af kunder, leverandører mv...Det er vist lidt en anden fremgangsmåde...
Nu har jeg forgæves forsøgt at lave ovenstående, men kan du sige hvad faktura skal indeholde?
Synes ikke helt jeg kan få det til at spille som jeg gerne vil det! Har du eventuelt noget information du kan henvise til, skal jeg nok selv forsøge at sætte mig ind i det. Sidder her med en VB .net bog, men jeg synes ikke lige den er til så stor hjælp. Skal faktura ikke være en klasse som indeholde det information man har brug for at genne i forbindelse med en faktura? Den skal vel også indeholde en form for collection?
Jeg tror jeg har lavet en faktura klasse, indeholdende en kundereferance samt en collection!
Derefter har jeg lavet en ordrelinieklasse, som indeholder fakturaId, VareId, antal, Stykpris.
Når jeg så benytter disse, og tiløjer (add'er) ordrevarelinier til mit fakturaobjekt, virker det fint, men jeg kan ikke tilfæje fakturaen til mit datagrid...
Jeg har ikke forsøgt med databasen endnu, da jeg ikke tror det er problemet. Hvis jeg først kan få ordrevarelinierne vist i mit datagrid, tror jeg godt jeg kan finde ud af at løbe fakturaen igennem, og så der opdatere min database.
namespace _592013 { /// <summary> /// Summary description for Faktura. /// </summary> public class Faktura { private OrdrelinjeCollection olColl; public OrdrelinjeCollection Ordrelinjer { get { return this.olColl; } }
private int kundeId; public int KundeId { get { return this.kundeId; } set { this.kundeId = value; } }
public Faktura() { this.olColl = new OrdrelinjeCollection(this); } } }
Ordrelinje:
using System;
namespace _592013 { /// <summary> /// Summary description for Ordrelinje. /// </summary> public class Ordrelinje { private string vareNavn; public string Navn { get { return this.vareNavn; } set { this.vareNavn = value; } }
private int vareId; public int Id { get { return this.vareId; } set { this.vareId = value; } }
private int antal; public int Antal { get { return this.antal; } set { this.antal = value; } }
private decimal varePris; public decimal Pris { get { return this.varePris; } set { this.varePris = value; } }
Hej igen - har kigget dit eksempel igennem, og der er nogle konkrete ting jeg ikke helt er med på oversættelsen af, selvom jeg dog har fået det meste af overstående eksempel lavet om til Vb.net. Jeg opretter det som et nyt spørgsmål, da jeg ikke synes du skal bruge mere tid på det. Ville bare lige skrive, så du ikke skulle tro det var din besvarelse det var galt med. Tværtimod
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.