Nieuwe verkoop prijs aanpassen en afgerekende verkoop prijzen laten staan

Status
Niet open voor verdere reacties.

Stubbe57

Gebruiker
Lid geworden
15 apr 2012
Berichten
121
Goede dag,

Een vraag, ik ben bezig met het maken van een kassa programma en nu loop ik tegen een probleem aan.

Ik heb een tabel met een product ( product_id )gebaseerd op een barcode ( gebruik een barcode scanner ) met een (verkoop_prijs) veld.
Nu veranderd de verkoop prijs, maar als ik deze in mijn verkoop prijs veld verander, worden ook alle voorgaande verkoop prijzen aangepast.

Hoe kan ik dit oplossen

Ik heb een tabel producten (product_id) waar deze (verkoop_prijs) in staat en alle andere relevante informatie over dat product.
Ik heb een tabel inkoop en een tabel verkoop , hier wordt de voorraad mee bijgehouden gebaseerd op (product_id).

Ik ben aan het klooien geweest maar kom er niet uit.

Wie kan mij helpen

Bedankt alvast

Jan
 
Hallo Andre,

Dank voor je reply, maar het meeste gaat over Excel of min of meer kan en klare programma's en dit is niet hetgeen ik zoek.

Gr.

Jan
 
Je zult de verkoopprijs ook in de tabel verkopen moeten opslaan voor elke afzonderlijke verkoop. Als je dan de verkoopprijs in de tabel producten wijzigt, zal deze alleen voor de verkopen vanaf dat moment gelden en zullen oude verkopen tegen de oude verkoopprijs gewaardeerd worden.
Hetzelfde kun je natuurlijk ook doen voor je inkoopprijzen.
 
Extra tabel voor prijsafspraken

Goedemiddag Jan,

Zelf heb ik dit in het verleden opgelost door een aparte tabel te hanteren met verkoopprijzen, waarin OOK wordt opgenomen een begindatum en een evt. einddatum van de verkoopprijzen.

De structuur van zo'n tblPrijsafspraken, zou als volgt kunnen zijn :

IDproduct
stuksprijs
ingangsdatumprijs
einddatumprijs

Let wel : evt. neem je óók nog een klantnr op ( MOCHT je prijsafspraken ook per klant willen vastleggen ).

Hopend dat je d'r mee uit te voeten kunt !

Mvg,

Hans Hunnekens
 
Kleine aanvulling nog ...

Hallo Jan,

Let wel : zorg dan dat die prijsafspraak uit de tblPrijsafspraken als "default" wordt opgenomen bij het afrekenen.

Sta echter toe dat aan de kassa uiteindelijk TOCH EEN ANDERE prijs kan worden gekozen, voor een specifieke verkoop.

Zodoende ben je zowel flexibel als goed georganiseerd.

Hopend dat je d'r wat aan hebt.

Mvg,


Hans
 
Heb je wel eens naar deze gratis open source gekeken?
http://www.unicenta.com/
Waarschijnlijk maak je het in Access dus.
Je kunt de klant ook als leidend nemen, de prijs wel vast in database zetten, en je zou dus een prijs-correctie veld aankunnen maken, die default op 100% staat maar aanpasbaar is. Dan heb je nog een extra veld waar prijs x percentage uitgerekend wordt en opgeslagen.
Per product zou je ook een datumafhankelijke prijs in kunnen voeren, en dat het actuele formulier dus altijd de laatste prijs neemt. Dus dan krijg je dus mooi een tabel hoe de prijs van dat product in de tijd verloopt. Ook wel een handige tool voor later als je met de data nog wat wilt doen.
Eigenlijk dus wat HHunnekens voorstelt, hij was eerder....eerlijk is eerlijk
Als je idd maar een veld voor de prijs aanmaakt... en die moet telkens aanpassen aan de actualiteit dan ben je de oude gegevens kwijt...
Succes.
 
Beste Hans,

Ok de oplossing is duidelijk de uitvoering nog niet

Ik heb nu een hoofdtabel met de actuele info en ik heb nu een tabel waar de kassa verkopen worden geboekt. Nu komt de ham vraag , hoe zet ik de prijs uit de actuele tabel naar de verkoop tabel , heb jij dit met een copy functie gedaan
 
De oplossing is behoorlijk simpel. Je kunt inderdaad (de makkelijkste oplossing) de actuele verkoopprijs opslaan in de tabel Verkopen. Dat kun je doen door een veld daarvoor op te nemen in je formulier, dat je vult vanuit een keuzelijst met Artikelen. In de query van die keuzelijst heb je het ProductId en de laatste prijs (vanuit de prijsafspraken tabel) staan. Bij kiezen van een artikel vul je automatisch het veld Prijs op het formulier. Resultaat: altijd de juiste verkoopprijs bij een verkoop.
 
Hallo Michel,

Ik denk dat ik door het wat je bedoeld, hoewel ik geen prijsafspraak tabel heb, het is gewoon een prijslijst en waar ik prijsverhogingen / verlagingen wil verwerken om toch een goed beeld van de omzet te kunnen behouden. Ik ben er heel de avond al meee bezig, maar ga met jouw idee ook aan de slag

Bedankt
 
Een tabel met pijsmutaties is handig als je de historie van de prijzen wilt bewaren. Zo niet, dan kun je de prijs uiteraard ook uit de tabel Artikelen halen. De techniek blijft exact hetzelfde.
 
FF terug naar de basis ?

Hoi Jan,

Mocht je d'r toch nog niet uit kunnen komen ... wellicht is het raadzaam om - voor je eigen beeldvorming - eens goed op en uit te schrijven :

- naam van de tabellen die je nu hebt ( ik denk te begrijpen een tabel voor Artikelen en een tabel met Verkoopregels );
- per tabel de velden die je nu hebt.

Breidt dat dan uit met een extra tabel voor prijsafspraken ( noem 'm evt. tblPrijsafspraken ).

de voorgestelde tblPrijsafspraken zou als velden kunnen hebben :

  1. IDproduct ( ofwel product artikelnr ) ;
  2. prijs per stuk ;
  3. ingangsdatum prijsafspraak ;
  4. einddatum prijsafspraak.

Breng daarna de relaties tussen tabellen en velden onderling in beeld ( trek bijv. lijnen ).

Je zult dan wellicht het duidelijkst kunnen zien hetgeen "je advies team" bovengenoemd heeft proberen aan te geven en dan aan de slag kunnen om e.e.a. concreet te programmeren ( ik denk in VBA code ).

FF doordenkend, schat ik in dat je - als je dit bovenstaande doet - "zoiets in basis" zult blijken te hebben als :

Tabel :tblArtikelen
Velden :
  1. artikelnummer
  2. artikelnaam


Tabel : tblVerkoopregels
Velden
  1. kassadatum
  2. artikelnummer
  3. stuksprijs 'bedoeld als de FEITELIJKE stuksprijs
  4. aantal verkocht


Breidt dit nu uit met :

de tblPrijsafspraken zou als velden kunnen hebben :

  1. IDproduct ( ofwel product artikelnr ) ;
  2. prijs per stuk ;
  3. ingangsdatum prijsafspraak ;
  4. einddatum prijsafspraak.

Zorg vervolgens dat op het moment dat je een product bij de kassa scant als zijnde "verkocht", dat er dan een nieuw record komt in
de tabel tblVerkoopregels, zodanig dat het veld stuksprijs in eerste instantie wordt gevuld met de nu geldende prijs ( o.v.b. IDproduct en de data/datums ) voor dat artikelnummer.

Laat dan aan de persoon aan de kassa of hij/zij evt. die "default prijs" toch nog wil veranderen in een andere ( vanwege flexibiliteit voor kortingen e.d. ).

Enfin, ik hoop dat je e.e.a. zo echt volledig duidelijk kunt hebben;).

Succes !

Mvg,

Hans
 
Een aardig begin van Hans, al vind ik de naam tblPrijsafspraken een beetje misleidend (het zijn geen prijsafspraken, maar prijsmutaties) en is één mutatiedatum voldoende. Immers: de laatste datum is automatisch de actuele prijs. Je hoeft dus geen BeginDatum èn EindDatum op te slaan, een veld Mutatiedatum is al genoeg. En ik mis nog een tabel Verkopen, waarin de totaaltransactie wordt opgeslagen, die dan is gekoppeld aan de tabel Verkoopregels.
 
De oplossing had ik in #9 al aangegeven: nu toegespitst op je eigen db de werkoplossing.
1. Maak in je tabel [tb kassa_02] (compleet verkeerde naam wat mij betreft) een extra veld aan met de naam [totaal_verkoop] (om in jouw termen te blijven).
2. Zet dit veld ook in de query [qr kassa_02] (zie boven).
3. Koppel dit veld op het formulier <fm kassa_02> (wel consequent ;) ) aan het tekstveld [txtVerkoopprijs] (ik geef tekstvelden altijd het voorvoegsel txt, zodat ik het onderscheid weet tussen het veld en het object)
4. Geef het keuzeveld voor de producten een fatsoenlijke naam (waarom niet, zou ik zeggen) en geef hem deze code:
Code:
    Private Sub cboProduct_Click()
        Me.txtVerkoopprijs = Me.cboProduct.Column(3)
    End Sub
Omdat je een tekstveld maar één keer kan koppelen en je de prijs op wilt slaan, moet het tekstveld met de prijs gekoppeld zijn aan de tabel met de transacties, en niet aan de tabel met de artikelprijzen. Die fluctueren namelijk.
Het tekstveld krijgt zijn prijs nu bij het kiezen van een artikel, dus in dit voorbeeld bij de gebeurtenis <Bij Klikken> van de keuzelijst. De prijs zit in de SQL van de keuzelijst, in de vierde kolom. En zo simpel is het...
 
Michel hartelijk dank voor je hulp, en Hans ook bedankt voor de genomen moeite, maar met de hulp van Michel is het gelukt.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan