Loading
Education Cloud
Inhoudsopgave
Filters selecteren

          Geen resultaten
          Geen resultaten
          Hier zijn enkele zoektips

          Controleer de spelling van uw trefwoorden.
          Gebruik meer algemene zoektermen.
          Verwijder filters om uw zoekopdracht uit te breiden.

          De Help van Salesforce volledig doorzoeken
          Een kolommodaal configureren in een rastersjabloon voor cadeau-invoer in het onderwijs

          Een kolommodaal configureren in een rastersjabloon voor cadeau-invoer in het onderwijs

          Pas de ervaring van cadeau-invoer aan door interactieve kolommodaliteiten te configureren. U kunt standaardveldsets of aangepaste Lightning webcomponenten (LWC) rechtstreeks inbedden in het raster om complexe donorgegevens vast te leggen zonder de primaire werkstroom te verlaten.

          Vereiste editions

          VEREISTE EDITIONS
          Beschikbaar in: Lightning Experience

          Beschikbaar in: Enterprise, Performance, Unlimited en Developer Editions met Education Cloud.

          Beschikbaar in: Enterprise, Unlimited en Developer Edition met Nonprofit Cloud

          Vereiste gebruikersmachtigingen
          Een hulpvenster Kolom configureren:

          Machtigingenset FundraisingAccess

          OR

          Machtigingenset Volledige toegang voor Education Cloud

          1. Klik in Kolommen weergeven voor de kolom die u wilt configureren op Kolom bewerken.
          2. Klik op Modaal.
          3. Selecteer Lightning webcomponenten als het modale type.
            U kunt een bestaande LWC gebruiken die u hebt gemaakt of geïnstalleerd vanuit een beheerd pakket. U kunt ook de te tonen velden selecteren door de

            $GiftEntryGrid.FieldsModal

            standaard LWC en vervolgens velden toevoegen in de sectie Velden instellen in Modaal.
          4. Selecteer uw Lightning webcomponent als de Lightning webcomponentnaam.
          5. Geef een modaal label op.
          6. Geef een pictogram op om te tonen voor uw hulpvenster. (onze standaardinstelling is: utility:expand_alt).
            Het standaard pictogram is utility:expand_alt, maar u kunt andere kiezen in de SLDS Icon Library.
          7. Voeg optioneel een alternatief label voor het hulpvenster toe.
            Als aan criteria wordt voldaan om het alternatief weer te geven, wordt het weergegeven in plaats van de waarde Modaal label.

          Voorbeeld van de modulaire component Raster voor cadeau-invoer

          Dit voorbeeld van een codesnippet voor Lightning webcomponenten toont een creditcardprocessor en kan worden geconfigureerd als hulpscherm voor het veld Betalingswijze.

          VEREISTE EDITIONS
          Beschikbaar in: Lightning Experience

          Beschikbaar in: Enterprise, Performance, Unlimited en Developer Editions met Education Cloud.

          Beschikbaar in: Enterprise, Unlimited en Developer Edition met Nonprofit Cloud

          giftEntryGridPaymentAuthModal.html

          <template>
              <!--
              Sample Gift Entry Grid Modal Component
              There are no implementation requirements for this component, however the modal portal size is limited.
              -->
              <lightning-card title="Credit Card Authorization">
                  <div class="slds-p-around_medium">
                      <form onsubmit={handleSubmit} class="slds-form">
                          <!-- Row 1: PaymentMethod GiftEntry field -->
                          <lightning-record-edit-form object-api-name="GiftEntry" onsuccess={handleSuccess} class="slds-m-bottom_medium">
                              <div class="slds-grid">
                                  <div class="slds-col slds-size_1-of-1">
                                      <lightning-input-field
                                          field-name="PaymentMethod"
                                          value={paymentMethod}
                                          onchange={handleInputChange}
                                          required
                                      ></lightning-input-field>
                                  </div>
                              </div>
                          </lightning-record-edit-form>
          
                          <!-- Only show credit card fields if needed -->
                          <template if:true={showCreditCardFields}>
                              <!-- Row 2: NameOnCard and CardNumber -->
                              <div class="slds-grid slds-gutters slds-m-bottom_medium">
                                  <div class="slds-col slds-size_1-of-2">
                                      <lightning-input
                                          name="NameOnCard"
                                          label="Name on Card"
                                          value={nameOnCard}
                                          onchange={handleInputChange}
                                          required
                                      ></lightning-input>
                                  </div>
                                  <div class="slds-col slds-size_1-of-2">
                                      <lightning-input
                                          name="CreditCardNumber"
                                          label="Credit Card Number"
                                          value={creditCardNumber}
                                          placeholder="XXXX-XXXX-XXXX-XXXX"
                                          maxlength="19"
                                          inputmode="numeric"
                                          pattern="(?:\d{4}[-\s]?\d{4}[-\s]?\d{4}[-\s]?\d{4}|\d{3}[-\s]?\d{6}[-\s]?\d{5}|\d{16}|\d{15})"
                                          message-when-pattern-mismatch="Enter a valid credit card number."
                                          onchange={handleInputChange}
                                          required
                                      ></lightning-input>
                                  </div>
                              </div>
                              <!-- Row 3: ExpiryMonth, ExpiryYear, CVV -->
                              <div class="slds-grid slds-gutters">
                                  <div class="slds-col slds-size_1-of-3">
                                      <lightning-input
                                          name="ExpiryMonth"
                                          label="Expiration Month"
                                          value={expiryMonth}
                                          onchange={handleInputChange}
                                          inputmode="numeric"
                                          pattern="\d{2}"
                                          required
                                      ></lightning-input>
                                  </div>
                                  <div class="slds-col slds-size_1-of-3">
                                      <lightning-input
                                          name="ExpiryYear"
                                          label="Expiration Year"
                                          value={expiryYear}
                                          onchange={handleInputChange}
                                          inputmode="numeric"
                                          pattern="\d{2}|\d{4}"
                                          required
                                      ></lightning-input>
                                  </div>
                                  <div class="slds-col slds-size_1-of-3">
                                      <lightning-input
                                          name="Cvv"
                                          label="CVV"
                                          value={cvv}
                                          onchange={handleInputChange}
                                          inputmode="numeric"
                                          pattern="\d{3,4}"
                                          required
                                      ></lightning-input>
                                  </div>
                              </div>
                          </template>
                      </form>
                  </div>
                  <template if:true={showCreditCardFields}>
                      <div class="slds-grid slds-grid_align-end slds-m-top_medium">
                          <lightning-button
                              variant="brand"
                              label="Charge Card"
                              onclick={handleChargeCardClick}
                              class="slds-m-right_none"
                              disabled={isChargeCardDisabled}
                          ></lightning-button>
                      </div>
                  </template>
              </lightning-card>
          </template>
          

          giftEntryGridPaymentAuthModal.js

          import { LightningElement, api, track } from 'lwc';
          
          const CONSTANTS = {
              CREDIT_CARD: 'Credit Card',
              ACH: 'ACH'
          }
          
          /**
           * Sample Gift Entry Grid Modal Component
           */
          export default class giftEntryGridPaymentAuthModal extends LightningElement {
              /**
               * Required input property.
               * Not generally used within a custom component
               */
              @api
              set modalFields(value) {
                  this._modalFields = value || [];
                  this.initializeFields();
              }
              get modalFields() {
                  return this._modalFields;
              }
          
              /**
               * Required input property.
               * Contains all the data for the row.
               */
              @api
              set rowData(value) {
                  this._rowData = value || {};
                  this.initializeFields();
              }
              get rowData() {
                  return this._rowData;
              }
          
          
              // ------------------------------------------------------------
              // Required Exposed API Functions for GiftEntryGrid
              // ------------------------------------------------------------
          
              /**
               * Validates the component fields.
               * @returns {Object} An object with properties for isValid (boolean) and an invalidFields collection with errors
               * - isValid: true if the component fields are valid, false otherwise.
               * - invalidFields: A Set of field names and errors to render
               */
              @api
              validate() {
                  let isValid = true;
                  let invalidFields = new Set();
                  if (!this.paymentMethod) {
                      isValid = false;
                      invalidFields.add('PaymentMethod');
                  }
                  if (this.showCreditCardFields) {
                      if (!this.chargeCardClicked) {
                          isValid = false;
                          invalidFields.add('ChargeCard');
                      }
                      if (!this.creditCardNumber || !this.validateCreditCardNumber()) {
                          isValid = false;
                          invalidFields.add('CreditCardNumber is invalid');
                      }
                      if (!this.nameOnCard) {
                          isValid = false;
                          invalidFields.add('NameOnCard is missing');
                      }
                      if (!this.expiryMonth || !this.validateExpiryMonth()) {
                          isValid = false;
                          invalidFields.add('ExpiryMonth is not valid');
                      }
                      if (!this.expiryYear || !this.validateExpiryYear()) {
                          isValid = false;
                          invalidFields.add('ExpiryYear is not valid');
                      }
                      if (!this.cvv || !this.validateCVV()) {
                          isValid = false;
                          invalidFields.add('CVV is not valid');
                      }
                  }
                  return { isValid, invalidFields };
              }
          
              /**
               * Returns values to be saved to the row. These are directly applied to the rowData object within the Grid
               * Properties in this object do not need to be actual GiftEntry fields. Dummy properties are allowed, but 
               * they will not persist to the GiftEntry row when the record is saved.
               * @returns {Object} An object with the values that represent GiftEntry fields.
               */
              @api
              getComponentValues() {
                  let result = {}
                  result['PaymentMethod'] = this.paymentMethod;
                  if (this.showCreditCardFields) {
                      result['Last4'] = this.creditCardNumber ? this.creditCardNumber.slice(-4) : null;
                      result['ExpiryMonth'] = this.expiryMonth;
                      result['ExpiryYear'] = this.expiryYear;
                      result['CCAuthCode__c'] = this.generateRandomString(16);
                      result['NameOnCard__c'] = this.nameOnCard;
                      result['Card_CVV__c'] = this.cvv;
                      result['GatewayTransactionFee__c'] = 0.12345;
                      result['GatewayReference__c'] = this.creditCardNumber;
                  } else {
                      result['Last4'] = null;
                      result['ExpiryMonth'] = null;
                      result['ExpiryYear'] = null;
                      result['CCAuthCode__c'] = null;
                      result['NameOnCard__c'] = null;
                      result['Card_CVV__c'] = null;
                      result['GatewayTransactionFee__c'] = null;
                      result['GatewayReference__c'] = null;
                  }
                  return result;
              }
          
              // ------------------------------------------------------------
              // Everything below this is generic custom code to illustrate the component behavior
              // ------------------------------------------------------------
              _modalFields = [];
              _rowData = {};
          
              @track paymentMethod = CONSTANTS.CREDIT_CARD;
              @track creditCardNumber = '';
              @track nameOnCard = '';
              @track expiryMonth = '';
              @track expiryYear = '';
              @track cvv = '';
              @track gatewaytransactionfee = null;
              @track gatewayreference = null;
              @track chargeCardClicked = false;
          
              connectedCallback() {
                  this.initializeFields();
              }
          
              initializeFields() {
                  this.paymentMethod = this._rowData['PaymentMethod'] || '';
                  this.creditCardNumber = (this._rowData['Last4'] ? "****-****-****-" + this._rowData['Last4'] : '');
                  if (this._rowData['NameOnCard__c']) {
                      this.nameOnCard = this._rowData['NameOnCard__c'];
                  } else if (this._rowData['FirstName'] && this._rowData['LastName']) {
                      this.nameOnCard = this._rowData['FirstName'] + ' ' + this._rowData['LastName'];
                  } else {
                      this.nameOnCard = '';
                  }
                  this.expiryMonth = this._rowData['ExpiryMonth'] || '';
                  this.expiryYear = this._rowData['ExpiryYear'] || '';
                  this.cvv = this._rowData['Card_CVV__c'] || '';
                  this.gatewayTransactionFee = this._rowData['GatewayTransactionFee__c'] || null;
                  this.gatewayReference = this._rowData['GatewayReference__c'] || null;
              }
          
              handleInputChange(event) {
                  let fieldName = event?.target?.fieldName || event?.target?.name;
                  if (fieldName) {
                      fieldName = fieldName.charAt(0).toLowerCase() + fieldName.slice(1);
                  }
          
                  const fieldValue = event?.target?.value;
                  this[fieldName] = fieldValue;
                  if (fieldName === 'paymentMethod') {
                      if (!this.showCreditCardFields) {
                          this.creditCardNumber = '';
                          this.nameOnCard = '';
                          this.expiryMonth = '';
                          this.expiryYear = '';
                          this.cvv = '';
                      }
                  }
                  if (fieldName === 'creditCardNumber') {
                      this.validateCreditCardNumber();
                  }
                  if (fieldName === 'expiryMonth') {
                      this.validateExpiryMonth();
                  }
                  if (fieldName === 'expiryYear') {
                      this.validateExpiryYear();
                  }
              }
          
              handleChargeCardClick() {
                  this.chargeCardClicked = true;
              }
          
              canChargeCard() {
                  if (this.chargeCardClicked) return false;
                  if (!this.showCreditCardFields) return false;
                  return (
                      !!this.creditCardNumber && this.validateCreditCardNumber() &&
                      !!this.nameOnCard &&
                      !!this.expiryMonth && this.validateExpiryMonth() &&
                      !!this.expiryYear && this.validateExpiryYear() &&
                      !!this.cvv && this.validateCVV()
                  );
              }
          
              validateCreditCardNumber() {
                  const regex = /^(?:\d{4}[-\s]?\d{4}[-\s]?\d{4}[-\s]?\d{4}|\d{3}[-\s]?\d{6}[-\s]?\d{5}|\d{16}|\d{15})$/;
                  return this.creditCardNumber === '' || regex.test(this.creditCardNumber);
              }
          
              validateExpiryMonth() {
                  const month = parseInt(this.expiryMonth, 10);
                  return this.expiryMonth === '' || (month >= 1 && month <= 12);
              }
          
              validateExpiryYear() {
                  let year = parseInt(this.expiryYear, 10);
                  year = year < 99 ? 2000 + year : year;
                  const currentYear = new Date().getFullYear();
                  return this.expiryYear === '' || (year >= currentYear && year <= currentYear + 10);
              }
          
              validateCVV() {
                  return this.cvv === '' || /^\d{2}|\d{4}/.test(this.cvv);
              }
          
              generateRandomString(length) {
                  const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
                  let result = '';
                  for (let i = 0; i < length; i++) {
                      result += chars.charAt(Math.floor(Math.random() * chars.length));
                  }
                  return result;
              }
          
              get showCreditCardFields() {
                  return this.paymentMethod === CONSTANTS.CREDIT_CARD || this.paymentMethod === CONSTANTS.ACH;
              }
          
              get minExpiryYear() {
                  return new Date().getFullYear();
              }
          
              get maxExpiryYear() {
                  return new Date().getFullYear() + 10;
              }
          
              get isChargeCardDisabled() {
                  return !this.canChargeCard();
              }
          }
          
           
          Wordt geladen
          Salesforce Help | Article