Rechnungen – Preis kalkulieren

I. Preisrechner (Teilnehmer, Referenten,Standpersonal,..)

Das Szenario im Plugin DATAPROZESSOR berechnet den Preis und befüllt durch die $param-Werte die Preistabelle

Diese ist auf Session-Basis. Die Werte werden durch andere Szenarien und (Pflichtfeld-)Prüfungen befüllt.

$_SESSION[‚verify_NAME_DES_FORMULARFELDES‚]

Der Vorname aus dem Input-Feld vorname wird in $_SESSION[‚verify_vorname‘] gespeichert und kann so abgerufen werden.
anrede,vorname,nachname,firma sind fixe Formularfelder.
Auch der ausgewählte Wert vom Radio-Button rechnung_bezahlung (mit Auswahloption  rechnung oder kreditkarte ) wird in $_SESSION[‚verify_rechnung_bezahlung‘] gespeichert.
Weitere fixe und wichtige Formularfelder sind rechnung_firma, rechnung_empfaenger, rechnung_plz, rechnung_ort,rechnung_land, rechnung_email

 

Basisparameter:

1) Sprache (Standard de_DE)

wird in der Regel im Header gesetzt (PHP-Objekt set_locale() )oder im Menü
und in ein hidden-Formularfeld geschrieben. Wenn nichts definiert ist, dann ist de_DE=deutsch die gewählte Default-/Standard-Sprache

$session_locale =“de_DE“;
if($_SESSION[‚px_locale‘])
{
$session_locale = $_SESSION[‚px_locale‘];
}


2) Bruttopreise oder Netto

wird im Szenario ganz oben definiert
$preise_brutto_netto = ‚brutto‘;

Damit wird ermittelt ob der Haupt-Preisgegenstand $px_preis ein Brutto- oder Nettobetrag darstellt und ob davon die Mehrwertsteuer dazugerechnet oder abgezogen werden muss.

3) Earlybird

Falls es ein Frühbucherrabatt gibt, muss folgende Passage im Szenario PREISRECHNER eingebaut werden.
Es können auch gestaffelte Frühbucherrabatte [6-3-1 Monat(e) vor Event] definiert werden und die if-/else-Abfragen entsprechend erweitert werden.

$early01_tag = mktime(23,59,59,4,10,2026); // – 10.April 23:59:59  mktime(Stunde,Minute,Sekunde,Monat,Tag,Jahr)
$early02_tag = mktime(23,59,59,6,10,2026); //10.Juni

if( get_current_user_id() > 0)  //wenn eingeloggt, dann war er/sie schon mal eingeloggt und hat bereits ein Earlybird; daher Prüfung aussetzen
{
$earlybird_betrag = (float)get_user_meta( get_current_user_id(), „px_earlybird_betrag“, true) ;
$earlybird_betrag_netto = (float)get_user_meta( get_current_user_id(), „px_earlybird_betrag_netto“, true) ;

$earlybird_text_de = ‚Earlybird-Rabatt übertragen‘;
$earlybird_text_en = ‚Earlybird discount transferred‘;
$earlybird_text_de_netto = ‚Earlybird-Rabatt übertragen (Netto)‘;
$earlybird_text_en_netto = ‚Earlybird discount transferred (Net)‘;

}
elseif( $early01_tag >= strtotime(’now‘) ) //Zeit jetzt ist davor also Rabatt-fähig
{
$earlybird_betrag = (float)‘-200.00‚ ;
$earlybird_betrag_netto = -200.00/1.19;
$earlybird_text_de = ‚Earlybird-Rabatt‘;
$earlybird_text_de_netto = ‚Earlybird-Rabatt (Netto)‘;
$earlybird_text_en = ‚Earlybird discount‘;
$earlybird_text_en_netto = ‚Earlybird discount (Net)‘;
}
}
elseif( $early02_tag >= strtotime(’now‘) ) //Zeit jetzt ist davor also Rabatt-fähig
{
$earlybird_betrag = (float)‘-100.00‚ ;
$earlybird_betrag_netto = -100.00/1.19;
$earlybird_text_de = ‚Earlybird-Rabatt‘;
$earlybird_text_de_netto = ‚Earlybird-Rabatt (Netto)‘;
$earlybird_text_en = ‚Earlybird discount‘;
$earlybird_text_en_netto = ‚Earlybird discount (Net)‘;
}

4) Preise für Preistabelle

$param[‚NAME-DES_FORMULARFELDES‘], dann wird es nachher automatisch in das entsprechende Formularfeld mit JAvascript/jQuery geschrieben

Preise und Texte definieren

if($gse_member==’ja‘ && $teilnahme_hotel==’ja‘ && $teilnahme_guest==’ja‘)
{
$px_preis = (float)‘1111.00‚;
$px_preis_brutto_formatted = number_format($px_preis,2,‘,‘,“);

$px_preis_netto = number_format($px_preis/1.19,2,‘.‘,“);
$px_preis_netto_formatted = number_format($px_preis_netto,2,‘,‘,“);

$px_produkt_de = ‚A21-MD Tagungsgebühr 2 Tage mit 1 Hotelübernachtung (‚.$tagestring_de.‘) mit Gast: ‚;
$px_produkt_en = ‚A21-MD Conference fee 2 days with 1x hotelaccommodation (‚.$tagestring_en.‘) with guest: ‚;

$px_produkt_de_brutto = $px_produkt_de.$px_preis_brutto_formatted.‘ €‘;
$px_produkt_en_brutto = $px_produkt_en.$px_preis_brutto_formatted.‘ €‘;

$px_produkt_de_netto = $px_produkt_de.$px_preis_netto_formatted.‘ € (Netto)‘;
$px_produkt_en_netto = $px_produkt_en.$px_preis_netto_formatted.‘ € (Net)‘;

}
elseif …..
{
….
}

 

Sprachliche Differenzierung

In der Preistabelle müssen die Input-Felder mit dem Namen der hier violetten Parameter vorhanden sein um mit den zugewiesenen Werten befüllt werden zu können.

if($session_locale ==’de_DE‘)
{
   $param[‚px_preis‚] = number_format($px_preis,2,‘.‘,“);
   $param[‚px_preis_netto‚] = number_format($px_preis_netto,2,‘.‘,“);
   $param[‚px_produkt‚] = $px_produkt_de_brutto;
   $param[‚px_produkt_netto‚] = $px_produkt_de_netto;

  $param[‚px_zusatzuebernachtung_betrag‚] = number_format($zusatzuebernachtung_betrag,2,‘.‘,“);
  $param[‚px_zusatzuebernachtung_betrag_netto‚] = number_format($zusatzuebernachtung_betrag_netto,2,‘.‘,“);
  $param[‚px_zusatzuebernachtung_text‚] = $zusatzuebernachtung_text_de_brutto;
  $param[‚px_zusatzuebernachtung_text_netto‚] = $zusatzuebernachtung_text_de_netto;

  $param[‚px_earlybird_betrag‚] = number_format($earlybird_betrag,2,‘.‘,“);
  $param[‚px_earlybird_betrag_netto‚] = number_format($earlybird_betrag_netto,2,‘.‘,“);
  $param[‚px_earlybird_text‚] = $earlybird_text_de;
  $param[‚px_earlybird_text_netto‚] = $earlybird_text_de_netto;

  $param[‚gutschrift_text‚] = $gutschrift_text_de;

  $response = ‚Preis wurde automatisch ermittelt!‘;
}
else
{
   $param[‚px_preis‘] = number_format($px_preis,2,‘.‘,“);
   $param[‚px_preis_netto‘] = $px_preis_netto;
   $param[‚px_produkt‘] = $px_produkt_en_brutto;
   $param[‚px_produkt_netto‘] = $px_produkt_en_netto;

  $param[‚earlybird_betrag_unformatted‘] = $earlybird_betrag;

  $param[‚px_zusatzuebernachtung_betrag‘] = number_format($zusatzuebernachtung_betrag,2,‘.‘,“);
  $param[‚px_zusatzuebernachtung_betrag_netto‘] = number_format($zusatzuebernachtung_betrag_netto,2,‘.‘,“);
  $param[‚px_zusatzuebernachtung_text‘] = $zusatzuebernachtung_text_en_brutto;
  $param[‚px_zusatzuebernachtung_text_netto‘] = $zusatzuebernachtung_text_en_netto;

  $param[‚px_earlybird_betrag‘] = number_format($earlybird_betrag,2,‘.‘,“);
  $param[‚px_earlybird_betrag_netto‘] = number_format($earlybird_betrag_netto,2,‘.‘,“);
  $param[‚px_earlybird_text‘] = $earlybird_text_en;
  $param[‚px_earlybird_text_netto‘] = $earlybird_text_en_netto;

  $param[‚gutschrift_text‘] = $gutschrift_text_en;
  $response = ‚Prices were calculated automatically!‘;
}

5. Gesamtpreis

Sofern im Projektverlauf ein weiterer Kostenfaktor wie Treuebonus, Workshop-Gebühr, Ermäßigung Ehrenmitglied,… hinzukommt,
muss der Betrag sowohl brutto und netto bei der Zwischensumme hinzuaddiert werden (egal ob positiver oder negativer Wert)

if ($preise_brutto_netto==’brutto‘)
{
$px_zwsumme_brutto_unformatted = $px_preis + $zusatzuebernachtung_betrag + $gutschrift_betrag + $earlybird_betrag + $rabattcode_betrag + px_rechzusatz_preis02 ;
$px_zwsumme_netto_unformatted = $px_zwsumme_brutto_unformatted / (1.19);
}
else
{
$px_zwsumme_netto_unformatted = $px_preis_netto + $zusatzuebernachtung_betrag_netto + $px_gutschrift_betrag_netto + $px_earlybird_betrag_netto +   $rabattcode_betrag_netto + px_rechzusatz_preis02_netto;
$px_zwsumme_brutto_unformatted = $px_zwsumme_netto_unformatted * (1.19);
}

$param[‚px_zwsumme_netto‘] =number_format($px_zwsumme_netto_unformatted,2,‘.‘,“);

$param[‚px_zwsumme_brutto‘] =number_format($px_zwsumme_brutto_unformatted,2,‘.‘,“);

 

7. Paypal oder Rechnung

Je nach Land (EWR = Europäische Währungsunion) gelten unterschiedliche Gebühren(Fees)

if($rechnung_bezahlung == ‚kreditkarte‚)
{

switch ($rechnung_land)
{
case in_array($rechnung_land,$EWRstaaten):

$px_fees_paypal_unformatted = $px_zwsumme_brutto_unformatted *(0+0.0299);
break;

case in_array($rechnung_land,array(‚Grossbritannien‘,’Großbritannien‘)):

$px_fees_paypal_unformatted = $px_zwsumme_brutto_unformatted *(0+0.0299+0.0129);
break;

case in_array($rechnung_land,array(‚Vereinigte Staaten von Amerika‘,’USA‘,’U.S.A.‘,’Kanada‘ )):

$px_fees_paypal_unformatted = $px_zwsumme_brutto_unformatted *(0+0.0299+0.0199);
break;

default:
$px_fees_paypal_unformatted = $px_zwsumme_brutto_unformatted *(0+0.0299+0.0299);
break;

}

 

$px_fees_paypal = number_format($px_fees_paypal_unformatted,2,‘.‘,“);

$px_mwst = ‚0.00‘;
$px_gesamtbetrag = ‚0.00‘;
$px_gesamtbrutto = ‚0.00‘;

$px_mwst_inclfees_unformatted = ($px_zwsumme_netto_unformatted + $px_fees_paypal_unformatted)*0.19;
$px_mwst_exclfees_unformatted = ($px_zwsumme_netto_unformatted )*0.19;

$px_mwst_gesamtbetrag = number_format($px_mwst_exclfees_unformatted,2,‘.‘,“);
$px_mwst_gesamtbrutto = number_format($px_mwst_inclfees_unformatted,2,‘.‘,“);

$px_gesamtbetrag_unformatted = $px_zwsumme_netto_unformatted +$px_mwst_exclfees_unformatted;

$px_gesamtbrutto_unformatted = $px_zwsumme_netto_unformatted +$px_fees_paypal_unformatted +$px_mwst_inclfees_unformatted;

$px_gesamtbetrag = number_format( $px_gesamtbetrag_unformatted,2,‘.‘,“);
$px_gesamtbrutto = number_format( $px_gesamtbrutto_unformatted,2,‘.‘,“);

$param[‚px_fees_paypal‘] = $px_fees_paypal;
$param[‚px_fees_paypal_unformatted‘] = $px_fees_paypal_unformatted;

$param[‚px_mwst_gesamtbetrag‘]= $px_mwst_gesamtbetrag;
$param[‚px_gesamtbetrag‘] = $px_gesamtbetrag;

$param[‚px_mwst‘] = $px_mwst_gesamtbrutto;
$param[‚px_mwst_gesamtbrutto‘]= $px_mwst_gesamtbrutto;
$param[‚px_gesamtbrutto‘] = $px_gesamtbrutto;

if($session_locale==’de_DE‘)
{
   $param[‚px_zwsumme_nettotext‘] = ‚Zwischensumme (Netto)‘;
  $param[‚px_zwsumme_bruttotext‘] = ‚Zwischensumme (Brutto)‘;

  $param[‚px_fees_paypaltext‘] = ‚Gebühren‘;
  $param[‚px_mwsttext‘] = ‚MwSt. (19%)‘;
  $param[‚px_gesamtbetragtext‘] = ‚Gesamtbetrag (Brutto)‘;
}
else
{
   $param[‚px_zwsumme_nettotext‘] = ‚Subtotal (net)‘;
   $param[‚px_zwsumme_bruttotext‘] = ‚Subtotal (gross)‘;

   $param[‚px_fees_paypaltext‘] = ‚Fees‘;//’Fees‘.$rechnung_land.’wie: ‚.$rechnung_bezahlung .‘:‘.$px_fees_paypal;
   $param[‚px_mwsttext‘] = ‚VAT (19%)‘;
   $param[‚px_gesamtbetragtext‘] = ‚Total (Gross)‘;
   $param[‚px_gesamtbruttotext‘] = ‚Total (Gross)‘;
}

dp_action_set_teilnahmebetrag_exec();

dp_response($response,’nix‘,“px_gesamtbrutto“);

 

Please select listing to show.