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-Key: 7966432344

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

Printed on: May 2, 2024 at 17:05 o'clock

Member: Cleanairs
Solution Cleanairs Jul 27, 2023 at 08:42:14 (UTC)
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,
);
Mitglied: 7907292512
7907292512 Jul 27, 2023 updated at 08:49:02 (UTC)
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
Member: NadinaGr
NadinaGr Jul 28, 2023 at 13:13:07 (UTC)
Goto Top
Vielen, vielen Dank für die Hilfe! face-smile