AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Rechnungsnr.- Vergabe im Client-Server-System
Thema durchsuchen
Ansicht
Themen-Optionen

Rechnungsnr.- Vergabe im Client-Server-System

Ein Thema von mschaefer · begonnen am 1. Nov 2003 · letzter Beitrag vom 12. Nov 2003
Antwort Antwort
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.032 Beiträge
 
Delphi 12 Athens
 
#1

Rechnungsnr.- Vergabe im Client-Server-System

  Alt 1. Nov 2003, 21:20
Moin, Moin,

Folgendes knackige Problemchen zur besten Samstagsfernsehzeit verhagelt mir diese:

Arbeite an der Vergabe von Rechnugnsnummern in einem System mit Interbase-Datenbank
und meheren Clients. Die letzte Rechnungsnummer liegt in einem Integerfeld einer Datei.
'LastBillNo' : Int
'LastBillDate' : Date

Bevor eine Rechnung gedruckt wird schreibt der Client das aktuelle Datum in dad Feld
'LastBillDate, dann hole ich die durch einen Trigger erzeugte Nummer 'LastBillNo' ab.
Das ist noch nicht ganz bfehlerfrei....


Das größte Problem ist, wenn die Rechnung nicht korrekt gedruckt wird (Druckrstreik, Netwerkknoten,..)
dann ist die Nummer erhöht und die Rechnungsnummer fehlt.

Einfach erniedrigen darf ich nicht, den ein anderer Client könnte gerade ebenfalls sich eine neue Rechnungsnummer geholt haben (dann hätten zwei Rechnungen die gleiche )

Also habe ich überlegt jetzt ein Memofeld dazuzulegen wo Rechnungsnummern von den Clients zurückgegeben werden können, wenn der Druckvorgang schiefging

'FreeBillNos' VarChar(1024)

Jetzt bräcuhte ich auf dem Server eine StoredProcedure, die erst hier nachschaut ob es noch eine
zurückgegebene Nummer gibt, die Verwendet werden kann und zunächst diese zurückgibt, bevor eine
Neue höhere Rechnungsnummer generiert wird.


Hat mit sowas jemand hier Erfahrung / Ideen / Hinweise

Grüße // Martin
Martin Schaefer
  Mit Zitat antworten Zitat
Benutzerbild von Leuselator
Leuselator

Registriert seit: 18. Mär 2003
Ort: Berlin
589 Beiträge
 
Delphi 8 Architect
 
#2

Re: Rechnungsnr.- Vergabe im Client-Server-System

  Alt 1. Nov 2003, 22:20
Hi - vielleicht nicht direkt eine Lösung Deines Problems, aber ein anderer Denkansatz:
Schaff Dir eine Tabelle "Rechnungen". Dort erzeugst Du immer dann einmalig einen neuen Datensatz, wenn eine neue Rechnung erstellt wird. Jedem Datensatz gibst Du ein Feld "Printed" vom typ Boolean mit. Den Ausdruck der Rechnung entkoppelst Du von der Entsprechung in der Datenbank. Geht der Ausdruck schief, kannst Du sie einfach nochmals aus der Datenbank auslesen und ausdrucken. Hat der Ausdruck geklappt, setzt Du das Feld "Printed" auf "True". Will danach ein Anwender diese Rechnung nochmals drucken, kennzeichnest Du diesen Ausdruck einfach mit "Kopie" - Glücklich ist der Anwender
Grüße
Tim Leuschner
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.032 Beiträge
 
Delphi 12 Athens
 
#3

Re: Rechnungsnr.- Vergabe im Client-Server-System

  Alt 2. Nov 2003, 13:20
Moin, Moin

Leuselator, ja man mehr, das Du Dich schon etwas intensiver mit dem Thema befaßt
hast. Das mal von der anderen Seite anzugehen ist sicherlich möglich, aber die Sache
bleibt knifflig.

Deine Lösung ist gut, wenn zu allen Aufträgen eine Rechnung erstellt wird.
Unter den gegebenen Informationen hast Du zielsicheren eine Lösung gefunden !
Danke schonmal!



Mein Problem ist leider noch etwas erweitert: Man kann Quittungen und Rechnungen drucken.
Je nachdem ob bei Warenausgabe bar gezahlt wird. Quittungen haben keine Rechnungsnummer,
sondern eine seperate Quittungsnummer.

Hintergrund
-> Also letzlich steht dahinter, das Quittungen nicht ins Mahnwesen übernommen werden.
-> Das macht hier ein Steuerberatunsbüro. Da die an jeder Buchung verdienen, versucht man
-> so die Buchungsanzahl geringer zu halten indem die Quittungen nicht einzueln Verbucht werden,
-> sondern über die Kasse als Tageseinnahme als eine Buchung mit eingehen.

-> Solange die Rechnung nicht erfolgreich gedruckt ist, besteht immernoch die Möglichkeit,
-> das ein Kunde vorort auftaucht und bar bezahlt. Wenn die Rechnung gedruckt ist geht die
-> gleich in die Post und Barzahlung ist nicht möglich.

Das ist also der Grund warum die Rechnungsnummer erst beim Rechnungsausdruck vergeben werden
soll. Und so komme ich wieder zu dem Problem, das hier gerade im Netz, teils Funk, auchmal
was auf der Strecke bleiben kann. Deshalb frage ich eine Bestätigung ab, ob der Ausdruck
erfolgt ist...




Die Rechnungsnummernvergabe muß vom Server aus gesteuert werden,
da geht wohl kein Weg dran vorbei..

Grüße // Martin

-
Martin Schaefer
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#4

Re: Rechnungsnr.- Vergabe im Client-Server-System

  Alt 2. Nov 2003, 17:34
Ich verstehe das ganze nicht so recht. Was soll da ein Memo, eine Datei oder sonst was zu suchen haben ? Warum legst Du nicht einfach zwei tables an, eine für Rechnungsnummer eine für Quittungsnummer. Mit dem Trigger erhöhst Du einfach die Nummer und fertig. Falls der Drucker streikt, so gibst Du die entsprechende Nr. ein und druckst neu. Wo liegt das Problem ?
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.032 Beiträge
 
Delphi 12 Athens
 
#5

Re: Rechnungsnr.- Vergabe im Client-Server-System

  Alt 2. Nov 2003, 19:47
N´abend
Tja klar für´n Einplazsystem würde ich das auch so machen. Da hängen nacher aber vier bis zehn Rechner dran. Welche Nummer soll nun an Rechner 1 von Kandidat x eingegeben werden, wenn gerade wieder zwei andere an sowas gedruckt haben. Wenn nachher Rechnungsnummern fehlen taugt das auch nichts. Glaube das Finanzbeamte da wenig begeistert wären.

Nichts für ungut Hansa, weiß das Du bestens Warenwirtschaftserprobt bist. Ja da ich mich mit Stored Procedures doch nicht sicher fühle, werde ich es jetzt über eine UDF probieren. Das kann ich etwas (Paradoxerweise). So fängt die Woche doch gleich mit ´ner ausgewachsenen Knobelaufgabe an...

Viele Grüße // Martin

_
Martin Schaefer
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Rechnungsnr.- Vergabe im Client-Server-System

  Alt 2. Nov 2003, 19:55
Hai,

mal eine Anmerkung am Rande:

Ich meine das es so ist das eine Rechnung die in einem WWS als gedruckt gebucht wurde nicht noch einmal als Original erstellt werden darf.

Genaugenommen darf es eh nur EIN Original geben. Alle anderen Ausdrucke müssen als Kopie gekennzeichnet werden.

Ich bin mir aber nicht mehr ganz sicher. In unserem WWS haben wir das so gemacht. Aber ich frage mal unseren Buchhalter.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.032 Beiträge
 
Delphi 12 Athens
 
#7

Re: Rechnungsnr.- Vergabe im Client-Server-System

  Alt 2. Nov 2003, 20:24
Hai ahm Moin Sharky,
ist so exakt wie Du schreibst! Wenn eine Rechnung einmal als gedruckt angegeben wurde
können schon jetzt nur noch Rechnungskopien gedruckt werden.



Mein Ding ist halt, das ich die Rechnungsnummer hole um zu drucken. Nehmen wir mal an,
da hat das Büromeerschweinschen gerade am lokalen Druckerkabel genagt. Rechnungsnummer ist angefordert,druck geht schief. Dann können nun die anderen weiterarbeiten mit ihren eigenen
Druckern. Sie bekommen aufgrund des Datenbanktriggers die nächsten Rechnungsnummern.

Wenn jetzt unser aufgeweckter Anwender den Rechner so stehen läßt und nicht abschlatet ist
das kein Problem irgendwann kann er dann weitermachen. Gibt er entnerft auf, schaltet das Ding ab
dann fehlt plötzlich seine angeforderete ReNr.

Ok ok, aber irgendwie passieren die Katastrophen doch immer dann
wenn man ein Problem mal zurückgestellt hat.



Viele Grüße vom Ufer des Mittellandkanals // Martin

_
Martin Schaefer
  Mit Zitat antworten Zitat
natter24

Registriert seit: 1. Nov 2003
Ort: Aschaffenburg
12 Beiträge
 
Delphi 4 Standard
 
#8

Re: Rechnungsnr.- Vergabe im Client-Server-System

  Alt 7. Nov 2003, 12:23
Hallo,
wie wäre denn folgende Lösung.

Ausgehend davon, dass das defekte Kabel, die leere Patrone etc. ausgetauscht werden, wird anschließend an diesem Client die Rechnung erneut ausgedruckt (davon ist ja wohl auszugehen). Warum also die Rechnungsnummer auf dem Server als noch nicht vergeben markieren. Daher mein Vorschlag:

Dein Client bekommt die Rechnungsnummer vom Server und legt sie zunächst in einer Datenbank auf den Client ab. Wird der Druck exakt ausgeführt, wird diese Nummer wieder gelöscht, andernfalls kann beim nächsten Rechnungsdruck diese Nummer verwendet werden. Also mal.
Norbert
Versuch´s mal mit Gemütlichkeit!
  Mit Zitat antworten Zitat
Benutzerbild von Leuselator
Leuselator

Registriert seit: 18. Mär 2003
Ort: Berlin
589 Beiträge
 
Delphi 8 Architect
 
#9

Re: Rechnungsnr.- Vergabe im Client-Server-System

  Alt 7. Nov 2003, 23:24
habe mir das ganze gerade nochmal durchgelesen und finde, daß mein Vorschlag nach wie vor Dein Problem löst.
Ich würde jeder Firma was husten, wenn sie mir nicht auf Anforderung eine Rechnung druckt, ganz egal ob ich bar, per Lastschrift/Überweisung/Kreditkarte oder in Naturalien zahle. Geschäftsvorgang ist Geschäftsvorgang und eine Rechnung ist die Dokumentation dessen. Wenn ich mich nun entschließe, bar zu zahlen, dann möchte ich zusätzlich eine Quittung über die ordnungsgemäße Begleichung der Rechnung haben! Diese Quittung kann von mir aus Bestandteil der Rechnung sein (Vermerk: Betrag bar erhalten am: Datum - Stempel - Wilhelm).

Aus diesen Überlegungen heraus, gehört 'ne Rechnung erzeugt, wenn ein Geschäft getätigt wird. Aus dem Leben scheidet eine solche Rechnung buchhalterisch wahlweise durch Bezahlung (Habenbuchung) oder Rückabwicklung (Stornobuchung).

Zu der von Dir angesprochenen Problematik der Gebühren: Man kann auch eine Rechnung mit dem Quittungsvermerk über die Kasse Buchen. dann gibt man nur die anderweitig zu zahlenden Rechnungen in das Mahnwesen.

Also 3 Varianten als Orga-Anweisung für Deinen Kunden:
Code:
1. Rechnung normal:
   Ausdruck Rechnung und Rechnung'
   Rechnung    -> Ablage für Postausgang
   Rechnung'   -> Ablage für Mahnwesen Steuerbüro

2. Rechnung mit Quittungsvermerk:
   Ausdruck Rechnung und Rechnung'
   Geld        <- Kunde
   Rechnung    -> Kunde
   Rechnung'   -> Ablage für Barverkauf (wo vorher die Quittungen lagen)

3. Rechnung normal - Kunde kommt unverhofft bar zahlen
   Ausdruck Rechnung und Rechnung'
   Rechnung    -> Ablage für Postausgang
   Rechnung'   -> Ablage für Mahnwesen Steuerbüro
   Geld        <- Kunde
   Rechnung    <- Ablage für Postausgang
   Rechnung    -> Kunde
   Ausdruck Quittung und Quittung' zur Rechnung
   Quittung    -> Kunde
   Rechnung'   <- Ablage für Mahnwesen Steuerbüro
   Rechnung' und Quittung' zusammentackern (Bundle machen)
   Bundle      -> Ablage für Barverkauf (wo vorher die Quittungen lagen)
Tim Leuschner
Programmierer = moderner Sysiphos: stets wenn er meint, den Stein seiner Dummheit auf den Berg des Wissens gewuchtet zu haben, erblickt er einen völlig neuen Aspekt und der Dummfels poltert mit Getöse zurück ins Tal der Unwissenheit...
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.032 Beiträge
 
Delphi 12 Athens
 
#10

Re: Rechnungsnr.- Vergabe im Client-Server-System

  Alt 12. Nov 2003, 20:04
Moin, moin,
Sorry hatte ein paar tage Aussendienst und deshalb melde ich mich erst jetzt wieder:

natter24,

Du ich habe darüber nachgedacht und wenn ich es anders nicht zum Laufen kriege gibt es so eine
Lösung...


Leuselator,

erst mal Danke, Du hast Dich doch da reingehängt (super) Eigentlich hast Du damit wohl auch recht.
Auf alle Fälle ist das ein gangbarer Weg. Bei Vollkaufleuten wird das wohl auch so gemacht. Gerade im GmbH-Bereich geht da auch kein Weg dran vorbei !
Jetzt gibt´s aber immer wieder so kleine Ausnahmen. Zum Beispiel Artzpraxen. Hier wird üblicherweise nur eine Einnahmen-Überschußbuchaltung gefordert. Hierfür ist nun jetzt. Na gut ich werde mich die nächsten Tage auch damit wieder beschäftigen müssen und melde mich dann nochmal

Viele Grüße // Martin


Martin Schaefer
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:31 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz