nadinagr
Goto Top

Berechnetes Formularfeld in Adobe Acrobat ein- und ausschalten

Hallo Zusammen. Ich habe ein PDF-Formular erstellt, um ausgehend von einem Basispreis einen Nettopreis zu berechnen.
Zuerst werden vom Basispreis mehrere Rabatte abgezogen, um zum Nettopreis zu gelangen. Dabei ist die zweit unterste Position "Skonto". Dabei soll das Skonto automatisch berechnet werden. Dies habe ich auch geschafft. Gibt es aber eine Möglichkeit, das Skonto "auszuschalten" wenn es jemand nicht braucht. Die nachfolgenden Positionen aber wie gewohnt berechnet werden.

Für das Skonto verwende ich aktuell folgenden Code:

function kaufm(x){
var k = Math.round(x*20)/20; return k }

var fBasispreis_1 = this.getField("Basispreis_1");
var fLoserabatt_1 = this.getField("Loserabatt_1");
var fMengenrabatt_1 = this.getField("Mengenrabatt_1");
var fSpezialrabatt_1 = this.getField("Spezialrabatt_1");
var fAktionsrabatt_1 = this.getField("Aktionsrabatt_1");
var fDV_1 = this.getField("DV_1");
var fSkonto_1 = this.getField("Skonto_1");

fSkonto_1.value = kaufm(( fBasispreis_1.value - fLoserabatt_1.value - fMengenrabatt_1.value - fSpezialrabatt_1.value - fAktionsrabatt_1.value - fDV_1.value)*0.02);

Muss ich hier etwas ergänzen, damit das Skonto nur bei Bedarf hinzugezogen wird? Ich hoffe ihr versteht, was ich machen möchte. Ich habe das Formular zum besseren Verständnis als Bild in den Anhang getan.

Vielen Dank für eure Hilfe face-smile
offertenformular

Content-ID: 7966432344

Url: https://administrator.de/contentid/7966432344

Ausgedruckt am: 23.11.2024 um 22:11 Uhr

Cleanairs
Lösung Cleanairs 27.07.2023 um 10:42:14 Uhr
Goto Top
Hi.

Mit einer Variable, die Du auf true oder false setzt z. B.?

var skonto_aktiv = true;

function kaufm(x) {
  if (skonto_aktiv) {
    var k = Math.round(x * 20) / 20;
    return k;
  } else {
    return x;
  }
}

var fBasispreis_1 = this.getField("Basispreis_1");  
var fLoserabatt_1 = this.getField("Loserabatt_1");  
var fMengenrabatt_1 = this.getField("Mengenrabatt_1");  
var fSpezialrabatt_1 = this.getField("Spezialrabatt_1");  
var fAktionsrabatt_1 = this.getField("Aktionsrabatt_1");  
var fDV_1 = this.getField("DV_1");  
var fSkonto_1 = this.getField("Skonto_1");  

fSkonto_1.value = kaufm(
  (fBasispreis_1.value -
    fLoserabatt_1.value -
    fMengenrabatt_1.value -
    fSpezialrabatt_1.value -
    fAktionsrabatt_1.value -
    fDV_1.value) *
    0.02,
);
7907292512
7907292512 27.07.2023 aktualisiert um 10:49:02 Uhr
Goto Top
Musst du doch gar nichts weiter machen, wenn einer kein Skonto nutzt bleibt Skonto bei ja bei 0.00 und unten kannst du weiterhin deine Formel benutzen denn wenn du 0.00 vom Gesamtpreis abziehst macht das ja nix aus face-smile.
Wenn du nur willst das das Feld nicht angezeigt wird wenn es 0 ist dann blende es einfach aus. Die Property heißt dafür display
 fSkonto_1.display = display.hidden;
oder wenn man es nur nicht drucken will, sonst aber angezeigt bleiben soll
 fSkonto_1.display = display.noPrint;
Zum Abfragen von Werten kannst du ja dann if() nutzen
if (fSkonto_1.value == 0) {
   // hier passiert was wenn Wert = 0
}else{
   // und hier wenn nicht
}

Die Referenz ist wie immer dein Freund:
https://opensource.adobe.com/dc-acrobat-sdk-docs/library/jsapiref/JS_API ...


Gruß siddius
NadinaGr
NadinaGr 28.07.2023 um 15:13:07 Uhr
Goto Top
Vielen, vielen Dank für die Hilfe! face-smile