AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi aktuelles Mwst.-Problem [SQL]
Thema durchsuchen
Ansicht
Themen-Optionen

aktuelles Mwst.-Problem [SQL]

Ein Thema von Hansa · begonnen am 12. Aug 2005 · letzter Beitrag vom 8. Sep 2005
Antwort Antwort
Seite 3 von 4     123 4      
Hansa

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

Re: aktuelles Mwst.-Problem [SQL]

  Alt 7. Sep 2005, 15:08
SQL-Code:
CREATE PROCEDURE KUARTSTATSP (
    ID_KUNDE INTEGER,
    ID_ART INTEGER,
    MONAT SMALLINT,
    JAHR SMALLINT,
    MWSTSATZ SMALLINT,
    UMSATZ DECIMAL(15,2)
AS
DECLARE VARIABLE VAR_MWSTWERT DECIMAL(15,2);
DECLARE VARIABLE VAR_UMSATZBRUTTO DECIMAL(15,2);
begin
  SELECT MWSTWERT FROM MWSTWERTSP8 (:MWSTSATZ,:MONAT,:JAHR) INTO :VAR_MWSTWERT;
  VAR_UMSATZBRUTTO = :UMSATZ * (1 + VAR_MWSTWERT / 100);
    insert into KUARTSTAT8 (MONAT,JAHR,MWSTSATZ,ID_KUNDE,ID_ART,UMSATZ,UMSATZBRUTTO)
           values (:MONAT,:JAHR,:MWSTSATZ,:ID_KUNDE,:ID_ART,:UMSATZ,:VAR_UMSATZBRUTTO);
  end
  suspend;
end
Das ist jetzt stark verkürzt, aber der Hund ist da begraben. 8) Seltsamerweise ist noch folgender Effekt zu bemerken, wenn ich das Insert durch ein Update ersetze :

SQL-Code:
    update KUARTSTAT set UMSATZ=UMSATZ+ :UMSATZ,
                          UMSATZBRUTTO=UMSATZBRUTTO + :VAR_UMSATZBRUTTO,
                where (MONAT= :MONAT) and
                      (JAHR= :JAHR) and
                      (ID_ART= :ID_ART) and
                      (ID_KUNDE= :ID_KUNDE);
Sofern ich im Insert einen festen Wert einsetze, dann steht der drin. Nach dem Update ist er aber trotz BI-Trigger NULL. An dem Wert ist trotz (zwar vorhandenem) AU-Trigger nichts geändert worden.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau
Online

Registriert seit: 1. Dez 2004
Ort: Köln
1.268 Beiträge
 
Delphi 11 Alexandria
 
#22

Re: aktuelles Mwst.-Problem [SQL]

  Alt 7. Sep 2005, 15:29
Und noch ein kleiner Tipp zu Rundungsfehlern, die man immer berücksichtigen sollte:


Ein bestimmter Artikel kostet 3,33 EUR zzgl. 16%MwSt (0,53EUR MwSt) = 3,86 EUR Brutto

Im Monat werden 100 Rechnungen mit diesem Artikel geschrieben. 100 * 3,86EUR = 386.00 EUR

Wenn aber für alle 100 Artikel zuerst der Gesamt-Netto-Betrag berechnet wird ( = 333 EUR) und daraus die MwSt ( 53,28 EUR) berechnet wird, erhält man 386,28 EUR

Da hat man also für 0,28 EUR weniger auf dem Konto, als man denkt

Nur so zur Info.



Gerd
  Mit Zitat antworten Zitat
Hansa

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

Re: aktuelles Mwst.-Problem [SQL]

  Alt 7. Sep 2005, 17:10
Zitat von bernau:
...Nur so zur Info.
1+1=2 ? Jo, das weiß ich. Das Problem ist damit aber nicht gelöst !
Gruß
Hansa
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#24

Re: aktuelles Mwst.-Problem [SQL]

  Alt 7. Sep 2005, 19:33
Hallo hansa,

der von dir gepostete code für die stored procedure KUARTSTATSP compiliert nicht und kann also nicht der bei dir funktionierende code sein. Aber das weißt du sicher und willst nur mal abwarten, ob es jemand merkt - stimmt's?

Grüße vom marabu
  Mit Zitat antworten Zitat
Hansa

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

Re: aktuelles Mwst.-Problem [SQL]

  Alt 7. Sep 2005, 20:32
Was soll das ? Ich poste absichtlich keinen Code der sich nicht mal compilieren läßt. Allerdings ist er ja verkürzt und da ist ganz klar zu sehen, daß hinter dem UMSATZ DECIMAL (15,2) eine ) fehlt !! Die vom Create. Habe das nicht gesehen, aber für DB-Profis dürfte das kein Hindernis sein. In der Fehlermeldung wird sogar auf das fehlende ) hingewiesen. 8)
Gruß
Hansa
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#26

Re: aktuelles Mwst.-Problem [SQL]

  Alt 7. Sep 2005, 20:54
Hansa, das ist sehr nett von dir, dass du den Code um eine schließende Klammer kürzt, damit mein download schmaler wird. Hast auch gleich noch ein begin und ein paar weitere Zeilen weggelöscht. Das letzte mal, als du Hilfe gesucht hast, da lag der Fehler in dem Teil des codes, den wir nicht sehen konnten. Ich vermute, das du in den weggekürzten Zeilen die Variable Umsatz auf 0 setzt.

marabu
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#27

Re: aktuelles Mwst.-Problem [SQL]

  Alt 7. Sep 2005, 21:04
Hallo marabu,
ich würde es schade finden, wenn du dich durch Hansas arrogante Ansichten[1] hier fehl am Platz fühlen würdest.
Mache es wie ich und ignoriere das einfach, du hast dich ja schon oft genug über ihn geärgert.

[1]Er denkt wirklich, dass seine 20 Zeilen PSQL so komplex sind, dass er ihn schützen muss
Und er denkt wirklich, dass er sich proffessionell verhält...
  Mit Zitat antworten Zitat
Hansa

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

Re: aktuelles Mwst.-Problem [SQL]

  Alt 7. Sep 2005, 23:03
Hi Robert. 8) Ignorieren ist für mich was anderes als hier rumzustänkern ! Damit meine ich jetzt Dich, sonst keinen !

Ich teste mit folgender Table :

SQL-Code:
SET SQL DIALECT 3;

SET NAMES ISO8859_1;

/******************************************************************************/
/****                                Tables                                ****/
/******************************************************************************/

CREATE GENERATOR GEN_KUARTSTAT_ID;

CREATE TABLE KUARTSTAT (
    ID INTEGER NOT NULL,
    ID_KUNDE INTEGER NOT NULL,
    ID_ART INTEGER NOT NULL,
    MONAT SMALLINT NOT NULL,
    JAHR SMALLINT NOT NULL,
    MWSTSATZ SMALLINT,
    UMSATZ DECIMAL(15,2),
    UMSATZBRUTTO DECIMAL(15,2)
);

/******************************************************************************/
/****                          Unique Constraints                          ****/
/******************************************************************************/

ALTER TABLE KUARTSTAT ADD CONSTRAINT UNQ_KUARTSTAT UNIQUE (ID_KUNDE, ID_ART, MONAT, JAHR);

/******************************************************************************/
/****                             Primary Keys                             ****/
/******************************************************************************/

ALTER TABLE KUARTSTAT ADD CONSTRAINT PK_KUARTSTAT PRIMARY KEY (ID);

/******************************************************************************/
/****                             Foreign Keys                             ****/
/******************************************************************************/

ALTER TABLE KUARTSTAT ADD CONSTRAINT FK_ART_KUARTSTAT FOREIGN KEY (ID_ART) REFERENCES ART8 (ID) ON DELETE CASCADE;
ALTER TABLE KUARTSTAT ADD CONSTRAINT FK_KUNDE_KUARTSTAT FOREIGN KEY (ID_KUNDE) REFERENCES KUNDE8 (ID) ON DELETE CASCADE;


/******************************************************************************/
/****                               Triggers                               ****/
/******************************************************************************/


SET TERM ^ ;


/******************************************************************************/
/****                         Triggers for tables                          ****/
/******************************************************************************/



/* Trigger: KUARTSTAT_BI0 */
CREATE TRIGGER KUARTSTAT_BI0 FOR KUARTSTAT
ACTIVE BEFORE INSERT POSITION 0
as
begin
  if (new.ID is null) then
    new.ID = gen_id(GEN_KUARTSTAT_ID, 1);
  if (NEW.UMSATZ IS NULL) then
    NEW.UMSATZ = 0;
end
^
Die aufrufende Prozedur ist die hier :

SQL-Code:
SET TERM ^ ;

CREATE PROCEDURE KUARTSTATSP (
    ID_KUNDE INTEGER,
    ID_ART INTEGER,
    MONAT SMALLINT,
    JAHR SMALLINT,
    MWSTSATZ SMALLINT,
    UMSATZ DECIMAL(15,2))
AS
DECLARE VARIABLE VAR_MWSTWERT DECIMAL(15,2);
DECLARE VARIABLE VAR_UMSATZBRUTTO DECIMAL(15,2);
begin
  SELECT MWSTWERT FROM MWSTWERTSP8 (:MWSTSATZ,:MONAT,:JAHR) INTO :VAR_MWSTWERT;
  VAR_UMSATZBRUTTO = :UMSATZ * (1 + VAR_MWSTWERT / 100);
  insert into KUARTSTAT (MONAT,JAHR,MWSTSATZ,ID_KUNDE,ID_ART,UMSATZ,UMSATZBRUTTO)
           values (:MONAT,:JAHR,:MWSTSATZ,:ID_KUNDE,:ID_ART,:UMSATZ,:VAR_UMSATZBRUTTO);
  suspend;
end
^

SET TERM ; ^

Die Proc. innerhalb der SP ist die hier:
SQL-Code:
SET TERM ^ ;

CREATE PROCEDURE MWSTWERTSP8 (
    MONAT SMALLINT,
    JAHR SMALLINT,
    MWSTSATZ SMALLINT)
RETURNS (
    MWSTWERT NUMERIC(9,2))
AS
DECLARE VARIABLE DATUM DATE;
BEGIN
  DATUM = CAST('01.'|| MONAT || '.' || JAHR AS DATE);
  SELECT FIRST 1
    MWSTWERT
  FROM
    MWST8
  WHERE
    (MWSTSATZ=:MWSTSATZ) AND (ABDATUM <= :DATUM)
  ORDER BY
    ABDATUM DESC
  INTO
    :MWSTWERT;
  IF (MWSTSATZ is null) THEN
    MWSTSATZ = 0;
  SUSPEND;
END
^

SET TERM ; ^
Thx an Alex, daß die tatsächlich geht. Die ermittelt die Mwst. abhängig vom Datum. Wer sieht jetzt da den Fehler ? Rumlamentieren hilft da jetzt eben nichts. 8)

Edit 2 :

Die Mwst.-Table fehlt noch :

SQL-Code:
/******************************************************************************/
/****              Generated by IBExpert 08.09.2005 00:10:40               ****/
/******************************************************************************/

SET SQL DIALECT 3;

SET NAMES ISO8859_1;



/******************************************************************************/
/****                                Tables                                ****/
/******************************************************************************/


CREATE GENERATOR GEN_MWST8_ID;

CREATE TABLE MWST8 (
    ID INTEGER NOT NULL,
    ABDATUM DATE,
    MWSTSATZ SMALLINT,
    MWSTWERT DECIMAL(15,2),
    ANGELEGT TIMESTAMP,
    LETZTEAENDERUNG TIMESTAMP
);




/******************************************************************************/
/****                               Triggers                               ****/
/******************************************************************************/


SET TERM ^ ;


/******************************************************************************/
/****                         Triggers for tables                          ****/
/******************************************************************************/



/* Trigger: MWST8_AUO */
CREATE TRIGGER MWST8_AUO FOR MWST8
ACTIVE AFTER UPDATE POSITION 0
as
begin
  update MWST8 set
    LETZTEAENDERUNG = current_timestamp
  where (ID = old.ID) and ((LETZTEAENDERUNG is null) or
        (LETZTEAENDERUNG <> current_timestamp));
end
^


/* Trigger: MWST8_BI0 */
CREATE TRIGGER MWST8_BI0 FOR MWST8
ACTIVE BEFORE INSERT POSITION 0
as
begin
  if (new.ID is null) then
    new.ID = gen_id(GEN_MWST8_ID, 1);
  if (new.angelegt is null) then
    new.ANGELEGT = current_timestamp;
end
^


SET TERM ; ^
Reicht das jetzt ? Aber wie gesagt : vieles fehlt, was ich normalerweise noch brauche.
Gruß
Hansa
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#29

Re: aktuelles Mwst.-Problem [SQL]

  Alt 8. Sep 2005, 07:53
Hallo Hansa,

relevant für deinen Fehler "VAR_UMSATZBRUTTO ist immer 0" ist von deinem Riesen-Posting nur die Prozedur KUARTSTATSP. Offensichtlich veränderst du die Variable Umsatz in dieser Prozedur nicht, so dass ich meinen Hinweis von weiter oben abändere und behaupte, dass dieser Parameter schon beim Aufruf mit 0 belegt ist. Wie sonst sollte die Berechnung innerhalb der Prozedur zum Ergebnis 0 kommen?

marabu
  Mit Zitat antworten Zitat
alex517

Registriert seit: 23. Nov 2004
Ort: Bernau b. Berlin
273 Beiträge
 
Delphi XE5 Enterprise
 
#30

Re: aktuelles Mwst.-Problem [SQL]

  Alt 8. Sep 2005, 10:15
Hallo Hansa,

ich kann mich nur nochmal wiederholen.
Entferne die Doppelpunkte. Begründung siehe oben.

Zitat:
hansa
SQL-Code:
CREATE PROCEDURE KUARTSTATSP (
...
  VAR_UMSATZBRUTTO = :UMSATZ * (1 + VAR_MWSTWERT / 100);
...
end
alex
Alexander
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


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 04:45 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